diff --git a/.gitignore b/.gitignore old mode 100755 new mode 100644 index 91b5a6dd7d4dd99ebdd72728950898bb525dc6ff..3d67daa87c73894a4a9c1dcfbc61aea0b3f6dff8 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,54 @@ -# Sensitive - don't commit -.env -.env.local -*.secret -__pycache__/ -*.pyc -.git/ -supabase/.temp/ -supabase/supabase/ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +node_modules +/.pnp +.pnp.* +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/versions + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# env files (can opt-in for committing if needed) +.env* + +# vercel +.vercel + + +# typescript +*.tsbuildinfo +next-env.d.ts +local-* +.claude +.z-ai-config +*.log +dev.log +dev.out.log +test +prompt + +server.log +# Skills directory +/skills/ \ No newline at end of file diff --git a/.hfignore b/.hfignore new file mode 100644 index 0000000000000000000000000000000000000000..25c36164f4f87e2fb13471360af966e75ee9cf16 --- /dev/null +++ b/.hfignore @@ -0,0 +1,49 @@ +# Hugging Face Spaces deployment ignore file +# Keep the Docker image build lean + +# Dependencies (rebuilt in Docker) +node_modules +.pnp +.pnp.* +.yarn/* + +# Build artifacts (rebuilt in Docker) +.next +out +dist +build + +# Python (this is a Node-only deployment) +scripts +skills +examples +mini-services + +# Prisma local DB +db +prisma + +# Logs & dev artifacts +*.log +dev.log +server.log +worklog.md +agents.md + +# Caddy / reverse proxy (not needed inside HF Space) +Caddyfile + +# Original upload / download folders (not part of web app) +upload +download +tool-results + +# Git +.git +.gitignore +.github + +# Local env files (HF Spaces has its own secrets UI) +.env +.env.local +.env.*.local diff --git a/Dockerfile b/Dockerfile old mode 100755 new mode 100644 index 0ed1b8d2d8c78587ec8e33f4f24a49053de39581..02f5f04ad8df2839f82eba4e6676b48b3613d40c --- a/Dockerfile +++ b/Dockerfile @@ -1,27 +1,38 @@ -FROM python:3.10-slim +# Cellex — Hugging Face Space Deployment +# Docker space that builds the Next.js standalone output and serves it on port 7860 -# Install system dependencies -RUN apt-get update && apt-get install -y \ - build-essential \ - curl \ - && rm -rf /var/lib/apt/lists/* +# ---- Stage 1: Build ---- +FROM node:20-alpine AS builder WORKDIR /app -# Copy requirements first for caching -COPY web-server/requirements.txt . -RUN pip install --no-cache-dir -r requirements.txt +# Install dependencies (use npm ci for reproducible builds) +COPY package*.json ./ +RUN npm ci --no-audit --no-fund -# Copy everything else (frontend files + web-server) +# Copy source COPY . . -# HF Spaces expects port 7860 +# Build the Next.js standalone output +RUN npm run build + +# ---- Stage 2: Run ---- +FROM node:20-alpine AS runner + +WORKDIR /app + +# Set production env +ENV NODE_ENV=production ENV PORT=7860 -EXPOSE 7860 +ENV HOSTNAME=0.0.0.0 + +# Copy standalone build + public assets + static +COPY --from=builder /app/.next/standalone ./ +COPY --from=builder /app/.next/static ./.next/static +COPY --from=builder /app/public ./public -# Health check -HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \ - CMD curl -f http://localhost:7860/api/health || exit 1 +# HF Spaces runs on port 7860 by default +EXPOSE 7860 -# Run the web server -CMD ["python", "web-server/server.py"] +# Run the standalone Next.js server +CMD ["node", "server.js"] diff --git a/Eesha buying folder/auth.html b/Eesha buying folder/auth.html deleted file mode 100755 index 4add41d3670d623d302472fcc9f0d13388b98b9c..0000000000000000000000000000000000000000 --- a/Eesha buying folder/auth.html +++ /dev/null @@ -1,246 +0,0 @@ - - - - - - Login / Signup - Eesha - - - - - -
-
-

Login to Eesha

-
- - - -
-

Don't have an account? Sign up

-
- - - Am a Seller -
- - - \ No newline at end of file diff --git a/Eesha buying folder/cart.html b/Eesha buying folder/cart.html deleted file mode 100755 index 0af60152d9cb548f5da564178005e9ac01ee4d80..0000000000000000000000000000000000000000 --- a/Eesha buying folder/cart.html +++ /dev/null @@ -1,651 +0,0 @@ - - - - - - Shopping Cart - Cellex | Nigeria's #1 Marketplace - - - - - - - - - - - - -
- -
- - -
-
- -
-
- - -
- -
-
-

Shopping Cart

-

Loading your cart...

-
- -
- - -
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - - - - - diff --git a/Eesha buying folder/categories.html b/Eesha buying folder/categories.html deleted file mode 100755 index 3a4fad4f25bc91d366c0a40802230e0b79a1126c..0000000000000000000000000000000000000000 --- a/Eesha buying folder/categories.html +++ /dev/null @@ -1,689 +0,0 @@ - - - - - - Categories — Cellex - - - - - - - - - - - - - - - - - - - -
-
- -
-
- - -
- -
-

All Categories

-

Browse products by category

-
- - -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
-
- - -
-
- -
- Sort: - -
- -
- Price: - -
- -
- Seller: - -
- -
- 0 products found -
-
-
- - -
-
- -
- - - - - - - - - -
-
- - - - - - - - - - - diff --git a/Eesha buying folder/checkout.html b/Eesha buying folder/checkout.html deleted file mode 100755 index bfbd5b45bb63c86e1f5da7ecb1d0eeabda2cee0f..0000000000000000000000000000000000000000 --- a/Eesha buying folder/checkout.html +++ /dev/null @@ -1,858 +0,0 @@ - - - - - - Checkout - Cellex | Nigeria's #1 Marketplace - - - - - - - - - - - - - - - - - - - - - -
- -
- - -
-
- -
-
- - -
-
-
-
-
- 1 - Shipping -
- -
- 2 - Payment -
- -
- 3 - Review -
- - - Back to Cart - -
-
-
- - -
-
- -
- -
-
-
- -
-

Shipping Information

-
- -
-
-
- - -
-
- - -
-
-
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
-
-
-
- - -
-
-
- -
-

Payment Method

-
- - -
- -
- - -
- -
- - -
- -
- - - -
- - -
-
-
- -
-

Review & Place Order

-
- - -
-
-

Shipping Address

-

-
-
-

Payment Method

-

-
-
-

Order Items

-
-
-
- - - - -

- - Secure checkout with SSL encryption -

-
-
- - -
-
-

Order Summary

-
- -
- -
-
- Subtotal - $0.00 -
-
- Shipping - $0.00 -
-
- Tax (10%) - $0.00 -
-
- COD Fee - $0.00 -
-
- Total - $0.00 -
-
-
-
-
- - -
- -
- Step 1 of 3 -
- -
-
- - - - diff --git a/Eesha buying folder/css/index.css b/Eesha buying folder/css/index.css deleted file mode 100755 index 62a81d1904febd9ba7565f5cf46b36be6ad9b8bc..0000000000000000000000000000000000000000 --- a/Eesha buying folder/css/index.css +++ /dev/null @@ -1,72 +0,0 @@ -/* latin-ext */ -@font-face { - font-family: 'Caladea'; - font-style: italic; - font-weight: 400; - font-display: swap; - src: url(https://fonts.gstatic.com/s/caladea/v8/kJExBugZ7AAjhybUvR1N9vo3huR_DaS8.woff2) format('woff2'); - unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; -} -/* latin */ -@font-face { - font-family: 'Caladea'; - font-style: italic; - font-weight: 400; - font-display: swap; - src: url(https://fonts.gstatic.com/s/caladea/v8/kJExBugZ7AAjhybUvR1N-Po3huR_DQ.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} -/* latin-ext */ -@font-face { - font-family: 'Caladea'; - font-style: italic; - font-weight: 700; - font-display: swap; - src: url(https://fonts.gstatic.com/s/caladea/v8/kJE0BugZ7AAjhybUvR1FQ98ipcZyJ561DbZg.woff2) format('woff2'); - unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; -} -/* latin */ -@font-face { - font-family: 'Caladea'; - font-style: italic; - font-weight: 700; - font-display: swap; - src: url(https://fonts.gstatic.com/s/caladea/v8/kJE0BugZ7AAjhybUvR1FQ98iq8ZyJ561DQ.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} -/* latin-ext */ -@font-face { - font-family: 'Caladea'; - font-style: normal; - font-weight: 400; - font-display: swap; - src: url(https://fonts.gstatic.com/s/caladea/v8/kJEzBugZ7AAjhybUvRZ9-vAwpOZPDA.woff2) format('woff2'); - unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; -} -/* latin */ -@font-face { - font-family: 'Caladea'; - font-style: normal; - font-weight: 400; - font-display: swap; - src: url(https://fonts.gstatic.com/s/caladea/v8/kJEzBugZ7AAjhybUvRh9-vAwpOY.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} -/* latin-ext */ -@font-face { - font-family: 'Caladea'; - font-style: normal; - font-weight: 700; - font-display: swap; - src: url(https://fonts.gstatic.com/s/caladea/v8/kJE2BugZ7AAjhybUtaNY79MSqcx1BZyFDA.woff2) format('woff2'); - unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; -} -/* latin */ -@font-face { - font-family: 'Caladea'; - font-style: normal; - font-weight: 700; - font-display: swap; - src: url(https://fonts.gstatic.com/s/caladea/v8/kJE2BugZ7AAjhybUtaNY790Sqcx1BZw.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} \ No newline at end of file diff --git a/Eesha buying folder/css/loader.css b/Eesha buying folder/css/loader.css deleted file mode 100755 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/Eesha buying folder/css/product.css b/Eesha buying folder/css/product.css deleted file mode 100755 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/Eesha buying folder/css/style.css b/Eesha buying folder/css/style.css deleted file mode 100755 index 27a17530df1f0dd5093579af35194254ad0a892c..0000000000000000000000000000000000000000 --- a/Eesha buying folder/css/style.css +++ /dev/null @@ -1,203 +0,0 @@ -/* General Body & Layout */ -body { - font-family: Arial, sans-serif; - margin: 0; - background-color: #f4f4f4; - color: #333; -} - -.container { - width: 90%; - margin: 0 auto; - max-width: 1200px; -} - -/* Header */ -header { - background-color: #2c3e50; - color: white; - padding: 1rem 0; - display: flex; - justify-content: space-between; - align-items: center; -} - -header h1 { - margin: 0; - font-size: 1.8rem; -} - -header nav a, header nav button { - color: rgb(64, 80, 104); - text-decoration: none; - background: #3498db; - padding: 0.5rem 1rem; - border-radius: 5px; - border: none; - cursor: pointer; -} -header nav span { - margin-right: 15px; -} - -/* Product Grid */ -.product-grid { - display: grid; - grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); - gap: 1.5rem; - margin-top: 2rem; -} - -.product-card { - background-color: white; - border: 1px solid #ddd; - border-radius: 8px; - overflow: hidden; - text-align: center; - box-shadow: 0 2px 5px rgba(0,0,0,0.1); - cursor: pointer; - transition: transform 0.2s, box-shadow 0.2s; -} - -.product-card:hover { - transform: translateY(-5px); - box-shadow: 0 4px 10px rgba(0,0,0,0.15); -} - -.product-card img { - width: 100%; - height: 180px; - object-fit: cover; -} - -.product-card h3 { - margin: 0.5rem 0; - font-size: 1.1rem; - padding: 0 10px; -} - -.product-card .price { - color: #e74c3c; - font-weight: bold; - font-size: 1.2rem; - margin-bottom: 1rem; -} - -/* Auth Page */ -.auth-body { - display: flex; - justify-content: center; - align-items: center; - height: 100vh; - background: linear-gradient(135deg, #3498db, #2c3e50); -} - -.auth-container { - background-color: white; - padding: 2rem; - border-radius: 10px; - box-shadow: 0 5px 15px rgba(0,0,0,0.2); - width: 100%; - max-width: 400px; - text-align: center; -} - -.auth-container h2 { - margin-bottom: 1.5rem; -} - -.auth-container input[type="text"], -.auth-container input[type="email"], -.auth-container input[type="password"] { - width: calc(100% - 20px); - padding: 10px; - margin-bottom: 1rem; - border: 1px solid #ccc; - border-radius: 5px; -} - -.auth-container button { - width: 100%; - padding: 12px; - background-color: #2ecc71; - color: white; - border: none; - border-radius: 5px; - cursor: pointer; - font-size: 1rem; -} - -.auth-container p { - margin-top: 1rem; -} -.auth-container a { - color: #3498db; - text-decoration: none; - font-weight: bold; -} -.user-type { - margin-bottom: 1rem; - text-align: left; -} - -/* Dashboard */ -.dashboard-form { - background: white; - padding: 1.5rem; - border-radius: 8px; - margin-bottom: 2rem; - box-shadow: 0 2px 5px rgba(0,0,0,0.1); -} -.dashboard-form input, .dashboard-form textarea { - width: calc(100% - 22px); - padding: 10px; - margin-bottom: 10px; - border: 1px solid #ccc; - border-radius: 4px; -} -.dashboard-form button { - background-color: #2c3e50; - color: white; - padding: 10px 20px; - border: none; - border-radius: 4px; - cursor: pointer; -} - -/* AI Assistant */ -.ai-assistant { - background-color: #eaf5ff; - border: 1px solid #bde0ff; - border-radius: 8px; - padding: 1.5rem; - margin-bottom: 2rem; -} - -.ai-assistant h3 { - margin-top: 0; -} - -.ai-chat-box { - display: flex; - gap: 10px; -} - -.ai-chat-box input { - flex-grow: 1; - padding: 10px; - border: 1px solid #ccc; - border-radius: 4px; -} - -.ai-chat-box button { - padding: 10px 20px; - background-color: #3498db; - color: white; - border: none; - border-radius: 4px; - cursor: pointer; -} - -#ai-results { - margin-top: 1rem; -} \ No newline at end of file diff --git a/Eesha buying folder/js/cart.js b/Eesha buying folder/js/cart.js deleted file mode 100755 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/Eesha buying folder/js/loader.js b/Eesha buying folder/js/loader.js deleted file mode 100755 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/Eesha buying folder/js/product.js b/Eesha buying folder/js/product.js deleted file mode 100755 index c7e0207ed62a6b48ac7844d54aff69e1ce8485cc..0000000000000000000000000000000000000000 --- a/Eesha buying folder/js/product.js +++ /dev/null @@ -1,536 +0,0 @@ -// Product detail page logic — uses EdgeFunctions (cookie-based auth, no Supabase SDK). -// Requires: ../js/config/edge-functions.js and ../js/cart.js loaded before this file. - -// Get product ID from URL -function getProductIdFromUrl() { - const urlParams = new URLSearchParams(window.location.search); - return urlParams.get('id'); -} - -// Load product details via edge function -async function loadProductDetails() { - const productId = getProductIdFromUrl(); - if (!productId) { - window.location.href = '/index.html'; - return; - } - - try { - // Show loading states - document.getElementById('loadingSkeleton').classList.remove('hidden'); - document.getElementById('loadingText').classList.remove('hidden'); - document.getElementById('productImagesContainer').classList.add('hidden'); - document.getElementById('productInfo').classList.add('hidden'); - document.getElementById('priceSection').classList.add('hidden'); - document.getElementById('descriptionSection').classList.add('hidden'); - - // Fetch product via edge function - const result = await window.EdgeFunctions.products.byId(productId); - - if (!result.success || !result.product) { - console.error('Error loading product:', result.error); - window.location.href = '/index.html'; - return; - } - - const product = result.product; - window._currentProduct = product; // cache for share functions - - // Hide loading states - document.getElementById('loadingSkeleton').classList.add('hidden'); - document.getElementById('loadingText').classList.add('hidden'); - document.getElementById('productImagesContainer').classList.remove('hidden'); - document.getElementById('productInfo').classList.remove('hidden'); - document.getElementById('priceSection').classList.remove('hidden'); - document.getElementById('descriptionSection').classList.remove('hidden'); - - // Update the UI with product details - document.getElementById('mainImage').src = product.image_url; - document.getElementById('productName').textContent = product.name; - document.getElementById('productCategory').textContent = product.category || 'General'; - document.getElementById('productPrice').textContent = `₦${product.price.toFixed(2)}`; - document.getElementById('productDescription').textContent = product.description; - - // Handle optional fields - if (product.original_price) { - document.getElementById('originalPrice').textContent = `₦${product.original_price.toFixed(2)}`; - const discount = Math.round(((product.original_price - product.price) / product.original_price) * 100); - document.getElementById('discountBadge').textContent = `-${discount}%`; - } else { - document.getElementById('originalPrice').classList.add('hidden'); - document.getElementById('discountBadge').classList.add('hidden'); - } - - // Update page title - document.title = `${product.name} - Eesha`; - - // Handle product images - const thumbnailContainer = document.getElementById('thumbnailContainer'); - thumbnailContainer.innerHTML = ''; // Clear existing thumbnails - - // Add main image to thumbnails - const mainThumbnail = createThumbnail(product.image_url, product.name, true); - thumbnailContainer.appendChild(mainThumbnail); - - // Add additional images if available - if (product.additional_images && Array.isArray(product.additional_images)) { - product.additional_images.forEach(imgUrl => { - const thumbnail = createThumbnail(imgUrl, product.name); - thumbnailContainer.appendChild(thumbnail); - }); - } - - // Handle rating if available - if (product.rating) { - const ratingDiv = document.getElementById('productRating'); - const stars = '★'.repeat(Math.floor(product.rating)) + '☆'.repeat(5 - Math.floor(product.rating)); - ratingDiv.innerHTML = ` -
${stars}
- (${product.rating_count || 0} reviews) - `; - } - - } catch (error) { - console.error('Error loading product:', error); - alert('Error loading product details. Please try again.'); - } -} - -// Quantity management -let quantity = 1; - -function increaseQty() { - quantity++; - updateQuantityDisplay(); -} - -function decreaseQty() { - if (quantity > 1) { - quantity--; - updateQuantityDisplay(); - } -} - -function updateQuantityDisplay() { - document.getElementById('quantity').textContent = quantity; -} - -// Add to cart functionality — uses Cart module (requires login, cookie-based) -async function addToCart() { - const productId = getProductIdFromUrl(); - if (!productId) return; - - try { - // Cart module handles auth check + cart upsert internally - const result = await window.Cart.addToCart(productId, quantity); - - if (!result.success) { - if (result.requiresAuth) { - // Redirect to login - if (confirm('Please login to add items to your cart. Go to login page?')) { - window.location.href = `login.html?redirect=product&id=${productId}`; - } - return; - } - alert(result.message || 'Failed to add to cart. Please try again.'); - return; - } - - // Visual feedback - const addBtn = document.querySelector('button[onclick="addToCart()"]'); - if (addBtn) { - const orig = addBtn.innerHTML; - addBtn.innerHTML = ' Added!'; - addBtn.classList.add('bg-green-500'); - setTimeout(() => { - addBtn.innerHTML = orig; - addBtn.classList.remove('bg-green-500'); - }, 1500); - } - - } catch (error) { - console.error('Add to cart failed:', error); - alert('Failed to add to cart. Please try again.'); - } -} - -// Update cart count in header — delegates to shared Cart module -async function updateCartCount() { - try { - if (window.Cart && window.Cart.updateCartCountUI) { - await window.Cart.updateCartCountUI(); - } - } catch (err) { - console.error('Error updating cart count:', err); - } -} - -// Image gallery functionality -function createThumbnail(imageUrl, altText, isActive = false) { - const div = document.createElement('div'); - div.className = `cursor-pointer rounded-lg overflow-hidden border-2 ${isActive ? 'border-brand-500' : 'border-transparent'}`; - - const img = document.createElement('img'); - img.src = imageUrl; - img.alt = altText; - img.className = 'w-full h-full object-cover aspect-square'; - - div.appendChild(img); - - div.addEventListener('click', () => { - // Update main image - updateMainImage(imageUrl); - - // Update active state of thumbnails - document.querySelectorAll('#thumbnailContainer > div').forEach(thumb => { - thumb.classList.remove('border-brand-500'); - thumb.classList.add('border-transparent'); - }); - div.classList.remove('border-transparent'); - div.classList.add('border-brand-500'); - }); - - return div; -} - -function updateMainImage(imageUrl) { - const mainImage = document.getElementById('mainImage'); - mainImage.src = imageUrl; -} - -// Global user state (kept in memory only — no localStorage) -let currentUser = null; - -// With cookie-based auth there is no guest cart in localStorage to merge. -// This function is retained as a no-op for backwards compatibility with the -// existing init flow. -async function mergeGuestCartAfterSignIn() { - return; -} - -function updateUIforAuthState(user) { - const loginLink = document.getElementById('login-link'); - const signupLink = document.getElementById('signup-link'); - const userMenu = document.getElementById('user-menu'); - const userEmail = document.getElementById('user-email'); - const mobileLogin = document.querySelector('#mobile-auth-links a[href="login.html"]') || document.querySelector('#mobile-auth-links a[href="Eesha buying folder/login.html"]'); - const mobileSignup = document.querySelector('#mobile-auth-links a[href="signup.html"]') || document.querySelector('#mobile-auth-links a[href="Eesha buying folder/signup.html"]'); - const mobileLogout = document.getElementById('mobile-logout-button'); - - if (user) { - if (loginLink) loginLink.style.display = 'none'; - if (signupLink) signupLink.style.display = 'none'; - if (userMenu) userMenu.style.display = 'block'; - if (userEmail) userEmail.textContent = user.email || ''; - if (mobileLogin) mobileLogin.style.display = 'none'; - if (mobileSignup) mobileSignup.style.display = 'none'; - if (mobileLogout) mobileLogout.style.display = 'block'; - } else { - if (loginLink) loginLink.style.display = 'block'; - if (signupLink) signupLink.style.display = 'block'; - if (userMenu) userMenu.style.display = 'none'; - if (mobileLogin) mobileLogin.style.display = 'block'; - if (mobileSignup) mobileSignup.style.display = 'block'; - if (mobileLogout) mobileLogout.style.display = 'none'; - } -} - -// Initialize page and auth handling -document.addEventListener('DOMContentLoaded', async () => { - // Restore session via cookie-based auth (no onAuthStateChange available) - try { - const { user } = await window.EdgeFunctions.auth.checkSession(); - currentUser = user || null; - updateUIforAuthState(currentUser); - await updateCartCount(); - } catch (err) { - console.error('Error checking initial session:', err); - } - - // Wire up logout buttons if present (cookie-based logout clears server cookie) - const logoutButton = document.getElementById('logout-button'); - const mobileLogoutButton = document.getElementById('mobile-logout-button'); - if (logoutButton) logoutButton.addEventListener('click', async (e) => { - e.preventDefault(); - await window.EdgeFunctions.auth.logout(); - currentUser = null; - updateUIforAuthState(null); - await updateCartCount(); - window.location.reload(); - }); - if (mobileLogoutButton) mobileLogoutButton.addEventListener('click', async (e) => { - e.preventDefault(); - await window.EdgeFunctions.auth.logout(); - currentUser = null; - updateUIforAuthState(null); - await updateCartCount(); - window.location.reload(); - }); - - // User menu toggle - const userMenuButton = document.getElementById('user-menu-button'); - const userMenuDropdown = document.getElementById('user-menu-dropdown'); - if (userMenuButton && userMenuDropdown) { - userMenuButton.addEventListener('click', () => userMenuDropdown.classList.toggle('hidden')); - document.addEventListener('click', (e) => { - if (!document.getElementById('user-menu').contains(e.target)) { - userMenuDropdown.classList.add('hidden'); - } - }); - } - - // Mobile menu - const mobileMenuBtn = document.getElementById('mobileMenuBtn'); - const mobileMenu = document.getElementById('mobileMenu'); - if (mobileMenuBtn && mobileMenu) mobileMenuBtn.addEventListener('click', () => mobileMenu.classList.toggle('hidden')); - - // Finally load product details and update cart count - await loadProductDetails(); - await updateCartCount(); - - // Phase 2: load reviews + active group buys for this product - loadProductReviews(); - loadActiveGroupBuys(); -}); - -// Search bar behavior (navigate to search-result.html with query) -(function setupSearch() { - try { - const searchInput = document.getElementById('searchInput'); - if (!searchInput) return; - - const goToSearch = () => { - const q = (searchInput.value || '').trim(); - if (!q) return; - // keep relative path consistent with index/product location - window.location.href = `../search-result.html?q=${encodeURIComponent(q)}`; - }; - - // Enter key - searchInput.addEventListener('keypress', (e) => { - if (e.key === 'Enter') goToSearch(); - }); - - // If there's an adjacent button (search icon) try to attach click - const btn = searchInput.parentElement?.querySelector('button'); - if (btn) btn.addEventListener('click', goToSearch); - } catch (err) { - console.error('Search setup failed:', err); - } -})(); - -// ==================================================================== -// Phase 2: Product sharing, group buy, reviews -// ==================================================================== -function getCurrentProductId() { - return getProductIdFromUrl(); -} - -function getCurrentProduct() { - // Stored when loadProductDetails runs - return window._currentProduct || null; -} - -// ---- Sharing ---- -function shareProduct(platform) { - const id = getCurrentProductId(); - if (!id) return; - const url = `${window.location.origin}/Eesha%20buying%20folder/product.html?id=${id}`; - const product = getCurrentProduct(); - const text = product - ? `Check out "${product.name}" on Cellex — $${Number(product.price).toFixed(2)}` - : 'Check out this product on Cellex'; - - if (platform === 'whatsapp') { - window.open(`https://wa.me/?text=${encodeURIComponent(text + ' ' + url)}`, '_blank'); - } else if (platform === 'telegram') { - window.open(`https://t.me/share/url?url=${encodeURIComponent(url)}&text=${encodeURIComponent(text)}`, '_blank'); - } -} - -async function copyShareLink() { - const id = getCurrentProductId(); - if (!id) return; - const url = `${window.location.origin}/Eesha%20buying%20folder/product.html?id=${id}`; - try { - await navigator.clipboard.writeText(url); - const btn = event?.target?.closest('button'); - if (btn) { - const orig = btn.innerHTML; - btn.innerHTML = ' Copied!'; - setTimeout(() => btn.innerHTML = orig, 1500); - } - } catch (e) { - window.prompt('Copy this link:', url); - } -} - -// ---- Group buy ---- -async function startGroupBuy() { - const productId = getCurrentProductId(); - if (!productId) return; - if (!currentUser) { - if (confirm('Please login to start a group buy. Go to login page?')) { - window.location.href = `login.html?next=${encodeURIComponent('/Eesha buying folder/product.html?id=' + productId)}`; - } - return; - } - if (!confirm('Start a group buy?\n\nGet 3 friends to join and everyone gets 20% off.\n\nWe will generate a share link for you.')) return; - const r = await window.EdgeFunctions.groupBuy.create(Number(productId), 3, 20); - if (r.success) { - const url = `${window.location.origin}/group-buy.html?id=${r.groupBuy.id}`; - const shareText = `🛍️ Join my group buy on Cellex! Get 20% off when 3 of us join. ${url}`; - window.open(`https://wa.me/?text=${encodeURIComponent(shareText)}`, '_blank'); - // Also navigate to the group buy page - window.location.href = `/group-buy.html?id=${r.groupBuy.id}`; - } else { - alert('Failed to start group buy: ' + (r.error || 'Unknown error')); - } -} - -async function loadActiveGroupBuys() { - const productId = getCurrentProductId(); - if (!productId) return; - const container = document.getElementById('activeGroupBuys'); - if (!container) return; - try { - const r = await window.EdgeFunctions.groupBuy.active(Number(productId)); - if (!r.success || !r.groupBuys || r.groupBuys.length === 0) return; - container.classList.remove('hidden'); - container.innerHTML = ` -
-
- ${r.groupBuys.length} active group buy${r.groupBuys.length > 1 ? 's' : ''} — join & get 20% off! -
- ${r.groupBuys.map(gb => ` - - 👥 ${gb.current_count}/${gb.target_count} joined · expires ${new Date(gb.expires_at).toLocaleString()} - - `).join('')} -
`; - } catch (e) { /* silent fail */ } -} - -// ---- Reviews ---- -async function loadProductReviews() { - const productId = getCurrentProductId(); - if (!productId) return; - try { - const r = await window.EdgeFunctions.reviews.byProduct(Number(productId)); - if (!r.success) return; - - // Summary - const summary = document.getElementById('reviewsSummary'); - if (r.summary.count > 0) { - summary.classList.remove('hidden'); - document.getElementById('reviewsAvg').textContent = Number(r.summary.avg).toFixed(1); - document.getElementById('reviewsStars').textContent = - '★'.repeat(Math.round(r.summary.avg)) + '☆'.repeat(5 - Math.round(r.summary.avg)); - document.getElementById('reviewsCount').textContent = `${r.summary.count} review${r.summary.count > 1 ? 's' : ''}`; - document.getElementById('reviewsBlurb').textContent = - r.summary.avg >= 4 ? 'Buyers love this product!' : - r.summary.avg >= 3 ? 'Most buyers are satisfied.' : - 'Mixed reviews — read below.'; - } - - // List - const list = document.getElementById('reviewsList'); - if (!r.reviews || r.reviews.length === 0) { - list.innerHTML = '
No reviews yet. Be the first to write one!
'; - return; - } - list.innerHTML = r.reviews.map(rev => ` -
-
-
-
- ${(rev.reviewer_name || 'B').charAt(0).toUpperCase()} -
-
-
${escapeHtml(rev.reviewer_name || 'Buyer')}
-
${new Date(rev.created_at).toLocaleDateString()}
-
-
-
${'★'.repeat(rev.rating)}${'☆'.repeat(5 - rev.rating)}
-
- ${rev.title ? `
${escapeHtml(rev.title)}
` : ''} - ${rev.comment ? `

${escapeHtml(rev.comment)}

` : ''} - ${rev.verified_purchase ? '
Verified purchase
' : ''} - ${rev.images && rev.images.length ? `
${rev.images.map(img => ``).join('')}
` : ''} - -
`).join(''); - } catch (e) { - console.error('reviews load error', e); - } -} - -function escapeHtml(s) { - return String(s ?? '').replace(/[&<>"']/g, c => ({ - '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' - }[c])); -} - -// ---- Review modal ---- -function openReviewModal() { - if (!currentUser) { - if (confirm('Please login to write a review. Go to login page?')) { - const id = getCurrentProductId(); - window.location.href = `login.html?next=${encodeURIComponent('/Eesha buying folder/product.html?id=' + id)}`; - } - return; - } - document.getElementById('reviewModal').classList.remove('hidden'); - // Star picker - document.querySelectorAll('#starPicker button').forEach(btn => { - btn.onclick = () => { - const star = parseInt(btn.dataset.star); - document.getElementById('reviewRating').value = star; - document.querySelectorAll('#starPicker button').forEach(b => { - b.classList.remove('text-amber-400'); - b.classList.add('text-gray-300'); - }); - for (let i = 1; i <= star; i++) { - const b = document.querySelector(`#starPicker button[data-star="${i}"]`); - if (b) { b.classList.add('text-amber-400'); b.classList.remove('text-gray-300'); } - } - }; - }); - document.getElementById('reviewForm').onsubmit = submitReview; -} - -function closeReviewModal() { - document.getElementById('reviewModal').classList.add('hidden'); -} - -async function submitReview(e) { - e.preventDefault(); - const errEl = document.getElementById('reviewError'); - errEl.classList.add('hidden'); - const rating = parseInt(document.getElementById('reviewRating').value); - if (!rating || rating < 1 || rating > 5) { - errEl.textContent = 'Please select a rating (1-5 stars)'; - errEl.classList.remove('hidden'); - return; - } - const r = await window.EdgeFunctions.reviews.create({ - productId: Number(getCurrentProductId()), - rating, - title: document.getElementById('reviewTitle').value.trim(), - comment: document.getElementById('reviewComment').value.trim(), - }); - if (r.success) { - closeReviewModal(); - await loadProductReviews(); - alert('Thanks for your review!'); - } else { - errEl.textContent = r.error || 'Failed to submit review'; - errEl.classList.remove('hidden'); - } -} - -async function markHelpful(reviewId) { - const r = await window.EdgeFunctions.reviews.helpful(reviewId); - if (r.success) await loadProductReviews(); -} diff --git a/Eesha buying folder/login.html b/Eesha buying folder/login.html deleted file mode 100755 index 9b9bf6bb407f3767bbc5a445c46a7f9ceb7bad66..0000000000000000000000000000000000000000 --- a/Eesha buying folder/login.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - Login - Cellex - - - - - - -
- -
- -

Cellex

-
-

Nigeria's #1 Marketplace

-
- - -
-

Welcome back

-

Please sign in to continue

- - - - - -
-
- - -
- -
- - -
- -
- - Forgot password? -
- - -
- -
-

- Don't have an account? - Sign up -

-
-
-
- - - - - - diff --git a/Eesha buying folder/order-confirmation.html b/Eesha buying folder/order-confirmation.html deleted file mode 100755 index 73b7988a7abb60f66d91eda57638705ed8825d1e..0000000000000000000000000000000000000000 --- a/Eesha buying folder/order-confirmation.html +++ /dev/null @@ -1,450 +0,0 @@ - - - - - - Order Confirmation - Cellex | Nigeria's #1 Marketplace - - - - - - - - - - - - -
-
-
-

Loading order details...

-
-
- - - - - - - diff --git a/Eesha buying folder/orders.html b/Eesha buying folder/orders.html deleted file mode 100755 index d3e562efb9e69b23f039885f3621c800c8b60e10..0000000000000000000000000000000000000000 --- a/Eesha buying folder/orders.html +++ /dev/null @@ -1,422 +0,0 @@ - - - - - - My Orders - Cellex | Nigeria's #1 Marketplace - - - - - - - - - - - - -
- -
- - -
- - - Back to Home - - -
- -
-

My Orders

-
- -
-
- - -
-
-
0
-
Pending
-
-
-
0
-
Processing
-
-
-
0
-
Shipped
-
-
-
0
-
Delivered
-
-
-
0
-
Cancelled
-
-
- - -
- -
- -

Loading your orders...

-
-
-
-
- - - - - - - - - - diff --git a/Eesha buying folder/product.html b/Eesha buying folder/product.html deleted file mode 100755 index 250c1183f9c2df24f64467edbfe5750876285e99..0000000000000000000000000000000000000000 --- a/Eesha buying folder/product.html +++ /dev/null @@ -1,355 +0,0 @@ - - - - - - Product Details - Cellex | Nigeria's #1 Marketplace - - - - - - - - - - - - -
- -
- - -
-
- -
-
-
-
-
-
-
-
-
-
- - - - - -
- -
-
-
-
- - - - -
-
- -
- - - - - - - - -
- Quantity: -
- - 1 - -
-
- - -
- - -
- - -
- - - - -
- - - - - -
-
- -
-

Free Shipping

-

Estimated delivery: 3-5 business days

-
-
-
- -
-

Secure Payment

-

Safe & secure checkout

-
-
-
-
-
- - -
-
-

Ratings & Reviews

- -
- - - -
-
Loading reviews…
-
-
-
- - - - - -
- - -
- - - - - diff --git a/Eesha buying folder/profile.html b/Eesha buying folder/profile.html deleted file mode 100755 index b089e71f49452df4ce50ece67592d8507f71c971..0000000000000000000000000000000000000000 --- a/Eesha buying folder/profile.html +++ /dev/null @@ -1,356 +0,0 @@ - - - - - - My Profile - Cellex | Nigeria's #1 Marketplace - - - - - - - - - - - - -
- -
- - -
- - - Back to Home - - - -
-
- -
-
-
-
- U -
- -
-
-

Loading...

-

Loading...

- - Member since 2024 - -
-
-
- - -
-
- -

0

-

Orders

-
-
- -

0

-

Wishlist

-
-
- -

0

-

Reviews

-
-
- -

$0

-

Spent

-
-
- - -
-

- Personal Information -

- -
-
- - -
-
- - -
-
- - -
-
- - -
-
- -
- - -
- -
-
- - -
-
- - -
-
- - -
-
- -
- Cancel - -
-
-
- - - -
-
- - - - - - - diff --git a/Eesha buying folder/settings.html b/Eesha buying folder/settings.html deleted file mode 100755 index ebb57bc04f5f1e85385f874a24052d08ba3180bb..0000000000000000000000000000000000000000 --- a/Eesha buying folder/settings.html +++ /dev/null @@ -1,524 +0,0 @@ - - - - - - Account Settings - Cellex | Nigeria's #1 Marketplace - - - - - - - - - - - - -
- -
- - -
- - - Back to Home - - -
- -
-
-
- - - - -
-
- - -
-

Account Settings

- -
- -
-
- U -
-
-

Loading...

-

Loading...

- - Edit Profile - -
-
- - -
-

Account Information

-
-
-

Email

-

-

-
-
-

Member Since

-

-

-
-
-

Account Type

-

- Buyer Account -

-
-
-

Last Login

-

-

-
-
-
- - -
-
-
- -
-
-

Start Selling on Eesha

-

Turn your passion into profit. Create a seller account and start selling today!

- - Create Seller Account - -
-
-
-
-
- - - - - - - - - -
- - - -
-
- - - - - - - diff --git a/Eesha buying folder/signup.html b/Eesha buying folder/signup.html deleted file mode 100755 index ef6fffec51e2ae5fa1f497b52acf0b91aa91348e..0000000000000000000000000000000000000000 --- a/Eesha buying folder/signup.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - Sign Up - Cellex - - - - - - -
- -
- -

Cellex

-
-

Create your account

-

Get started with Cellex

-
- - -
- -
-
- - -
- -
- - -
- - - - - -
- - -

- Already have an account? - Sign in -

-
-
- - - - - - diff --git a/Eesha buying folder/wishlist.html b/Eesha buying folder/wishlist.html deleted file mode 100755 index f630d33aa1718a04e078446e909562dffe042972..0000000000000000000000000000000000000000 --- a/Eesha buying folder/wishlist.html +++ /dev/null @@ -1,315 +0,0 @@ - - - - - - My Wishlist - Cellex | Nigeria's #1 Marketplace - - - - - - - - - - - - -
- -
- - -
- - - Back to Home - - -
- -
-
-

My Wishlist

-

0 items saved

-
-
- - -
-
- - -
- -
- -

Loading your wishlist...

-
-
-
-
- - - - - - - diff --git a/README.md b/README.md old mode 100755 new mode 100644 index 0c0ea762b77322f0740c2c8162672ce5e19975dd..8c2f85e560478bafa9c4b87b7f95f66edf7184ab --- a/README.md +++ b/README.md @@ -1,32 +1,56 @@ --- title: Cellex Web -emoji: 🛒 -colorFrom: yellow -colorTo: red +emoji: 🛍️ +colorFrom: blue +colorTo: indigo sdk: docker +app_port: 7860 pinned: false -license: apache-2.0 -short_description: Cellex - Nigeria's #1 Marketplace +license: mit +short_description: Nigeria's #1 social commerce marketplace (Next.js) --- -# Cellex Web Server +# Cellex — Nigeria's #1 Social Commerce Marketplace -Serves the Cellex frontend (static files) + proxies `/api/*` requests to Supabase Edge Functions. +Next.js 16 (App Router) frontend for the Cellex platform — a Nigerian social ecommerce +marketplace with live shopping, group buys, AI-powered discovery, and unified WhatsApp + Telegram +cross-platform shopping. + +## What's inside + +- **Buyer flow**: home, product detail, cart, checkout, PalmPay bank-transfer payment, orders, wishlist, profile +- **Discovery**: categories, search, seller storefronts, video feed, trending, AI recommendations +- **Live shopping**: browse live sessions, watch with real-time chat, featured product buy +- **Group buys**: Pinduoduo-style group discounts unlocked at target count +- **Cross-platform**: link WhatsApp bot with unified cart, Telegram channel alerts +- **Seller center**: dashboard, product CRUD, orders, profile, go-live, product videos, 24h stories ## Architecture -``` -Browser → cellex-web.hf.space → web-server/server.py - ├── /api/* → Supabase Edge Functions (with anon key from env) - └── /* → static files (index.html, ai-chat.html, js/, etc.) -``` +- Frontend: Next.js 16 App Router + React + TypeScript + Tailwind CSS 4 + shadcn/ui +- Backend: 27 Supabase Edge Functions (Deno) — unchanged from prior phases +- Auth: HTTP-only cookies → `web_sessions` table → JWT verify in edge functions +- Payment: PalmPay bank transfer with Gmail-IMAP auto-verification (Render bot) +- AI: Qwen2.5-72B powering product recommendations and shopping assistant + +## Deployment -The frontend has **ZERO** Supabase references — no URL, no keys, no SDK. All requests go through relative `/api/*` URLs. +This Space uses the **Docker SDK**. The Dockerfile: -## Environment Variables (set as Secrets) +1. Builds the Next.js app with `output: "standalone"` +2. Copies the standalone server + static assets to a slim Node 20 image +3. Serves on port **7860** (HF Spaces default) + +## Environment variables (set in HF Space settings) + +``` +SUPABASE_URL=https://tcwdbokruvlizkxcpkzj.supabase.co +SUPABASE_ANON_KEY=... (Supabase anon key) +SUPABASE_SERVICE_KEY=... (optional, only if you upload videos via web-server) +GMAIL_EMAIL=... (optional, only if running payment verifier here) +GMAIL_APP_PASSWORD=... +``` -| Key | Value | -|-----|-------| -| `SUPABASE_PROJECT_URL` | `https://tcwdbokruvlizkxcpkzj.supabase.co` | -| `SUPABASE_ANON_KEY` | (Supabase anon key) | -| `PORT` | `7860` | +> **Note**: Most existing edge functions, the payment verifier, and WhatsApp/Telegram bots +> are NOT run here — they continue running on Render / Supabase. This Space only hosts the +> Next.js web frontend. diff --git a/ai-chat.html b/ai-chat.html deleted file mode 100755 index 40d4561c90778cdc92d6782fd51e4b59c3d44d4f..0000000000000000000000000000000000000000 --- a/ai-chat.html +++ /dev/null @@ -1,235 +0,0 @@ - - - - - - AI Shop — Cellex AI Shopping Assistant - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
-

Hi! I'm your Cellex AI Assistant. I can help you find products, compare prices, track deals, and more! What are you looking for today?

-

Just now

-
-
- - -
- - - - -
-
- - -
-
- - -
- - - - -
-

Powered by Cellex AI

-
-
- - - - - - - - - - diff --git a/auth.html b/auth.html deleted file mode 100755 index f993133e918aa26c11d26a7ced399b7c69d4daf7..0000000000000000000000000000000000000000 --- a/auth.html +++ /dev/null @@ -1,246 +0,0 @@ - - - - - - Login / Signup - Eesha - - - - - -
-
-

Login to Eesha

-
- - - -
-

Don't have an account? Sign up

-
- - - Am a Seller -
- - - \ No newline at end of file diff --git a/bun.lock b/bun.lock new file mode 100644 index 0000000000000000000000000000000000000000..452a691c982cd9e555fa90f0c7692c71dd0e7454 --- /dev/null +++ b/bun.lock @@ -0,0 +1,1965 @@ +{ + "lockfileVersion": 1, + "configVersion": 1, + "workspaces": { + "": { + "name": "nextjs_tailwind_shadcn_ts", + "dependencies": { + "@dnd-kit/core": "^6.3.1", + "@dnd-kit/sortable": "^10.0.0", + "@dnd-kit/utilities": "^3.2.2", + "@hookform/resolvers": "^5.1.1", + "@mdxeditor/editor": "^3.39.1", + "@prisma/client": "^6.11.1", + "@radix-ui/react-accordion": "^1.2.11", + "@radix-ui/react-alert-dialog": "^1.1.14", + "@radix-ui/react-aspect-ratio": "^1.1.7", + "@radix-ui/react-avatar": "^1.1.10", + "@radix-ui/react-checkbox": "^1.3.2", + "@radix-ui/react-collapsible": "^1.1.11", + "@radix-ui/react-context-menu": "^2.2.15", + "@radix-ui/react-dialog": "^1.1.14", + "@radix-ui/react-dropdown-menu": "^2.1.15", + "@radix-ui/react-hover-card": "^1.1.14", + "@radix-ui/react-label": "^2.1.7", + "@radix-ui/react-menubar": "^1.1.15", + "@radix-ui/react-navigation-menu": "^1.2.13", + "@radix-ui/react-popover": "^1.1.14", + "@radix-ui/react-progress": "^1.1.7", + "@radix-ui/react-radio-group": "^1.3.7", + "@radix-ui/react-scroll-area": "^1.2.9", + "@radix-ui/react-select": "^2.2.5", + "@radix-ui/react-separator": "^1.1.7", + "@radix-ui/react-slider": "^1.3.5", + "@radix-ui/react-slot": "^1.2.3", + "@radix-ui/react-switch": "^1.2.5", + "@radix-ui/react-tabs": "^1.1.12", + "@radix-ui/react-toast": "^1.2.14", + "@radix-ui/react-toggle": "^1.1.9", + "@radix-ui/react-toggle-group": "^1.1.10", + "@radix-ui/react-tooltip": "^1.2.7", + "@reactuses/core": "^6.0.5", + "@tanstack/react-query": "^5.82.0", + "@tanstack/react-table": "^8.21.3", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "cmdk": "^1.1.1", + "date-fns": "^4.1.0", + "embla-carousel-react": "^8.6.0", + "framer-motion": "^12.23.2", + "input-otp": "^1.4.2", + "lucide-react": "^0.525.0", + "next": "^16.1.1", + "next-auth": "^4.24.11", + "next-intl": "^4.3.4", + "next-themes": "^0.4.6", + "prisma": "^6.11.1", + "react": "^19.0.0", + "react-day-picker": "^9.8.0", + "react-dom": "^19.0.0", + "react-hook-form": "^7.60.0", + "react-markdown": "^10.1.0", + "react-resizable-panels": "^3.0.3", + "react-syntax-highlighter": "^15.6.1", + "recharts": "^2.15.4", + "sharp": "^0.34.3", + "sonner": "^2.0.6", + "tailwind-merge": "^3.3.1", + "tailwindcss-animate": "^1.0.7", + "uuid": "^11.1.0", + "vaul": "^1.1.2", + "z-ai-web-dev-sdk": "^0.0.18", + "zod": "^4.0.2", + "zustand": "^5.0.6", + }, + "devDependencies": { + "@tailwindcss/postcss": "^4", + "@types/react": "^19", + "@types/react-dom": "^19", + "bun-types": "^1.3.4", + "eslint": "^9", + "eslint-config-next": "^16.1.1", + "tailwindcss": "^4", + "tw-animate-css": "^1.3.5", + "typescript": "^5", + }, + }, + }, + "packages": { + "@alloc/quick-lru": ["@alloc/quick-lru@5.2.0", "https://registry.npmjs.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", {}, "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw=="], + + "@babel/code-frame": ["@babel/code-frame@7.28.6", "https://registry.npmjs.com/@babel/code-frame/-/code-frame-7.28.6.tgz", { "dependencies": { "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q=="], + + "@babel/compat-data": ["@babel/compat-data@7.28.6", "https://registry.npmjs.com/@babel/compat-data/-/compat-data-7.28.6.tgz", {}, "sha512-2lfu57JtzctfIrcGMz992hyLlByuzgIk58+hhGCxjKZ3rWI82NnVLjXcaTqkI2NvlcvOskZaiZ5kjUALo3Lpxg=="], + + "@babel/core": ["@babel/core@7.28.6", "https://registry.npmjs.com/@babel/core/-/core-7.28.6.tgz", { "dependencies": { "@babel/code-frame": "^7.28.6", "@babel/generator": "^7.28.6", "@babel/helper-compilation-targets": "^7.28.6", "@babel/helper-module-transforms": "^7.28.6", "@babel/helpers": "^7.28.6", "@babel/parser": "^7.28.6", "@babel/template": "^7.28.6", "@babel/traverse": "^7.28.6", "@babel/types": "^7.28.6", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" } }, "sha512-H3mcG6ZDLTlYfaSNi0iOKkigqMFvkTKlGUYlD8GW7nNOYRrevuA46iTypPyv+06V3fEmvvazfntkBU34L0azAw=="], + + "@babel/generator": ["@babel/generator@7.28.6", "https://registry.npmjs.com/@babel/generator/-/generator-7.28.6.tgz", { "dependencies": { "@babel/parser": "^7.28.6", "@babel/types": "^7.28.6", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw=="], + + "@babel/helper-compilation-targets": ["@babel/helper-compilation-targets@7.28.6", "https://registry.npmjs.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", { "dependencies": { "@babel/compat-data": "^7.28.6", "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" } }, "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA=="], + + "@babel/helper-globals": ["@babel/helper-globals@7.28.0", "https://registry.npmjs.com/@babel/helper-globals/-/helper-globals-7.28.0.tgz", {}, "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw=="], + + "@babel/helper-module-imports": ["@babel/helper-module-imports@7.28.6", "https://registry.npmjs.com/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", { "dependencies": { "@babel/traverse": "^7.28.6", "@babel/types": "^7.28.6" } }, "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw=="], + + "@babel/helper-module-transforms": ["@babel/helper-module-transforms@7.28.6", "https://registry.npmjs.com/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", { "dependencies": { "@babel/helper-module-imports": "^7.28.6", "@babel/helper-validator-identifier": "^7.28.5", "@babel/traverse": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA=="], + + "@babel/helper-string-parser": ["@babel/helper-string-parser@7.27.1", "https://registry.npmjs.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", {}, "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA=="], + + "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.28.5", "https://registry.npmjs.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", {}, "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q=="], + + "@babel/helper-validator-option": ["@babel/helper-validator-option@7.27.1", "https://registry.npmjs.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", {}, "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg=="], + + "@babel/helpers": ["@babel/helpers@7.28.6", "https://registry.npmjs.com/@babel/helpers/-/helpers-7.28.6.tgz", { "dependencies": { "@babel/template": "^7.28.6", "@babel/types": "^7.28.6" } }, "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw=="], + + "@babel/parser": ["@babel/parser@7.28.6", "https://registry.npmjs.com/@babel/parser/-/parser-7.28.6.tgz", { "dependencies": { "@babel/types": "^7.28.6" }, "bin": "./bin/babel-parser.js" }, "sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ=="], + + "@babel/runtime": ["@babel/runtime@7.28.6", "https://registry.npmjs.com/@babel/runtime/-/runtime-7.28.6.tgz", {}, "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA=="], + + "@babel/template": ["@babel/template@7.28.6", "https://registry.npmjs.com/@babel/template/-/template-7.28.6.tgz", { "dependencies": { "@babel/code-frame": "^7.28.6", "@babel/parser": "^7.28.6", "@babel/types": "^7.28.6" } }, "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ=="], + + "@babel/traverse": ["@babel/traverse@7.28.6", "https://registry.npmjs.com/@babel/traverse/-/traverse-7.28.6.tgz", { "dependencies": { "@babel/code-frame": "^7.28.6", "@babel/generator": "^7.28.6", "@babel/helper-globals": "^7.28.0", "@babel/parser": "^7.28.6", "@babel/template": "^7.28.6", "@babel/types": "^7.28.6", "debug": "^4.3.1" } }, "sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg=="], + + "@babel/types": ["@babel/types@7.28.6", "https://registry.npmjs.com/@babel/types/-/types-7.28.6.tgz", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg=="], + + "@codemirror/autocomplete": ["@codemirror/autocomplete@6.20.0", "https://registry.npmjs.com/@codemirror/autocomplete/-/autocomplete-6.20.0.tgz", { "dependencies": { "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.17.0", "@lezer/common": "^1.0.0" } }, "sha512-bOwvTOIJcG5FVo5gUUupiwYh8MioPLQ4UcqbcRf7UQ98X90tCa9E1kZ3Z7tqwpZxYyOvh1YTYbmZE9RTfTp5hg=="], + + "@codemirror/commands": ["@codemirror/commands@6.10.1", "https://registry.npmjs.com/@codemirror/commands/-/commands-6.10.1.tgz", { "dependencies": { "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.4.0", "@codemirror/view": "^6.27.0", "@lezer/common": "^1.1.0" } }, "sha512-uWDWFypNdQmz2y1LaNJzK7fL7TYKLeUAU0npEC685OKTF3KcQ2Vu3klIM78D7I6wGhktme0lh3CuQLv0ZCrD9Q=="], + + "@codemirror/lang-angular": ["@codemirror/lang-angular@0.1.4", "https://registry.npmjs.com/@codemirror/lang-angular/-/lang-angular-0.1.4.tgz", { "dependencies": { "@codemirror/lang-html": "^6.0.0", "@codemirror/lang-javascript": "^6.1.2", "@codemirror/language": "^6.0.0", "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.3.3" } }, "sha512-oap+gsltb/fzdlTQWD6BFF4bSLKcDnlxDsLdePiJpCVNKWXSTAbiiQeYI3UmES+BLAdkmIC1WjyztC1pi/bX4g=="], + + "@codemirror/lang-cpp": ["@codemirror/lang-cpp@6.0.3", "https://registry.npmjs.com/@codemirror/lang-cpp/-/lang-cpp-6.0.3.tgz", { "dependencies": { "@codemirror/language": "^6.0.0", "@lezer/cpp": "^1.0.0" } }, "sha512-URM26M3vunFFn9/sm6rzqrBzDgfWuDixp85uTY49wKudToc2jTHUrKIGGKs+QWND+YLofNNZpxcNGRynFJfvgA=="], + + "@codemirror/lang-css": ["@codemirror/lang-css@6.3.1", "https://registry.npmjs.com/@codemirror/lang-css/-/lang-css-6.3.1.tgz", { "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", "@lezer/common": "^1.0.2", "@lezer/css": "^1.1.7" } }, "sha512-kr5fwBGiGtmz6l0LSJIbno9QrifNMUusivHbnA1H6Dmqy4HZFte3UAICix1VuKo0lMPKQr2rqB+0BkKi/S3Ejg=="], + + "@codemirror/lang-go": ["@codemirror/lang-go@6.0.1", "https://registry.npmjs.com/@codemirror/lang-go/-/lang-go-6.0.1.tgz", { "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/language": "^6.6.0", "@codemirror/state": "^6.0.0", "@lezer/common": "^1.0.0", "@lezer/go": "^1.0.0" } }, "sha512-7fNvbyNylvqCphW9HD6WFnRpcDjr+KXX/FgqXy5H5ZS0eC5edDljukm/yNgYkwTsgp2busdod50AOTIy6Jikfg=="], + + "@codemirror/lang-html": ["@codemirror/lang-html@6.4.11", "https://registry.npmjs.com/@codemirror/lang-html/-/lang-html-6.4.11.tgz", { "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/lang-css": "^6.0.0", "@codemirror/lang-javascript": "^6.0.0", "@codemirror/language": "^6.4.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.17.0", "@lezer/common": "^1.0.0", "@lezer/css": "^1.1.0", "@lezer/html": "^1.3.12" } }, "sha512-9NsXp7Nwp891pQchI7gPdTwBuSuT3K65NGTHWHNJ55HjYcHLllr0rbIZNdOzas9ztc1EUVBlHou85FFZS4BNnw=="], + + "@codemirror/lang-java": ["@codemirror/lang-java@6.0.2", "https://registry.npmjs.com/@codemirror/lang-java/-/lang-java-6.0.2.tgz", { "dependencies": { "@codemirror/language": "^6.0.0", "@lezer/java": "^1.0.0" } }, "sha512-m5Nt1mQ/cznJY7tMfQTJchmrjdjQ71IDs+55d1GAa8DGaB8JXWsVCkVT284C3RTASaY43YknrK2X3hPO/J3MOQ=="], + + "@codemirror/lang-javascript": ["@codemirror/lang-javascript@6.2.4", "https://registry.npmjs.com/@codemirror/lang-javascript/-/lang-javascript-6.2.4.tgz", { "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/language": "^6.6.0", "@codemirror/lint": "^6.0.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.17.0", "@lezer/common": "^1.0.0", "@lezer/javascript": "^1.0.0" } }, "sha512-0WVmhp1QOqZ4Rt6GlVGwKJN3KW7Xh4H2q8ZZNGZaP6lRdxXJzmjm4FqvmOojVj6khWJHIb9sp7U/72W7xQgqAA=="], + + "@codemirror/lang-jinja": ["@codemirror/lang-jinja@6.0.0", "https://registry.npmjs.com/@codemirror/lang-jinja/-/lang-jinja-6.0.0.tgz", { "dependencies": { "@codemirror/lang-html": "^6.0.0", "@codemirror/language": "^6.0.0", "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.2.0", "@lezer/lr": "^1.4.0" } }, "sha512-47MFmRcR8UAxd8DReVgj7WJN1WSAMT7OJnewwugZM4XiHWkOjgJQqvEM1NpMj9ALMPyxmlziEI1opH9IaEvmaw=="], + + "@codemirror/lang-json": ["@codemirror/lang-json@6.0.2", "https://registry.npmjs.com/@codemirror/lang-json/-/lang-json-6.0.2.tgz", { "dependencies": { "@codemirror/language": "^6.0.0", "@lezer/json": "^1.0.0" } }, "sha512-x2OtO+AvwEHrEwR0FyyPtfDUiloG3rnVTSZV1W8UteaLL8/MajQd8DpvUb2YVzC+/T18aSDv0H9mu+xw0EStoQ=="], + + "@codemirror/lang-less": ["@codemirror/lang-less@6.0.2", "https://registry.npmjs.com/@codemirror/lang-less/-/lang-less-6.0.2.tgz", { "dependencies": { "@codemirror/lang-css": "^6.2.0", "@codemirror/language": "^6.0.0", "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-EYdQTG22V+KUUk8Qq582g7FMnCZeEHsyuOJisHRft/mQ+ZSZ2w51NupvDUHiqtsOy7It5cHLPGfHQLpMh9bqpQ=="], + + "@codemirror/lang-liquid": ["@codemirror/lang-liquid@6.3.1", "https://registry.npmjs.com/@codemirror/lang-liquid/-/lang-liquid-6.3.1.tgz", { "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/lang-html": "^6.0.0", "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.0.0", "@lezer/common": "^1.0.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.3.1" } }, "sha512-S/jE/D7iij2Pu70AC65ME6AYWxOOcX20cSJvaPgY5w7m2sfxsArAcUAuUgm/CZCVmqoi9KiOlS7gj/gyLipABw=="], + + "@codemirror/lang-markdown": ["@codemirror/lang-markdown@6.5.0", "https://registry.npmjs.com/@codemirror/lang-markdown/-/lang-markdown-6.5.0.tgz", { "dependencies": { "@codemirror/autocomplete": "^6.7.1", "@codemirror/lang-html": "^6.0.0", "@codemirror/language": "^6.3.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.0.0", "@lezer/common": "^1.2.1", "@lezer/markdown": "^1.0.0" } }, "sha512-0K40bZ35jpHya6FriukbgaleaqzBLZfOh7HuzqbMxBXkbYMJDxfF39c23xOgxFezR+3G+tR2/Mup+Xk865OMvw=="], + + "@codemirror/lang-php": ["@codemirror/lang-php@6.0.2", "https://registry.npmjs.com/@codemirror/lang-php/-/lang-php-6.0.2.tgz", { "dependencies": { "@codemirror/lang-html": "^6.0.0", "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", "@lezer/common": "^1.0.0", "@lezer/php": "^1.0.0" } }, "sha512-ZKy2v1n8Fc8oEXj0Th0PUMXzQJ0AIR6TaZU+PbDHExFwdu+guzOA4jmCHS1Nz4vbFezwD7LyBdDnddSJeScMCA=="], + + "@codemirror/lang-python": ["@codemirror/lang-python@6.2.1", "https://registry.npmjs.com/@codemirror/lang-python/-/lang-python-6.2.1.tgz", { "dependencies": { "@codemirror/autocomplete": "^6.3.2", "@codemirror/language": "^6.8.0", "@codemirror/state": "^6.0.0", "@lezer/common": "^1.2.1", "@lezer/python": "^1.1.4" } }, "sha512-IRjC8RUBhn9mGR9ywecNhB51yePWCGgvHfY1lWN/Mrp3cKuHr0isDKia+9HnvhiWNnMpbGhWrkhuWOc09exRyw=="], + + "@codemirror/lang-rust": ["@codemirror/lang-rust@6.0.2", "https://registry.npmjs.com/@codemirror/lang-rust/-/lang-rust-6.0.2.tgz", { "dependencies": { "@codemirror/language": "^6.0.0", "@lezer/rust": "^1.0.0" } }, "sha512-EZaGjCUegtiU7kSMvOfEZpaCReowEf3yNidYu7+vfuGTm9ow4mthAparY5hisJqOHmJowVH3Upu+eJlUji6qqA=="], + + "@codemirror/lang-sass": ["@codemirror/lang-sass@6.0.2", "https://registry.npmjs.com/@codemirror/lang-sass/-/lang-sass-6.0.2.tgz", { "dependencies": { "@codemirror/lang-css": "^6.2.0", "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", "@lezer/common": "^1.0.2", "@lezer/sass": "^1.0.0" } }, "sha512-l/bdzIABvnTo1nzdY6U+kPAC51czYQcOErfzQ9zSm9D8GmNPD0WTW8st/CJwBTPLO8jlrbyvlSEcN20dc4iL0Q=="], + + "@codemirror/lang-sql": ["@codemirror/lang-sql@6.10.0", "https://registry.npmjs.com/@codemirror/lang-sql/-/lang-sql-6.10.0.tgz", { "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-6ayPkEd/yRw0XKBx5uAiToSgGECo/GY2NoJIHXIIQh1EVwLuKoU8BP/qK0qH5NLXAbtJRLuT73hx7P9X34iO4w=="], + + "@codemirror/lang-vue": ["@codemirror/lang-vue@0.1.3", "https://registry.npmjs.com/@codemirror/lang-vue/-/lang-vue-0.1.3.tgz", { "dependencies": { "@codemirror/lang-html": "^6.0.0", "@codemirror/lang-javascript": "^6.1.2", "@codemirror/language": "^6.0.0", "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.3.1" } }, "sha512-QSKdtYTDRhEHCfo5zOShzxCmqKJvgGrZwDQSdbvCRJ5pRLWBS7pD/8e/tH44aVQT6FKm0t6RVNoSUWHOI5vNug=="], + + "@codemirror/lang-wast": ["@codemirror/lang-wast@6.0.2", "https://registry.npmjs.com/@codemirror/lang-wast/-/lang-wast-6.0.2.tgz", { "dependencies": { "@codemirror/language": "^6.0.0", "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-Imi2KTpVGm7TKuUkqyJ5NRmeFWF7aMpNiwHnLQe0x9kmrxElndyH0K6H/gXtWwY6UshMRAhpENsgfpSwsgmC6Q=="], + + "@codemirror/lang-xml": ["@codemirror/lang-xml@6.1.0", "https://registry.npmjs.com/@codemirror/lang-xml/-/lang-xml-6.1.0.tgz", { "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/language": "^6.4.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.0.0", "@lezer/common": "^1.0.0", "@lezer/xml": "^1.0.0" } }, "sha512-3z0blhicHLfwi2UgkZYRPioSgVTo9PV5GP5ducFH6FaHy0IAJRg+ixj5gTR1gnT/glAIC8xv4w2VL1LoZfs+Jg=="], + + "@codemirror/lang-yaml": ["@codemirror/lang-yaml@6.1.2", "https://registry.npmjs.com/@codemirror/lang-yaml/-/lang-yaml-6.1.2.tgz", { "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.2.0", "@lezer/lr": "^1.0.0", "@lezer/yaml": "^1.0.0" } }, "sha512-dxrfG8w5Ce/QbT7YID7mWZFKhdhsaTNOYjOkSIMt1qmC4VQnXSDSYVHHHn8k6kJUfIhtLo8t1JJgltlxWdsITw=="], + + "@codemirror/language": ["@codemirror/language@6.12.1", "https://registry.npmjs.com/@codemirror/language/-/language-6.12.1.tgz", { "dependencies": { "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.23.0", "@lezer/common": "^1.5.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0", "style-mod": "^4.0.0" } }, "sha512-Fa6xkSiuGKc8XC8Cn96T+TQHYj4ZZ7RdFmXA3i9xe/3hLHfwPZdM+dqfX0Cp0zQklBKhVD8Yzc8LS45rkqcwpQ=="], + + "@codemirror/language-data": ["@codemirror/language-data@6.5.2", "https://registry.npmjs.com/@codemirror/language-data/-/language-data-6.5.2.tgz", { "dependencies": { "@codemirror/lang-angular": "^0.1.0", "@codemirror/lang-cpp": "^6.0.0", "@codemirror/lang-css": "^6.0.0", "@codemirror/lang-go": "^6.0.0", "@codemirror/lang-html": "^6.0.0", "@codemirror/lang-java": "^6.0.0", "@codemirror/lang-javascript": "^6.0.0", "@codemirror/lang-jinja": "^6.0.0", "@codemirror/lang-json": "^6.0.0", "@codemirror/lang-less": "^6.0.0", "@codemirror/lang-liquid": "^6.0.0", "@codemirror/lang-markdown": "^6.0.0", "@codemirror/lang-php": "^6.0.0", "@codemirror/lang-python": "^6.0.0", "@codemirror/lang-rust": "^6.0.0", "@codemirror/lang-sass": "^6.0.0", "@codemirror/lang-sql": "^6.0.0", "@codemirror/lang-vue": "^0.1.1", "@codemirror/lang-wast": "^6.0.0", "@codemirror/lang-xml": "^6.0.0", "@codemirror/lang-yaml": "^6.0.0", "@codemirror/language": "^6.0.0", "@codemirror/legacy-modes": "^6.4.0" } }, "sha512-CPkWBKrNS8stYbEU5kwBwTf3JB1kghlbh4FSAwzGW2TEscdeHHH4FGysREW86Mqnj3Qn09s0/6Ea/TutmoTobg=="], + + "@codemirror/legacy-modes": ["@codemirror/legacy-modes@6.5.2", "https://registry.npmjs.com/@codemirror/legacy-modes/-/legacy-modes-6.5.2.tgz", { "dependencies": { "@codemirror/language": "^6.0.0" } }, "sha512-/jJbwSTazlQEDOQw2FJ8LEEKVS72pU0lx6oM54kGpL8t/NJ2Jda3CZ4pcltiKTdqYSRk3ug1B3pil1gsjA6+8Q=="], + + "@codemirror/lint": ["@codemirror/lint@6.9.2", "https://registry.npmjs.com/@codemirror/lint/-/lint-6.9.2.tgz", { "dependencies": { "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.35.0", "crelt": "^1.0.5" } }, "sha512-sv3DylBiIyi+xKwRCJAAsBZZZWo82shJ/RTMymLabAdtbkV5cSKwWDeCgtUq3v8flTaXS2y1kKkICuRYtUswyQ=="], + + "@codemirror/merge": ["@codemirror/merge@6.11.2", "https://registry.npmjs.com/@codemirror/merge/-/merge-6.11.2.tgz", { "dependencies": { "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.17.0", "@lezer/highlight": "^1.0.0", "style-mod": "^4.1.0" } }, "sha512-NO5EJd2rLRbwVWLgMdhIntDIhfDtMOKYEZgqV5WnkNUS2oXOCVWLPjG/kgl/Jth2fGiOuG947bteqxP9nBXmMg=="], + + "@codemirror/search": ["@codemirror/search@6.6.0", "https://registry.npmjs.com/@codemirror/search/-/search-6.6.0.tgz", { "dependencies": { "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.37.0", "crelt": "^1.0.5" } }, "sha512-koFuNXcDvyyotWcgOnZGmY7LZqEOXZaaxD/j6n18TCLx2/9HieZJ5H6hs1g8FiRxBD0DNfs0nXn17g872RmYdw=="], + + "@codemirror/state": ["@codemirror/state@6.5.4", "https://registry.npmjs.com/@codemirror/state/-/state-6.5.4.tgz", { "dependencies": { "@marijn/find-cluster-break": "^1.0.0" } }, "sha512-8y7xqG/hpB53l25CIoit9/ngxdfoG+fx+V3SHBrinnhOtLvKHRyAJJuHzkWrR4YXXLX8eXBsejgAAxHUOdW1yw=="], + + "@codemirror/view": ["@codemirror/view@6.39.11", "https://registry.npmjs.com/@codemirror/view/-/view-6.39.11.tgz", { "dependencies": { "@codemirror/state": "^6.5.0", "crelt": "^1.0.6", "style-mod": "^4.1.0", "w3c-keyname": "^2.2.4" } }, "sha512-bWdeR8gWM87l4DB/kYSF9A+dVackzDb/V56Tq7QVrQ7rn86W0rgZFtlL3g3pem6AeGcb9NQNoy3ao4WpW4h5tQ=="], + + "@codesandbox/nodebox": ["@codesandbox/nodebox@0.1.8", "https://registry.npmjs.com/@codesandbox/nodebox/-/nodebox-0.1.8.tgz", { "dependencies": { "outvariant": "^1.4.0", "strict-event-emitter": "^0.4.3" } }, "sha512-2VRS6JDSk+M+pg56GA6CryyUSGPjBEe8Pnae0QL3jJF1mJZJVMDKr93gJRtBbLkfZN6LD/DwMtf+2L0bpWrjqg=="], + + "@codesandbox/sandpack-client": ["@codesandbox/sandpack-client@2.19.8", "https://registry.npmjs.com/@codesandbox/sandpack-client/-/sandpack-client-2.19.8.tgz", { "dependencies": { "@codesandbox/nodebox": "0.1.8", "buffer": "^6.0.3", "dequal": "^2.0.2", "mime-db": "^1.52.0", "outvariant": "1.4.0", "static-browser-server": "1.0.3" } }, "sha512-CMV4nr1zgKzVpx4I3FYvGRM5YT0VaQhALMW9vy4wZRhEyWAtJITQIqZzrTGWqB1JvV7V72dVEUCUPLfYz5hgJQ=="], + + "@codesandbox/sandpack-react": ["@codesandbox/sandpack-react@2.20.0", "https://registry.npmjs.com/@codesandbox/sandpack-react/-/sandpack-react-2.20.0.tgz", { "dependencies": { "@codemirror/autocomplete": "^6.4.0", "@codemirror/commands": "^6.1.3", "@codemirror/lang-css": "^6.0.1", "@codemirror/lang-html": "^6.4.0", "@codemirror/lang-javascript": "^6.1.2", "@codemirror/language": "^6.3.2", "@codemirror/state": "^6.2.0", "@codemirror/view": "^6.7.1", "@codesandbox/sandpack-client": "^2.19.8", "@lezer/highlight": "^1.1.3", "@react-hook/intersection-observer": "^3.1.1", "@stitches/core": "^1.2.6", "anser": "^2.1.1", "clean-set": "^1.1.2", "dequal": "^2.0.2", "escape-carriage": "^1.3.1", "lz-string": "^1.4.4", "react-devtools-inline": "4.4.0", "react-is": "^17.0.2" }, "peerDependencies": { "react": "^16.8.0 || ^17 || ^18 || ^19", "react-dom": "^16.8.0 || ^17 || ^18 || ^19" } }, "sha512-takd1YpW/PMQ6KPQfvseWLHWklJovGY8QYj8MtWnskGKbjOGJ6uZfyZbcJ6aCFLQMpNyjTqz9AKNbvhCOZ1TUQ=="], + + "@date-fns/tz": ["@date-fns/tz@1.4.1", "https://registry.npmjs.com/@date-fns/tz/-/tz-1.4.1.tgz", {}, "sha512-P5LUNhtbj6YfI3iJjw5EL9eUAG6OitD0W3fWQcpQjDRc/QIsL0tRNuO1PcDvPccWL1fSTXXdE1ds+l95DV/OFA=="], + + "@dnd-kit/accessibility": ["@dnd-kit/accessibility@3.1.1", "https://registry.npmjs.com/@dnd-kit/accessibility/-/accessibility-3.1.1.tgz", { "dependencies": { "tslib": "^2.0.0" }, "peerDependencies": { "react": ">=16.8.0" } }, "sha512-2P+YgaXF+gRsIihwwY1gCsQSYnu9Zyj2py8kY5fFvUM1qm2WA2u639R6YNVfU4GWr+ZM5mqEsfHZZLoRONbemw=="], + + "@dnd-kit/core": ["@dnd-kit/core@6.3.1", "https://registry.npmjs.com/@dnd-kit/core/-/core-6.3.1.tgz", { "dependencies": { "@dnd-kit/accessibility": "^3.1.1", "@dnd-kit/utilities": "^3.2.2", "tslib": "^2.0.0" }, "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-xkGBRQQab4RLwgXxoqETICr6S5JlogafbhNsidmrkVv2YRs5MLwpjoF2qpiGjQt8S9AoxtIV603s0GIUpY5eYQ=="], + + "@dnd-kit/sortable": ["@dnd-kit/sortable@10.0.0", "https://registry.npmjs.com/@dnd-kit/sortable/-/sortable-10.0.0.tgz", { "dependencies": { "@dnd-kit/utilities": "^3.2.2", "tslib": "^2.0.0" }, "peerDependencies": { "@dnd-kit/core": "^6.3.0", "react": ">=16.8.0" } }, "sha512-+xqhmIIzvAYMGfBYYnbKuNicfSsk4RksY2XdmJhT+HAC01nix6fHCztU68jooFiMUB01Ky3F0FyOvhG/BZrWkg=="], + + "@dnd-kit/utilities": ["@dnd-kit/utilities@3.2.2", "https://registry.npmjs.com/@dnd-kit/utilities/-/utilities-3.2.2.tgz", { "dependencies": { "tslib": "^2.0.0" }, "peerDependencies": { "react": ">=16.8.0" } }, "sha512-+MKAJEOfaBe5SmV6t34p80MMKhjvUz0vRrvVJbPT0WElzaOJ/1xs+D+KDv+tD/NE5ujfrChEcshd4fLn0wpiqg=="], + + "@emnapi/core": ["@emnapi/core@1.8.1", "https://registry.npmjs.com/@emnapi/core/-/core-1.8.1.tgz", { "dependencies": { "@emnapi/wasi-threads": "1.1.0", "tslib": "^2.4.0" } }, "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg=="], + + "@emnapi/runtime": ["@emnapi/runtime@1.8.1", "https://registry.npmjs.com/@emnapi/runtime/-/runtime-1.8.1.tgz", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg=="], + + "@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.1.0", "https://registry.npmjs.com/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ=="], + + "@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.9.1", "https://registry.npmjs.com/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", { "dependencies": { "eslint-visitor-keys": "^3.4.3" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ=="], + + "@eslint-community/regexpp": ["@eslint-community/regexpp@4.12.2", "https://registry.npmjs.com/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", {}, "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew=="], + + "@eslint/config-array": ["@eslint/config-array@0.21.1", "https://registry.npmjs.com/@eslint/config-array/-/config-array-0.21.1.tgz", { "dependencies": { "@eslint/object-schema": "^2.1.7", "debug": "^4.3.1", "minimatch": "^3.1.2" } }, "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA=="], + + "@eslint/config-helpers": ["@eslint/config-helpers@0.4.2", "https://registry.npmjs.com/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", { "dependencies": { "@eslint/core": "^0.17.0" } }, "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw=="], + + "@eslint/core": ["@eslint/core@0.17.0", "https://registry.npmjs.com/@eslint/core/-/core-0.17.0.tgz", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ=="], + + "@eslint/eslintrc": ["@eslint/eslintrc@3.3.3", "https://registry.npmjs.com/@eslint/eslintrc/-/eslintrc-3.3.3.tgz", { "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^10.0.1", "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.1", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" } }, "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ=="], + + "@eslint/js": ["@eslint/js@9.39.2", "https://registry.npmjs.com/@eslint/js/-/js-9.39.2.tgz", {}, "sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA=="], + + "@eslint/object-schema": ["@eslint/object-schema@2.1.7", "https://registry.npmjs.com/@eslint/object-schema/-/object-schema-2.1.7.tgz", {}, "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA=="], + + "@eslint/plugin-kit": ["@eslint/plugin-kit@0.4.1", "https://registry.npmjs.com/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", { "dependencies": { "@eslint/core": "^0.17.0", "levn": "^0.4.1" } }, "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA=="], + + "@floating-ui/core": ["@floating-ui/core@1.7.3", "https://registry.npmjs.com/@floating-ui/core/-/core-1.7.3.tgz", { "dependencies": { "@floating-ui/utils": "^0.2.10" } }, "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w=="], + + "@floating-ui/dom": ["@floating-ui/dom@1.7.4", "https://registry.npmjs.com/@floating-ui/dom/-/dom-1.7.4.tgz", { "dependencies": { "@floating-ui/core": "^1.7.3", "@floating-ui/utils": "^0.2.10" } }, "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA=="], + + "@floating-ui/react": ["@floating-ui/react@0.27.16", "https://registry.npmjs.com/@floating-ui/react/-/react-0.27.16.tgz", { "dependencies": { "@floating-ui/react-dom": "^2.1.6", "@floating-ui/utils": "^0.2.10", "tabbable": "^6.0.0" }, "peerDependencies": { "react": ">=17.0.0", "react-dom": ">=17.0.0" } }, "sha512-9O8N4SeG2z++TSM8QA/KTeKFBVCNEz/AGS7gWPJf6KFRzmRWixFRnCnkPHRDwSVZW6QPDO6uT0P2SpWNKCc9/g=="], + + "@floating-ui/react-dom": ["@floating-ui/react-dom@2.1.6", "https://registry.npmjs.com/@floating-ui/react-dom/-/react-dom-2.1.6.tgz", { "dependencies": { "@floating-ui/dom": "^1.7.4" }, "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw=="], + + "@floating-ui/utils": ["@floating-ui/utils@0.2.10", "https://registry.npmjs.com/@floating-ui/utils/-/utils-0.2.10.tgz", {}, "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ=="], + + "@formatjs/ecma402-abstract": ["@formatjs/ecma402-abstract@2.3.6", "https://registry.npmjs.com/@formatjs/ecma402-abstract/-/ecma402-abstract-2.3.6.tgz", { "dependencies": { "@formatjs/fast-memoize": "2.2.7", "@formatjs/intl-localematcher": "0.6.2", "decimal.js": "^10.4.3", "tslib": "^2.8.0" } }, "sha512-HJnTFeRM2kVFVr5gr5kH1XP6K0JcJtE7Lzvtr3FS/so5f1kpsqqqxy5JF+FRaO6H2qmcMfAUIox7AJteieRtVw=="], + + "@formatjs/fast-memoize": ["@formatjs/fast-memoize@2.2.7", "https://registry.npmjs.com/@formatjs/fast-memoize/-/fast-memoize-2.2.7.tgz", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-Yabmi9nSvyOMrlSeGGWDiH7rf3a7sIwplbvo/dlz9WCIjzIQAfy1RMf4S0X3yG724n5Ghu2GmEl5NJIV6O9sZQ=="], + + "@formatjs/icu-messageformat-parser": ["@formatjs/icu-messageformat-parser@2.11.4", "https://registry.npmjs.com/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.11.4.tgz", { "dependencies": { "@formatjs/ecma402-abstract": "2.3.6", "@formatjs/icu-skeleton-parser": "1.8.16", "tslib": "^2.8.0" } }, "sha512-7kR78cRrPNB4fjGFZg3Rmj5aah8rQj9KPzuLsmcSn4ipLXQvC04keycTI1F7kJYDwIXtT2+7IDEto842CfZBtw=="], + + "@formatjs/icu-skeleton-parser": ["@formatjs/icu-skeleton-parser@1.8.16", "https://registry.npmjs.com/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.16.tgz", { "dependencies": { "@formatjs/ecma402-abstract": "2.3.6", "tslib": "^2.8.0" } }, "sha512-H13E9Xl+PxBd8D5/6TVUluSpxGNvFSlN/b3coUp0e0JpuWXXnQDiavIpY3NnvSp4xhEMoXyyBvVfdFX8jglOHQ=="], + + "@formatjs/intl-localematcher": ["@formatjs/intl-localematcher@0.5.10", "https://registry.npmjs.com/@formatjs/intl-localematcher/-/intl-localematcher-0.5.10.tgz", { "dependencies": { "tslib": "2" } }, "sha512-af3qATX+m4Rnd9+wHcjJ4w2ijq+rAVP3CCinJQvFv1kgSu1W6jypUmvleJxcewdxmutM8dmIRZFxO/IQBZmP2Q=="], + + "@hookform/resolvers": ["@hookform/resolvers@5.2.2", "https://registry.npmjs.com/@hookform/resolvers/-/resolvers-5.2.2.tgz", { "dependencies": { "@standard-schema/utils": "^0.3.0" }, "peerDependencies": { "react-hook-form": "^7.55.0" } }, "sha512-A/IxlMLShx3KjV/HeTcTfaMxdwy690+L/ZADoeaTltLx+CVuzkeVIPuybK3jrRfw7YZnmdKsVVHAlEPIAEUNlA=="], + + "@humanfs/core": ["@humanfs/core@0.19.1", "https://registry.npmjs.com/@humanfs/core/-/core-0.19.1.tgz", {}, "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA=="], + + "@humanfs/node": ["@humanfs/node@0.16.7", "https://registry.npmjs.com/@humanfs/node/-/node-0.16.7.tgz", { "dependencies": { "@humanfs/core": "^0.19.1", "@humanwhocodes/retry": "^0.4.0" } }, "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ=="], + + "@humanwhocodes/module-importer": ["@humanwhocodes/module-importer@1.0.1", "https://registry.npmjs.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", {}, "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA=="], + + "@humanwhocodes/retry": ["@humanwhocodes/retry@0.4.3", "https://registry.npmjs.com/@humanwhocodes/retry/-/retry-0.4.3.tgz", {}, "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ=="], + + "@img/colour": ["@img/colour@1.0.0", "https://registry.npmjs.com/@img/colour/-/colour-1.0.0.tgz", {}, "sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw=="], + + "@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.34.5", "https://registry.npmjs.com/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.2.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w=="], + + "@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.34.5", "https://registry.npmjs.com/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.2.4" }, "os": "darwin", "cpu": "x64" }, "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw=="], + + "@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.2.4", "https://registry.npmjs.com/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz", { "os": "darwin", "cpu": "arm64" }, "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g=="], + + "@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.2.4", "https://registry.npmjs.com/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz", { "os": "darwin", "cpu": "x64" }, "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg=="], + + "@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.2.4", "https://registry.npmjs.com/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz", { "os": "linux", "cpu": "arm" }, "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A=="], + + "@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.2.4", "https://registry.npmjs.com/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz", { "os": "linux", "cpu": "arm64" }, "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw=="], + + "@img/sharp-libvips-linux-ppc64": ["@img/sharp-libvips-linux-ppc64@1.2.4", "https://registry.npmjs.com/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz", { "os": "linux", "cpu": "ppc64" }, "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA=="], + + "@img/sharp-libvips-linux-riscv64": ["@img/sharp-libvips-linux-riscv64@1.2.4", "https://registry.npmjs.com/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz", { "os": "linux", "cpu": "none" }, "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA=="], + + "@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.2.4", "https://registry.npmjs.com/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz", { "os": "linux", "cpu": "s390x" }, "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ=="], + + "@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.2.4", "https://registry.npmjs.com/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz", { "os": "linux", "cpu": "x64" }, "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw=="], + + "@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.2.4", "https://registry.npmjs.com/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz", { "os": "linux", "cpu": "arm64" }, "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw=="], + + "@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.2.4", "https://registry.npmjs.com/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.4.tgz", { "os": "linux", "cpu": "x64" }, "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg=="], + + "@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.34.5", "https://registry.npmjs.com/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.2.4" }, "os": "linux", "cpu": "arm" }, "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw=="], + + "@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.34.5", "https://registry.npmjs.com/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg=="], + + "@img/sharp-linux-ppc64": ["@img/sharp-linux-ppc64@0.34.5", "https://registry.npmjs.com/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.5.tgz", { "optionalDependencies": { "@img/sharp-libvips-linux-ppc64": "1.2.4" }, "os": "linux", "cpu": "ppc64" }, "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA=="], + + "@img/sharp-linux-riscv64": ["@img/sharp-linux-riscv64@0.34.5", "https://registry.npmjs.com/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.34.5.tgz", { "optionalDependencies": { "@img/sharp-libvips-linux-riscv64": "1.2.4" }, "os": "linux", "cpu": "none" }, "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw=="], + + "@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.34.5", "https://registry.npmjs.com/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.2.4" }, "os": "linux", "cpu": "s390x" }, "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg=="], + + "@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.34.5", "https://registry.npmjs.com/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ=="], + + "@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.34.5", "https://registry.npmjs.com/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg=="], + + "@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.34.5", "https://registry.npmjs.com/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q=="], + + "@img/sharp-wasm32": ["@img/sharp-wasm32@0.34.5", "https://registry.npmjs.com/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz", { "dependencies": { "@emnapi/runtime": "^1.7.0" }, "cpu": "none" }, "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw=="], + + "@img/sharp-win32-arm64": ["@img/sharp-win32-arm64@0.34.5", "https://registry.npmjs.com/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz", { "os": "win32", "cpu": "arm64" }, "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g=="], + + "@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.34.5", "https://registry.npmjs.com/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz", { "os": "win32", "cpu": "ia32" }, "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg=="], + + "@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.34.5", "https://registry.npmjs.com/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz", { "os": "win32", "cpu": "x64" }, "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw=="], + + "@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.13", "https://registry.npmjs.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA=="], + + "@jridgewell/remapping": ["@jridgewell/remapping@2.3.5", "https://registry.npmjs.com/@jridgewell/remapping/-/remapping-2.3.5.tgz", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ=="], + + "@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.2", "https://registry.npmjs.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", {}, "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="], + + "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "https://registry.npmjs.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="], + + "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.31", "https://registry.npmjs.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="], + + "@lexical/clipboard": ["@lexical/clipboard@0.35.0", "https://registry.npmjs.com/@lexical/clipboard/-/clipboard-0.35.0.tgz", { "dependencies": { "@lexical/html": "0.35.0", "@lexical/list": "0.35.0", "@lexical/selection": "0.35.0", "@lexical/utils": "0.35.0", "lexical": "0.35.0" } }, "sha512-ko7xSIIiayvDiqjNDX6fgH9RlcM6r9vrrvJYTcfGVBor5httx16lhIi0QJZ4+RNPvGtTjyFv4bwRmsixRRwImg=="], + + "@lexical/code": ["@lexical/code@0.35.0", "https://registry.npmjs.com/@lexical/code/-/code-0.35.0.tgz", { "dependencies": { "@lexical/utils": "0.35.0", "lexical": "0.35.0", "prismjs": "^1.30.0" } }, "sha512-ox4DZwETQ9IA7+DS6PN8RJNwSAF7RMjL7YTVODIqFZ5tUFIf+5xoCHbz7Fll0Bvixlp12hVH90xnLwTLRGpkKw=="], + + "@lexical/devtools-core": ["@lexical/devtools-core@0.35.0", "https://registry.npmjs.com/@lexical/devtools-core/-/devtools-core-0.35.0.tgz", { "dependencies": { "@lexical/html": "0.35.0", "@lexical/link": "0.35.0", "@lexical/mark": "0.35.0", "@lexical/table": "0.35.0", "@lexical/utils": "0.35.0", "lexical": "0.35.0" }, "peerDependencies": { "react": ">=17.x", "react-dom": ">=17.x" } }, "sha512-C2wwtsMCR6ZTfO0TqpSM17RLJWyfHmifAfCTjFtOJu15p3M6NO/nHYK5Mt7YMQteuS89mOjB4ng8iwoLEZ6QpQ=="], + + "@lexical/dragon": ["@lexical/dragon@0.35.0", "https://registry.npmjs.com/@lexical/dragon/-/dragon-0.35.0.tgz", { "dependencies": { "lexical": "0.35.0" } }, "sha512-SL6mT5pcqrt6hEbJ16vWxip5+r3uvMd0bQV5UUxuk+cxIeuP86iTgRh0HFR7SM2dRTYovL6/tM/O+8QLAUGTIg=="], + + "@lexical/hashtag": ["@lexical/hashtag@0.35.0", "https://registry.npmjs.com/@lexical/hashtag/-/hashtag-0.35.0.tgz", { "dependencies": { "@lexical/utils": "0.35.0", "lexical": "0.35.0" } }, "sha512-LYJWzXuO2ZjKsvQwrLkNZiS2TsjwYkKjlDgtugzejquTBQ/o/nfSn/MmVx6EkYLOYizaJemmZbz3IBh+u732FA=="], + + "@lexical/history": ["@lexical/history@0.35.0", "https://registry.npmjs.com/@lexical/history/-/history-0.35.0.tgz", { "dependencies": { "@lexical/utils": "0.35.0", "lexical": "0.35.0" } }, "sha512-onjDRLLxGbCfHexSxxrQaDaieIHyV28zCDrbxR5dxTfW8F8PxjuNyuaG0z6o468AXYECmclxkP+P4aT6poHEpQ=="], + + "@lexical/html": ["@lexical/html@0.35.0", "https://registry.npmjs.com/@lexical/html/-/html-0.35.0.tgz", { "dependencies": { "@lexical/selection": "0.35.0", "@lexical/utils": "0.35.0", "lexical": "0.35.0" } }, "sha512-rXGFE5S5rKsg3tVnr1s4iEgOfCApNXGpIFI3T2jGEShaCZ5HLaBY9NVBXnE9Nb49e9bkDkpZ8FZd1qokCbQXbw=="], + + "@lexical/link": ["@lexical/link@0.35.0", "https://registry.npmjs.com/@lexical/link/-/link-0.35.0.tgz", { "dependencies": { "@lexical/utils": "0.35.0", "lexical": "0.35.0" } }, "sha512-+0Wx6cBwO8TfdMzpkYFacsmgFh8X1rkiYbq3xoLvk3qV8upYxaMzK1s8Q1cpKmWyI0aZrU6z7fiK4vUqB7+69w=="], + + "@lexical/list": ["@lexical/list@0.35.0", "https://registry.npmjs.com/@lexical/list/-/list-0.35.0.tgz", { "dependencies": { "@lexical/selection": "0.35.0", "@lexical/utils": "0.35.0", "lexical": "0.35.0" } }, "sha512-owsmc8iwgExBX8sFe8fKTiwJVhYULt9hD1RZ/HwfaiEtRZZkINijqReOBnW2mJfRxBzhFSWc4NG3ISB+fHYzqw=="], + + "@lexical/mark": ["@lexical/mark@0.35.0", "https://registry.npmjs.com/@lexical/mark/-/mark-0.35.0.tgz", { "dependencies": { "@lexical/utils": "0.35.0", "lexical": "0.35.0" } }, "sha512-W0hwMTAVeexvpk9/+J6n1G/sNkpI/Meq1yeDazahFLLAwXLHtvhIAq2P/klgFknDy1hr8X7rcsQuN/bqKcKHYg=="], + + "@lexical/markdown": ["@lexical/markdown@0.35.0", "https://registry.npmjs.com/@lexical/markdown/-/markdown-0.35.0.tgz", { "dependencies": { "@lexical/code": "0.35.0", "@lexical/link": "0.35.0", "@lexical/list": "0.35.0", "@lexical/rich-text": "0.35.0", "@lexical/text": "0.35.0", "@lexical/utils": "0.35.0", "lexical": "0.35.0" } }, "sha512-BlNyXZAt4gWidMw0SRWrhBETY1BpPglFBZI7yzfqukFqgXRh7HUQA28OYeI/nsx9pgNob8TiUduUwShqqvOdEA=="], + + "@lexical/offset": ["@lexical/offset@0.35.0", "https://registry.npmjs.com/@lexical/offset/-/offset-0.35.0.tgz", { "dependencies": { "lexical": "0.35.0" } }, "sha512-DRE4Df6qYf2XiV6foh6KpGNmGAv2ANqt3oVXpyS6W8hTx3+cUuAA1APhCZmLNuU107um4zmHym7taCu6uXW5Yg=="], + + "@lexical/overflow": ["@lexical/overflow@0.35.0", "https://registry.npmjs.com/@lexical/overflow/-/overflow-0.35.0.tgz", { "dependencies": { "lexical": "0.35.0" } }, "sha512-B25YvnJQTGlZcrNv7b0PJBLWq3tl8sql497OHfYYLem7EOMPKKDGJScJAKM/91D4H/mMAsx5gnA/XgKobriuTg=="], + + "@lexical/plain-text": ["@lexical/plain-text@0.35.0", "https://registry.npmjs.com/@lexical/plain-text/-/plain-text-0.35.0.tgz", { "dependencies": { "@lexical/clipboard": "0.35.0", "@lexical/selection": "0.35.0", "@lexical/utils": "0.35.0", "lexical": "0.35.0" } }, "sha512-lwBCUNMJf7Gujp2syVWMpKRahfbTv5Wq+H3HK1Q1gKH1P2IytPRxssCHvexw9iGwprSyghkKBlbF3fGpEdIJvQ=="], + + "@lexical/react": ["@lexical/react@0.35.0", "https://registry.npmjs.com/@lexical/react/-/react-0.35.0.tgz", { "dependencies": { "@floating-ui/react": "^0.27.8", "@lexical/devtools-core": "0.35.0", "@lexical/dragon": "0.35.0", "@lexical/hashtag": "0.35.0", "@lexical/history": "0.35.0", "@lexical/link": "0.35.0", "@lexical/list": "0.35.0", "@lexical/mark": "0.35.0", "@lexical/markdown": "0.35.0", "@lexical/overflow": "0.35.0", "@lexical/plain-text": "0.35.0", "@lexical/rich-text": "0.35.0", "@lexical/table": "0.35.0", "@lexical/text": "0.35.0", "@lexical/utils": "0.35.0", "@lexical/yjs": "0.35.0", "lexical": "0.35.0", "react-error-boundary": "^3.1.4" }, "peerDependencies": { "react": ">=17.x", "react-dom": ">=17.x" } }, "sha512-uYAZSqumH8tRymMef+A0f2hQvMwplKK9DXamcefnk3vSNDHHqRWQXpiUo6kD+rKWuQmMbVa5RW4xRQebXEW+1A=="], + + "@lexical/rich-text": ["@lexical/rich-text@0.35.0", "https://registry.npmjs.com/@lexical/rich-text/-/rich-text-0.35.0.tgz", { "dependencies": { "@lexical/clipboard": "0.35.0", "@lexical/selection": "0.35.0", "@lexical/utils": "0.35.0", "lexical": "0.35.0" } }, "sha512-qEHu8g7vOEzz9GUz1VIUxZBndZRJPh9iJUFI+qTDHj+tQqnd5LCs+G9yz6jgNfiuWWpezTp0i1Vz/udNEuDPKQ=="], + + "@lexical/selection": ["@lexical/selection@0.35.0", "https://registry.npmjs.com/@lexical/selection/-/selection-0.35.0.tgz", { "dependencies": { "lexical": "0.35.0" } }, "sha512-mMtDE7Q0nycXdFTTH/+ta6EBrBwxBB4Tg8QwsGntzQ1Cq//d838dpXpFjJOqHEeVHUqXpiuj+cBG8+bvz/rPRw=="], + + "@lexical/table": ["@lexical/table@0.35.0", "https://registry.npmjs.com/@lexical/table/-/table-0.35.0.tgz", { "dependencies": { "@lexical/clipboard": "0.35.0", "@lexical/utils": "0.35.0", "lexical": "0.35.0" } }, "sha512-9jlTlkVideBKwsEnEkqkdg7A3mije1SvmfiqoYnkl1kKJCLA5iH90ywx327PU0p+bdnURAytWUeZPXaEuEl2OA=="], + + "@lexical/text": ["@lexical/text@0.35.0", "https://registry.npmjs.com/@lexical/text/-/text-0.35.0.tgz", { "dependencies": { "lexical": "0.35.0" } }, "sha512-uaMh46BkysV8hK8wQwp5g/ByZW+2hPDt8ahAErxtf8NuzQem1FHG/f5RTchmFqqUDVHO3qLNTv4AehEGmXv8MA=="], + + "@lexical/utils": ["@lexical/utils@0.35.0", "https://registry.npmjs.com/@lexical/utils/-/utils-0.35.0.tgz", { "dependencies": { "@lexical/list": "0.35.0", "@lexical/selection": "0.35.0", "@lexical/table": "0.35.0", "lexical": "0.35.0" } }, "sha512-2H393EYDnFznYCDFOW3MHiRzwEO5M/UBhtUjvTT+9kc+qhX4U3zc8ixQalo5UmZ5B2nh7L/inXdTFzvSRXtsRA=="], + + "@lexical/yjs": ["@lexical/yjs@0.35.0", "https://registry.npmjs.com/@lexical/yjs/-/yjs-0.35.0.tgz", { "dependencies": { "@lexical/offset": "0.35.0", "@lexical/selection": "0.35.0", "lexical": "0.35.0" }, "peerDependencies": { "yjs": ">=13.5.22" } }, "sha512-3DSP7QpmTGYU9bN/yljP0PIao4tNIQtsR4ycauWNSawxs/GQCZtSmAPcLRnCm6qpqsDDjUtKjO/1Ej8FRp0m0w=="], + + "@lezer/common": ["@lezer/common@1.5.0", "https://registry.npmjs.com/@lezer/common/-/common-1.5.0.tgz", {}, "sha512-PNGcolp9hr4PJdXR4ix7XtixDrClScvtSCYW3rQG106oVMOOI+jFb+0+J3mbeL/53g1Zd6s0kJzaw6Ri68GmAA=="], + + "@lezer/cpp": ["@lezer/cpp@1.1.5", "https://registry.npmjs.com/@lezer/cpp/-/cpp-1.1.5.tgz", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-DIhSXmYtJKLehrjzDFN+2cPt547ySQ41nA8yqcDf/GxMc+YM736xqltFkvADL2M0VebU5I+3+4ks2Vv+Kyq3Aw=="], + + "@lezer/css": ["@lezer/css@1.3.0", "https://registry.npmjs.com/@lezer/css/-/css-1.3.0.tgz", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.3.0" } }, "sha512-pBL7hup88KbI7hXnZV3PQsn43DHy6TWyzuyk2AO9UyoXcDltvIdqWKE1dLL/45JVZ+YZkHe1WVHqO6wugZZWcw=="], + + "@lezer/go": ["@lezer/go@1.0.1", "https://registry.npmjs.com/@lezer/go/-/go-1.0.1.tgz", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.3.0" } }, "sha512-xToRsYxwsgJNHTgNdStpcvmbVuKxTapV0dM0wey1geMMRc9aggoVyKgzYp41D2/vVOx+Ii4hmE206kvxIXBVXQ=="], + + "@lezer/highlight": ["@lezer/highlight@1.2.3", "https://registry.npmjs.com/@lezer/highlight/-/highlight-1.2.3.tgz", { "dependencies": { "@lezer/common": "^1.3.0" } }, "sha512-qXdH7UqTvGfdVBINrgKhDsVTJTxactNNxLk7+UMwZhU13lMHaOBlJe9Vqp907ya56Y3+ed2tlqzys7jDkTmW0g=="], + + "@lezer/html": ["@lezer/html@1.3.13", "https://registry.npmjs.com/@lezer/html/-/html-1.3.13.tgz", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-oI7n6NJml729m7pjm9lvLvmXbdoMoi2f+1pwSDJkl9d68zGr7a9Btz8NdHTGQZtW2DA25ybeuv/SyDb9D5tseg=="], + + "@lezer/java": ["@lezer/java@1.1.3", "https://registry.npmjs.com/@lezer/java/-/java-1.1.3.tgz", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-yHquUfujwg6Yu4Fd1GNHCvidIvJwi/1Xu2DaKl/pfWIA2c1oXkVvawH3NyXhCaFx4OdlYBVX5wvz2f7Aoa/4Xw=="], + + "@lezer/javascript": ["@lezer/javascript@1.5.4", "https://registry.npmjs.com/@lezer/javascript/-/javascript-1.5.4.tgz", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.1.3", "@lezer/lr": "^1.3.0" } }, "sha512-vvYx3MhWqeZtGPwDStM2dwgljd5smolYD2lR2UyFcHfxbBQebqx8yjmFmxtJ/E6nN6u1D9srOiVWm3Rb4tmcUA=="], + + "@lezer/json": ["@lezer/json@1.0.3", "https://registry.npmjs.com/@lezer/json/-/json-1.0.3.tgz", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-BP9KzdF9Y35PDpv04r0VeSTKDeox5vVr3efE7eBbx3r4s3oNLfunchejZhjArmeieBH+nVOpgIiBJpEAv8ilqQ=="], + + "@lezer/lr": ["@lezer/lr@1.4.7", "https://registry.npmjs.com/@lezer/lr/-/lr-1.4.7.tgz", { "dependencies": { "@lezer/common": "^1.0.0" } }, "sha512-wNIFWdSUfX9Jc6ePMzxSPVgTVB4EOfDIwLQLWASyiUdHKaMsiilj9bYiGkGQCKVodd0x6bgQCV207PILGFCF9Q=="], + + "@lezer/markdown": ["@lezer/markdown@1.6.3", "https://registry.npmjs.com/@lezer/markdown/-/markdown-1.6.3.tgz", { "dependencies": { "@lezer/common": "^1.5.0", "@lezer/highlight": "^1.0.0" } }, "sha512-jpGm5Ps+XErS+xA4urw7ogEGkeZOahVQF21Z6oECF0sj+2liwZopd2+I8uH5I/vZsRuuze3OxBREIANLf6KKUw=="], + + "@lezer/php": ["@lezer/php@1.0.5", "https://registry.npmjs.com/@lezer/php/-/php-1.0.5.tgz", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.1.0" } }, "sha512-W7asp9DhM6q0W6DYNwIkLSKOvxlXRrif+UXBMxzsJUuqmhE7oVU+gS3THO4S/Puh7Xzgm858UNaFi6dxTP8dJA=="], + + "@lezer/python": ["@lezer/python@1.1.18", "https://registry.npmjs.com/@lezer/python/-/python-1.1.18.tgz", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-31FiUrU7z9+d/ElGQLJFXl+dKOdx0jALlP3KEOsGTex8mvj+SoE1FgItcHWK/axkxCHGUSpqIHt6JAWfWu9Rhg=="], + + "@lezer/rust": ["@lezer/rust@1.0.2", "https://registry.npmjs.com/@lezer/rust/-/rust-1.0.2.tgz", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-Lz5sIPBdF2FUXcWeCu1//ojFAZqzTQNRga0aYv6dYXqJqPfMdCAI0NzajWUd4Xijj1IKJLtjoXRPMvTKWBcqKg=="], + + "@lezer/sass": ["@lezer/sass@1.1.0", "https://registry.npmjs.com/@lezer/sass/-/sass-1.1.0.tgz", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-3mMGdCTUZ/84ArHOuXWQr37pnf7f+Nw9ycPUeKX+wu19b7pSMcZGLbaXwvD2APMBDOGxPmpK/O6S1v1EvLoqgQ=="], + + "@lezer/xml": ["@lezer/xml@1.0.6", "https://registry.npmjs.com/@lezer/xml/-/xml-1.0.6.tgz", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-CdDwirL0OEaStFue/66ZmFSeppuL6Dwjlk8qk153mSQwiSH/Dlri4GNymrNWnUmPl2Um7QfV1FO9KFUyX3Twww=="], + + "@lezer/yaml": ["@lezer/yaml@1.0.3", "https://registry.npmjs.com/@lezer/yaml/-/yaml-1.0.3.tgz", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.4.0" } }, "sha512-GuBLekbw9jDBDhGur82nuwkxKQ+a3W5H0GfaAthDXcAu+XdpS43VlnxA9E9hllkpSP5ellRDKjLLj7Lu9Wr6xA=="], + + "@marijn/find-cluster-break": ["@marijn/find-cluster-break@1.0.2", "https://registry.npmjs.com/@marijn/find-cluster-break/-/find-cluster-break-1.0.2.tgz", {}, "sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g=="], + + "@mdxeditor/editor": ["@mdxeditor/editor@3.52.3", "https://registry.npmjs.com/@mdxeditor/editor/-/editor-3.52.3.tgz", { "dependencies": { "@codemirror/commands": "^6.2.4", "@codemirror/lang-markdown": "^6.2.3", "@codemirror/language-data": "^6.5.1", "@codemirror/merge": "^6.4.0", "@codemirror/state": "^6.4.0", "@codemirror/view": "^6.23.0", "@codesandbox/sandpack-react": "^2.20.0", "@lexical/clipboard": "^0.35.0", "@lexical/link": "^0.35.0", "@lexical/list": "^0.35.0", "@lexical/markdown": "^0.35.0", "@lexical/plain-text": "^0.35.0", "@lexical/react": "^0.35.0", "@lexical/rich-text": "^0.35.0", "@lexical/selection": "^0.35.0", "@lexical/utils": "^0.35.0", "@mdxeditor/gurx": "^1.2.4", "@radix-ui/colors": "^3.0.0", "@radix-ui/react-dialog": "^1.1.11", "@radix-ui/react-icons": "^1.3.2", "@radix-ui/react-popover": "^1.1.11", "@radix-ui/react-popper": "^1.2.4", "@radix-ui/react-select": "^2.2.2", "@radix-ui/react-toggle-group": "^1.1.7", "@radix-ui/react-toolbar": "^1.1.7", "@radix-ui/react-tooltip": "^1.2.4", "classnames": "^2.3.2", "cm6-theme-basic-light": "^0.2.0", "codemirror": "^6.0.1", "downshift": "^7.6.0", "js-yaml": "4.1.1", "lexical": "^0.35.0", "mdast-util-directive": "^3.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-frontmatter": "^2.0.1", "mdast-util-gfm-strikethrough": "^2.0.0", "mdast-util-gfm-table": "^2.0.0", "mdast-util-gfm-task-list-item": "^2.0.0", "mdast-util-highlight-mark": "^1.2.2", "mdast-util-mdx": "^3.0.0", "mdast-util-mdx-jsx": "^3.0.0", "mdast-util-to-markdown": "^2.1.0", "micromark-extension-directive": "^3.0.0", "micromark-extension-frontmatter": "^2.0.0", "micromark-extension-gfm-strikethrough": "^2.0.0", "micromark-extension-gfm-table": "^2.0.0", "micromark-extension-gfm-task-list-item": "^2.0.1", "micromark-extension-highlight-mark": "^1.2.0", "micromark-extension-mdx-jsx": "^3.0.0", "micromark-extension-mdx-md": "^2.0.0", "micromark-extension-mdxjs": "^3.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.1", "micromark-util-symbol": "^2.0.0", "react-hook-form": "^7.56.1", "unidiff": "^1.0.2" }, "peerDependencies": { "react": ">= 18 || >= 19", "react-dom": ">= 18 || >= 19" } }, "sha512-hKPsNPx7cjxXPeiir0LjU2ZN5bWn7dWVxV8CaCddLztGc36e921ETNpu1AXo0+K7pxc7eBt/ExSw0WDOOk2Ibw=="], + + "@mdxeditor/gurx": ["@mdxeditor/gurx@1.2.4", "https://registry.npmjs.com/@mdxeditor/gurx/-/gurx-1.2.4.tgz", { "peerDependencies": { "react": ">= 18 || >= 19", "react-dom": ">= 18 || >= 19" } }, "sha512-9ZykIFYhKaXaaSPCs1cuI+FvYDegJjbKwmA4ASE/zY+hJY6EYqvoye4esiO85CjhOw9aoD/izD/CU78/egVqmg=="], + + "@microsoft/fetch-event-source": ["@microsoft/fetch-event-source@2.0.1", "https://registry.npmjs.com/@microsoft/fetch-event-source/-/fetch-event-source-2.0.1.tgz", {}, "sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA=="], + + "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@0.2.12", "https://registry.npmjs.com/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", { "dependencies": { "@emnapi/core": "^1.4.3", "@emnapi/runtime": "^1.4.3", "@tybys/wasm-util": "^0.10.0" } }, "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ=="], + + "@next/env": ["@next/env@16.1.3", "https://registry.npmjs.com/@next/env/-/env-16.1.3.tgz", {}, "sha512-BLP14oBOvZWXgfdJf9ao+VD8O30uE+x7PaV++QtACLX329WcRSJRO5YJ+Bcvu0Q+c/lei41TjSiFf6pXqnpbQA=="], + + "@next/eslint-plugin-next": ["@next/eslint-plugin-next@16.1.3", "https://registry.npmjs.com/@next/eslint-plugin-next/-/eslint-plugin-next-16.1.3.tgz", { "dependencies": { "fast-glob": "3.3.1" } }, "sha512-MqBh3ltFAy0AZCRFVdjVjjeV7nEszJDaVIpDAnkQcn8U9ib6OEwkSnuK6xdYxMGPhV/Y4IlY6RbDipPOpLfBqQ=="], + + "@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@16.1.3", "https://registry.npmjs.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.1.3.tgz", { "os": "darwin", "cpu": "arm64" }, "sha512-CpOD3lmig6VflihVoGxiR/l5Jkjfi4uLaOR4ziriMv0YMDoF6cclI+p5t2nstM8TmaFiY6PCTBgRWB57/+LiBA=="], + + "@next/swc-darwin-x64": ["@next/swc-darwin-x64@16.1.3", "https://registry.npmjs.com/@next/swc-darwin-x64/-/swc-darwin-x64-16.1.3.tgz", { "os": "darwin", "cpu": "x64" }, "sha512-aF4us2JXh0zn3hNxvL1Bx3BOuh8Lcw3p3Xnurlvca/iptrDH1BrpObwkw9WZra7L7/0qB9kjlREq3hN/4x4x+Q=="], + + "@next/swc-linux-arm64-gnu": ["@next/swc-linux-arm64-gnu@16.1.3", "https://registry.npmjs.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.1.3.tgz", { "os": "linux", "cpu": "arm64" }, "sha512-8VRkcpcfBtYvhGgXAF7U3MBx6+G1lACM1XCo1JyaUr4KmAkTNP8Dv2wdMq7BI+jqRBw3zQE7c57+lmp7jCFfKA=="], + + "@next/swc-linux-arm64-musl": ["@next/swc-linux-arm64-musl@16.1.3", "https://registry.npmjs.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.1.3.tgz", { "os": "linux", "cpu": "arm64" }, "sha512-UbFx69E2UP7MhzogJRMFvV9KdEn4sLGPicClwgqnLht2TEi204B71HuVfps3ymGAh0c44QRAF+ZmvZZhLLmhNg=="], + + "@next/swc-linux-x64-gnu": ["@next/swc-linux-x64-gnu@16.1.3", "https://registry.npmjs.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.1.3.tgz", { "os": "linux", "cpu": "x64" }, "sha512-SzGTfTjR5e9T+sZh5zXqG/oeRQufExxBF6MssXS7HPeZFE98JDhCRZXpSyCfWrWrYrzmnw/RVhlP2AxQm+wkRQ=="], + + "@next/swc-linux-x64-musl": ["@next/swc-linux-x64-musl@16.1.3", "https://registry.npmjs.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.1.3.tgz", { "os": "linux", "cpu": "x64" }, "sha512-HlrDpj0v+JBIvQex1mXHq93Mht5qQmfyci+ZNwGClnAQldSfxI6h0Vupte1dSR4ueNv4q7qp5kTnmLOBIQnGow=="], + + "@next/swc-win32-arm64-msvc": ["@next/swc-win32-arm64-msvc@16.1.3", "https://registry.npmjs.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.1.3.tgz", { "os": "win32", "cpu": "arm64" }, "sha512-3gFCp83/LSduZMSIa+lBREP7+5e7FxpdBoc9QrCdmp+dapmTK9I+SLpY60Z39GDmTXSZA4huGg9WwmYbr6+WRw=="], + + "@next/swc-win32-x64-msvc": ["@next/swc-win32-x64-msvc@16.1.3", "https://registry.npmjs.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.1.3.tgz", { "os": "win32", "cpu": "x64" }, "sha512-1SZVfFT8zmMB+Oblrh5OKDvUo5mYQOkX2We6VGzpg7JUVZlqe4DYOFGKYZKTweSx1gbMixyO1jnFT4thU+nNHQ=="], + + "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "https://registry.npmjs.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="], + + "@nodelib/fs.stat": ["@nodelib/fs.stat@2.0.5", "https://registry.npmjs.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", {}, "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="], + + "@nodelib/fs.walk": ["@nodelib/fs.walk@1.2.8", "https://registry.npmjs.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="], + + "@nolyfill/is-core-module": ["@nolyfill/is-core-module@1.0.39", "https://registry.npmjs.com/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", {}, "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA=="], + + "@open-draft/deferred-promise": ["@open-draft/deferred-promise@2.2.0", "https://registry.npmjs.com/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz", {}, "sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA=="], + + "@panva/hkdf": ["@panva/hkdf@1.2.1", "https://registry.npmjs.com/@panva/hkdf/-/hkdf-1.2.1.tgz", {}, "sha512-6oclG6Y3PiDFcoyk8srjLfVKyMfVCKJ27JwNPViuXziFpmdz+MZnZN/aKY0JGXgYuO/VghU0jcOAZgWXZ1Dmrw=="], + + "@parcel/watcher": ["@parcel/watcher@2.5.4", "https://registry.npmjs.com/@parcel/watcher/-/watcher-2.5.4.tgz", { "dependencies": { "detect-libc": "^2.0.3", "is-glob": "^4.0.3", "node-addon-api": "^7.0.0", "picomatch": "^4.0.3" }, "optionalDependencies": { "@parcel/watcher-android-arm64": "2.5.4", "@parcel/watcher-darwin-arm64": "2.5.4", "@parcel/watcher-darwin-x64": "2.5.4", "@parcel/watcher-freebsd-x64": "2.5.4", "@parcel/watcher-linux-arm-glibc": "2.5.4", "@parcel/watcher-linux-arm-musl": "2.5.4", "@parcel/watcher-linux-arm64-glibc": "2.5.4", "@parcel/watcher-linux-arm64-musl": "2.5.4", "@parcel/watcher-linux-x64-glibc": "2.5.4", "@parcel/watcher-linux-x64-musl": "2.5.4", "@parcel/watcher-win32-arm64": "2.5.4", "@parcel/watcher-win32-ia32": "2.5.4", "@parcel/watcher-win32-x64": "2.5.4" } }, "sha512-WYa2tUVV5HiArWPB3ydlOc4R2ivq0IDrlqhMi3l7mVsFEXNcTfxYFPIHXHXIh/ca/y/V5N4E1zecyxdIBjYnkQ=="], + + "@parcel/watcher-android-arm64": ["@parcel/watcher-android-arm64@2.5.4", "https://registry.npmjs.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.4.tgz", { "os": "android", "cpu": "arm64" }, "sha512-hoh0vx4v+b3BNI7Cjoy2/B0ARqcwVNrzN/n7DLq9ZB4I3lrsvhrkCViJyfTj/Qi5xM9YFiH4AmHGK6pgH1ss7g=="], + + "@parcel/watcher-darwin-arm64": ["@parcel/watcher-darwin-arm64@2.5.4", "https://registry.npmjs.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.4.tgz", { "os": "darwin", "cpu": "arm64" }, "sha512-kphKy377pZiWpAOyTgQYPE5/XEKVMaj6VUjKT5VkNyUJlr2qZAn8gIc7CPzx+kbhvqHDT9d7EqdOqRXT6vk0zw=="], + + "@parcel/watcher-darwin-x64": ["@parcel/watcher-darwin-x64@2.5.4", "https://registry.npmjs.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.4.tgz", { "os": "darwin", "cpu": "x64" }, "sha512-UKaQFhCtNJW1A9YyVz3Ju7ydf6QgrpNQfRZ35wNKUhTQ3dxJ/3MULXN5JN/0Z80V/KUBDGa3RZaKq1EQT2a2gg=="], + + "@parcel/watcher-freebsd-x64": ["@parcel/watcher-freebsd-x64@2.5.4", "https://registry.npmjs.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.4.tgz", { "os": "freebsd", "cpu": "x64" }, "sha512-Dib0Wv3Ow/m2/ttvLdeI2DBXloO7t3Z0oCp4bAb2aqyqOjKPPGrg10pMJJAQ7tt8P4V2rwYwywkDhUia/FgS+Q=="], + + "@parcel/watcher-linux-arm-glibc": ["@parcel/watcher-linux-arm-glibc@2.5.4", "https://registry.npmjs.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.4.tgz", { "os": "linux", "cpu": "arm" }, "sha512-I5Vb769pdf7Q7Sf4KNy8Pogl/URRCKu9ImMmnVKYayhynuyGYMzuI4UOWnegQNa2sGpsPSbzDsqbHNMyeyPCgw=="], + + "@parcel/watcher-linux-arm-musl": ["@parcel/watcher-linux-arm-musl@2.5.4", "https://registry.npmjs.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.4.tgz", { "os": "linux", "cpu": "arm" }, "sha512-kGO8RPvVrcAotV4QcWh8kZuHr9bXi9a3bSZw7kFarYR0+fGliU7hd/zevhjw8fnvIKG3J9EO5G6sXNGCSNMYPQ=="], + + "@parcel/watcher-linux-arm64-glibc": ["@parcel/watcher-linux-arm64-glibc@2.5.4", "https://registry.npmjs.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.4.tgz", { "os": "linux", "cpu": "arm64" }, "sha512-KU75aooXhqGFY2W5/p8DYYHt4hrjHZod8AhcGAmhzPn/etTa+lYCDB2b1sJy3sWJ8ahFVTdy+EbqSBvMx3iFlw=="], + + "@parcel/watcher-linux-arm64-musl": ["@parcel/watcher-linux-arm64-musl@2.5.4", "https://registry.npmjs.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.4.tgz", { "os": "linux", "cpu": "arm64" }, "sha512-Qx8uNiIekVutnzbVdrgSanM+cbpDD3boB1f8vMtnuG5Zau4/bdDbXyKwIn0ToqFhIuob73bcxV9NwRm04/hzHQ=="], + + "@parcel/watcher-linux-x64-glibc": ["@parcel/watcher-linux-x64-glibc@2.5.4", "https://registry.npmjs.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.4.tgz", { "os": "linux", "cpu": "x64" }, "sha512-UYBQvhYmgAv61LNUn24qGQdjtycFBKSK3EXr72DbJqX9aaLbtCOO8+1SkKhD/GNiJ97ExgcHBrukcYhVjrnogA=="], + + "@parcel/watcher-linux-x64-musl": ["@parcel/watcher-linux-x64-musl@2.5.4", "https://registry.npmjs.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.4.tgz", { "os": "linux", "cpu": "x64" }, "sha512-YoRWCVgxv8akZrMhdyVi6/TyoeeMkQ0PGGOf2E4omODrvd1wxniXP+DBynKoHryStks7l+fDAMUBRzqNHrVOpg=="], + + "@parcel/watcher-win32-arm64": ["@parcel/watcher-win32-arm64@2.5.4", "https://registry.npmjs.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.4.tgz", { "os": "win32", "cpu": "arm64" }, "sha512-iby+D/YNXWkiQNYcIhg8P5hSjzXEHaQrk2SLrWOUD7VeC4Ohu0WQvmV+HDJokZVJ2UjJ4AGXW3bx7Lls9Ln4TQ=="], + + "@parcel/watcher-win32-ia32": ["@parcel/watcher-win32-ia32@2.5.4", "https://registry.npmjs.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.4.tgz", { "os": "win32", "cpu": "ia32" }, "sha512-vQN+KIReG0a2ZDpVv8cgddlf67J8hk1WfZMMP7sMeZmJRSmEax5xNDNWKdgqSe2brOKTQQAs3aCCUal2qBHAyg=="], + + "@parcel/watcher-win32-x64": ["@parcel/watcher-win32-x64@2.5.4", "https://registry.npmjs.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.4.tgz", { "os": "win32", "cpu": "x64" }, "sha512-3A6efb6BOKwyw7yk9ro2vus2YTt2nvcd56AuzxdMiVOxL9umDyN5PKkKfZ/gZ9row41SjVmTVQNWQhaRRGpOKw=="], + + "@prisma/client": ["@prisma/client@6.19.2", "https://registry.npmjs.com/@prisma/client/-/client-6.19.2.tgz", { "peerDependencies": { "prisma": "*", "typescript": ">=5.1.0" }, "optionalPeers": ["prisma", "typescript"] }, "sha512-gR2EMvfK/aTxsuooaDA32D8v+us/8AAet+C3J1cc04SW35FPdZYgLF+iN4NDLUgAaUGTKdAB0CYenu1TAgGdMg=="], + + "@prisma/config": ["@prisma/config@6.19.2", "https://registry.npmjs.com/@prisma/config/-/config-6.19.2.tgz", { "dependencies": { "c12": "3.1.0", "deepmerge-ts": "7.1.5", "effect": "3.18.4", "empathic": "2.0.0" } }, "sha512-kadBGDl+aUswv/zZMk9Mx0C8UZs1kjao8H9/JpI4Wh4SHZaM7zkTwiKn/iFLfRg+XtOAo/Z/c6pAYhijKl0nzQ=="], + + "@prisma/debug": ["@prisma/debug@6.19.2", "https://registry.npmjs.com/@prisma/debug/-/debug-6.19.2.tgz", {}, "sha512-lFnEZsLdFLmEVCVNdskLDCL8Uup41GDfU0LUfquw+ercJC8ODTuL0WNKgOKmYxCJVvFwf0OuZBzW99DuWmoH2A=="], + + "@prisma/engines": ["@prisma/engines@6.19.2", "https://registry.npmjs.com/@prisma/engines/-/engines-6.19.2.tgz", { "dependencies": { "@prisma/debug": "6.19.2", "@prisma/engines-version": "7.1.1-3.c2990dca591cba766e3b7ef5d9e8a84796e47ab7", "@prisma/fetch-engine": "6.19.2", "@prisma/get-platform": "6.19.2" } }, "sha512-TTkJ8r+uk/uqczX40wb+ODG0E0icVsMgwCTyTHXehaEfb0uo80M9g1aW1tEJrxmFHeOZFXdI2sTA1j1AgcHi4A=="], + + "@prisma/engines-version": ["@prisma/engines-version@7.1.1-3.c2990dca591cba766e3b7ef5d9e8a84796e47ab7", "https://registry.npmjs.com/@prisma/engines-version/-/engines-version-7.1.1-3.c2990dca591cba766e3b7ef5d9e8a84796e47ab7.tgz", {}, "sha512-03bgb1VD5gvuumNf+7fVGBzfpJPjmqV423l/WxsWk2cNQ42JD0/SsFBPhN6z8iAvdHs07/7ei77SKu7aZfq8bA=="], + + "@prisma/fetch-engine": ["@prisma/fetch-engine@6.19.2", "https://registry.npmjs.com/@prisma/fetch-engine/-/fetch-engine-6.19.2.tgz", { "dependencies": { "@prisma/debug": "6.19.2", "@prisma/engines-version": "7.1.1-3.c2990dca591cba766e3b7ef5d9e8a84796e47ab7", "@prisma/get-platform": "6.19.2" } }, "sha512-h4Ff4Pho+SR1S8XerMCC12X//oY2bG3Iug/fUnudfcXEUnIeRiBdXHFdGlGOgQ3HqKgosTEhkZMvGM9tWtYC+Q=="], + + "@prisma/get-platform": ["@prisma/get-platform@6.19.2", "https://registry.npmjs.com/@prisma/get-platform/-/get-platform-6.19.2.tgz", { "dependencies": { "@prisma/debug": "6.19.2" } }, "sha512-PGLr06JUSTqIvztJtAzIxOwtWKtJm5WwOG6xpsgD37Rc84FpfUBGLKz65YpJBGtkRQGXTYEFie7pYALocC3MtA=="], + + "@radix-ui/colors": ["@radix-ui/colors@3.0.0", "https://registry.npmjs.com/@radix-ui/colors/-/colors-3.0.0.tgz", {}, "sha512-FUOsGBkHrYJwCSEtWRCIfQbZG7q1e6DgxCIOe1SUQzDe/7rXXeA47s8yCn6fuTNQAj1Zq4oTFi9Yjp3wzElcxg=="], + + "@radix-ui/number": ["@radix-ui/number@1.1.1", "https://registry.npmjs.com/@radix-ui/number/-/number-1.1.1.tgz", {}, "sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g=="], + + "@radix-ui/primitive": ["@radix-ui/primitive@1.1.3", "https://registry.npmjs.com/@radix-ui/primitive/-/primitive-1.1.3.tgz", {}, "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg=="], + + "@radix-ui/react-accordion": ["@radix-ui/react-accordion@1.2.12", "https://registry.npmjs.com/@radix-ui/react-accordion/-/react-accordion-1.2.12.tgz", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collapsible": "1.1.12", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-T4nygeh9YE9dLRPhAHSeOZi7HBXo+0kYIPJXayZfvWOWA0+n3dESrZbjfDPUABkUNym6Hd+f2IR113To8D2GPA=="], + + "@radix-ui/react-alert-dialog": ["@radix-ui/react-alert-dialog@1.1.15", "https://registry.npmjs.com/@radix-ui/react-alert-dialog/-/react-alert-dialog-1.1.15.tgz", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dialog": "1.1.15", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-oTVLkEw5GpdRe29BqJ0LSDFWI3qu0vR1M0mUkOQWDIUnY/QIkLpgDMWuKxP94c2NAC2LGcgVhG1ImF3jkZ5wXw=="], + + "@radix-ui/react-arrow": ["@radix-ui/react-arrow@1.1.7", "https://registry.npmjs.com/@radix-ui/react-arrow/-/react-arrow-1.1.7.tgz", { "dependencies": { "@radix-ui/react-primitive": "2.1.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w=="], + + "@radix-ui/react-aspect-ratio": ["@radix-ui/react-aspect-ratio@1.1.8", "https://registry.npmjs.com/@radix-ui/react-aspect-ratio/-/react-aspect-ratio-1.1.8.tgz", { "dependencies": { "@radix-ui/react-primitive": "2.1.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-5nZrJTF7gH+e0nZS7/QxFz6tJV4VimhQb1avEgtsJxvvIp5JilL+c58HICsKzPxghdwaDt48hEfPM1au4zGy+w=="], + + "@radix-ui/react-avatar": ["@radix-ui/react-avatar@1.1.11", "https://registry.npmjs.com/@radix-ui/react-avatar/-/react-avatar-1.1.11.tgz", { "dependencies": { "@radix-ui/react-context": "1.1.3", "@radix-ui/react-primitive": "2.1.4", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-is-hydrated": "0.1.0", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-0Qk603AHGV28BOBO34p7IgD5m+V5Sg/YovfayABkoDDBM5d3NCx0Mp4gGrjzLGes1jV5eNOE1r3itqOR33VC6Q=="], + + "@radix-ui/react-checkbox": ["@radix-ui/react-checkbox@1.3.3", "https://registry.npmjs.com/@radix-ui/react-checkbox/-/react-checkbox-1.3.3.tgz", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-previous": "1.1.1", "@radix-ui/react-use-size": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-wBbpv+NQftHDdG86Qc0pIyXk5IR3tM8Vd0nWLKDcX8nNn4nXFOFwsKuqw2okA/1D/mpaAkmuyndrPJTYDNZtFw=="], + + "@radix-ui/react-collapsible": ["@radix-ui/react-collapsible@1.1.12", "https://registry.npmjs.com/@radix-ui/react-collapsible/-/react-collapsible-1.1.12.tgz", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Uu+mSh4agx2ib1uIGPP4/CKNULyajb3p92LsVXmH2EHVMTfZWpll88XJ0j4W0z3f8NK1eYl1+Mf/szHPmcHzyA=="], + + "@radix-ui/react-collection": ["@radix-ui/react-collection@1.1.7", "https://registry.npmjs.com/@radix-ui/react-collection/-/react-collection-1.1.7.tgz", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw=="], + + "@radix-ui/react-compose-refs": ["@radix-ui/react-compose-refs@1.1.2", "https://registry.npmjs.com/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg=="], + + "@radix-ui/react-context": ["@radix-ui/react-context@1.1.2", "https://registry.npmjs.com/@radix-ui/react-context/-/react-context-1.1.2.tgz", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA=="], + + "@radix-ui/react-context-menu": ["@radix-ui/react-context-menu@2.2.16", "https://registry.npmjs.com/@radix-ui/react-context-menu/-/react-context-menu-2.2.16.tgz", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-menu": "2.1.16", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-O8morBEW+HsVG28gYDZPTrT9UUovQUlJue5YO836tiTJhuIWBm/zQHc7j388sHWtdH/xUZurK9olD2+pcqx5ww=="], + + "@radix-ui/react-dialog": ["@radix-ui/react-dialog@1.1.15", "https://registry.npmjs.com/@radix-ui/react-dialog/-/react-dialog-1.1.15.tgz", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-focus-guards": "1.1.3", "@radix-ui/react-focus-scope": "1.1.7", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-use-controllable-state": "1.2.2", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw=="], + + "@radix-ui/react-direction": ["@radix-ui/react-direction@1.1.1", "https://registry.npmjs.com/@radix-ui/react-direction/-/react-direction-1.1.1.tgz", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw=="], + + "@radix-ui/react-dismissable-layer": ["@radix-ui/react-dismissable-layer@1.1.11", "https://registry.npmjs.com/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.11.tgz", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-escape-keydown": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg=="], + + "@radix-ui/react-dropdown-menu": ["@radix-ui/react-dropdown-menu@2.1.16", "https://registry.npmjs.com/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.16.tgz", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-menu": "2.1.16", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-1PLGQEynI/3OX/ftV54COn+3Sud/Mn8vALg2rWnBLnRaGtJDduNW/22XjlGgPdpcIbiQxjKtb7BkcjP00nqfJw=="], + + "@radix-ui/react-focus-guards": ["@radix-ui/react-focus-guards@1.1.3", "https://registry.npmjs.com/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.3.tgz", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw=="], + + "@radix-ui/react-focus-scope": ["@radix-ui/react-focus-scope@1.1.7", "https://registry.npmjs.com/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.7.tgz", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw=="], + + "@radix-ui/react-hover-card": ["@radix-ui/react-hover-card@1.1.15", "https://registry.npmjs.com/@radix-ui/react-hover-card/-/react-hover-card-1.1.15.tgz", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-popper": "1.2.8", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-qgTkjNT1CfKMoP0rcasmlH2r1DAiYicWsDsufxl940sT2wHNEWWv6FMWIQXWhVdmC1d/HYfbhQx60KYyAtKxjg=="], + + "@radix-ui/react-icons": ["@radix-ui/react-icons@1.3.2", "https://registry.npmjs.com/@radix-ui/react-icons/-/react-icons-1.3.2.tgz", { "peerDependencies": { "react": "^16.x || ^17.x || ^18.x || ^19.0.0 || ^19.0.0-rc" } }, "sha512-fyQIhGDhzfc9pK2kH6Pl9c4BDJGfMkPqkyIgYDthyNYoNg3wVhoJMMh19WS4Up/1KMPFVpNsT2q3WmXn2N1m6g=="], + + "@radix-ui/react-id": ["@radix-ui/react-id@1.1.1", "https://registry.npmjs.com/@radix-ui/react-id/-/react-id-1.1.1.tgz", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg=="], + + "@radix-ui/react-label": ["@radix-ui/react-label@2.1.8", "https://registry.npmjs.com/@radix-ui/react-label/-/react-label-2.1.8.tgz", { "dependencies": { "@radix-ui/react-primitive": "2.1.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-FmXs37I6hSBVDlO4y764TNz1rLgKwjJMQ0EGte6F3Cb3f4bIuHB/iLa/8I9VKkmOy+gNHq8rql3j686ACVV21A=="], + + "@radix-ui/react-menu": ["@radix-ui/react-menu@2.1.16", "https://registry.npmjs.com/@radix-ui/react-menu/-/react-menu-2.1.16.tgz", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-focus-guards": "1.1.3", "@radix-ui/react-focus-scope": "1.1.7", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-popper": "1.2.8", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-roving-focus": "1.1.11", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-use-callback-ref": "1.1.1", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg=="], + + "@radix-ui/react-menubar": ["@radix-ui/react-menubar@1.1.16", "https://registry.npmjs.com/@radix-ui/react-menubar/-/react-menubar-1.1.16.tgz", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-menu": "2.1.16", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-roving-focus": "1.1.11", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-EB1FktTz5xRRi2Er974AUQZWg2yVBb1yjip38/lgwtCVRd3a+maUoGHN/xs9Yv8SY8QwbSEb+YrxGadVWbEutA=="], + + "@radix-ui/react-navigation-menu": ["@radix-ui/react-navigation-menu@1.2.14", "https://registry.npmjs.com/@radix-ui/react-navigation-menu/-/react-navigation-menu-1.2.14.tgz", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-layout-effect": "1.1.1", "@radix-ui/react-use-previous": "1.1.1", "@radix-ui/react-visually-hidden": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-YB9mTFQvCOAQMHU+C/jVl96WmuWeltyUEpRJJky51huhds5W2FQr1J8D/16sQlf0ozxkPK8uF3niQMdUwZPv5w=="], + + "@radix-ui/react-popover": ["@radix-ui/react-popover@1.1.15", "https://registry.npmjs.com/@radix-ui/react-popover/-/react-popover-1.1.15.tgz", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-focus-guards": "1.1.3", "@radix-ui/react-focus-scope": "1.1.7", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-popper": "1.2.8", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-use-controllable-state": "1.2.2", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA=="], + + "@radix-ui/react-popper": ["@radix-ui/react-popper@1.2.8", "https://registry.npmjs.com/@radix-ui/react-popper/-/react-popper-1.2.8.tgz", { "dependencies": { "@floating-ui/react-dom": "^2.0.0", "@radix-ui/react-arrow": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-layout-effect": "1.1.1", "@radix-ui/react-use-rect": "1.1.1", "@radix-ui/react-use-size": "1.1.1", "@radix-ui/rect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw=="], + + "@radix-ui/react-portal": ["@radix-ui/react-portal@1.1.9", "https://registry.npmjs.com/@radix-ui/react-portal/-/react-portal-1.1.9.tgz", { "dependencies": { "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ=="], + + "@radix-ui/react-presence": ["@radix-ui/react-presence@1.1.5", "https://registry.npmjs.com/@radix-ui/react-presence/-/react-presence-1.1.5.tgz", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ=="], + + "@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "https://registry.npmjs.com/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], + + "@radix-ui/react-progress": ["@radix-ui/react-progress@1.1.8", "https://registry.npmjs.com/@radix-ui/react-progress/-/react-progress-1.1.8.tgz", { "dependencies": { "@radix-ui/react-context": "1.1.3", "@radix-ui/react-primitive": "2.1.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-+gISHcSPUJ7ktBy9RnTqbdKW78bcGke3t6taawyZ71pio1JewwGSJizycs7rLhGTvMJYCQB1DBK4KQsxs7U8dA=="], + + "@radix-ui/react-radio-group": ["@radix-ui/react-radio-group@1.3.8", "https://registry.npmjs.com/@radix-ui/react-radio-group/-/react-radio-group-1.3.8.tgz", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-roving-focus": "1.1.11", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-previous": "1.1.1", "@radix-ui/react-use-size": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-VBKYIYImA5zsxACdisNQ3BjCBfmbGH3kQlnFVqlWU4tXwjy7cGX8ta80BcrO+WJXIn5iBylEH3K6ZTlee//lgQ=="], + + "@radix-ui/react-roving-focus": ["@radix-ui/react-roving-focus@1.1.11", "https://registry.npmjs.com/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.11.tgz", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA=="], + + "@radix-ui/react-scroll-area": ["@radix-ui/react-scroll-area@1.2.10", "https://registry.npmjs.com/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.10.tgz", { "dependencies": { "@radix-ui/number": "1.1.1", "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-tAXIa1g3sM5CGpVT0uIbUx/U3Gs5N8T52IICuCtObaos1S8fzsrPXG5WObkQN3S6NVl6wKgPhAIiBGbWnvc97A=="], + + "@radix-ui/react-select": ["@radix-ui/react-select@2.2.6", "https://registry.npmjs.com/@radix-ui/react-select/-/react-select-2.2.6.tgz", { "dependencies": { "@radix-ui/number": "1.1.1", "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-focus-guards": "1.1.3", "@radix-ui/react-focus-scope": "1.1.7", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-popper": "1.2.8", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-layout-effect": "1.1.1", "@radix-ui/react-use-previous": "1.1.1", "@radix-ui/react-visually-hidden": "1.2.3", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-I30RydO+bnn2PQztvo25tswPH+wFBjehVGtmagkU78yMdwTwVf12wnAOF+AeP8S2N8xD+5UPbGhkUfPyvT+mwQ=="], + + "@radix-ui/react-separator": ["@radix-ui/react-separator@1.1.8", "https://registry.npmjs.com/@radix-ui/react-separator/-/react-separator-1.1.8.tgz", { "dependencies": { "@radix-ui/react-primitive": "2.1.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-sDvqVY4itsKwwSMEe0jtKgfTh+72Sy3gPmQpjqcQneqQ4PFmr/1I0YA+2/puilhggCe2gJcx5EBAYFkWkdpa5g=="], + + "@radix-ui/react-slider": ["@radix-ui/react-slider@1.3.6", "https://registry.npmjs.com/@radix-ui/react-slider/-/react-slider-1.3.6.tgz", { "dependencies": { "@radix-ui/number": "1.1.1", "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-layout-effect": "1.1.1", "@radix-ui/react-use-previous": "1.1.1", "@radix-ui/react-use-size": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-JPYb1GuM1bxfjMRlNLE+BcmBC8onfCi60Blk7OBqi2MLTFdS+8401U4uFjnwkOr49BLmXxLC6JHkvAsx5OJvHw=="], + + "@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.4", "https://registry.npmjs.com/@radix-ui/react-slot/-/react-slot-1.2.4.tgz", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA=="], + + "@radix-ui/react-switch": ["@radix-ui/react-switch@1.2.6", "https://registry.npmjs.com/@radix-ui/react-switch/-/react-switch-1.2.6.tgz", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-previous": "1.1.1", "@radix-ui/react-use-size": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-bByzr1+ep1zk4VubeEVViV592vu2lHE2BZY5OnzehZqOOgogN80+mNtCqPkhn2gklJqOpxWgPoYTSnhBCqpOXQ=="], + + "@radix-ui/react-tabs": ["@radix-ui/react-tabs@1.1.13", "https://registry.npmjs.com/@radix-ui/react-tabs/-/react-tabs-1.1.13.tgz", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-roving-focus": "1.1.11", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-7xdcatg7/U+7+Udyoj2zodtI9H/IIopqo+YOIcZOq1nJwXWBZ9p8xiu5llXlekDbZkca79a/fozEYQXIA4sW6A=="], + + "@radix-ui/react-toast": ["@radix-ui/react-toast@1.2.15", "https://registry.npmjs.com/@radix-ui/react-toast/-/react-toast-1.2.15.tgz", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-layout-effect": "1.1.1", "@radix-ui/react-visually-hidden": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-3OSz3TacUWy4WtOXV38DggwxoqJK4+eDkNMl5Z/MJZaoUPaP4/9lf81xXMe1I2ReTAptverZUpbPY4wWwWyL5g=="], + + "@radix-ui/react-toggle": ["@radix-ui/react-toggle@1.1.10", "https://registry.npmjs.com/@radix-ui/react-toggle/-/react-toggle-1.1.10.tgz", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-lS1odchhFTeZv3xwHH31YPObmJn8gOg7Lq12inrr0+BH/l3Tsq32VfjqH1oh80ARM3mlkfMic15n0kg4sD1poQ=="], + + "@radix-ui/react-toggle-group": ["@radix-ui/react-toggle-group@1.1.11", "https://registry.npmjs.com/@radix-ui/react-toggle-group/-/react-toggle-group-1.1.11.tgz", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-roving-focus": "1.1.11", "@radix-ui/react-toggle": "1.1.10", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-5umnS0T8JQzQT6HbPyO7Hh9dgd82NmS36DQr+X/YJ9ctFNCiiQd6IJAYYZ33LUwm8M+taCz5t2ui29fHZc4Y6Q=="], + + "@radix-ui/react-toolbar": ["@radix-ui/react-toolbar@1.1.11", "https://registry.npmjs.com/@radix-ui/react-toolbar/-/react-toolbar-1.1.11.tgz", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-roving-focus": "1.1.11", "@radix-ui/react-separator": "1.1.7", "@radix-ui/react-toggle-group": "1.1.11" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-4ol06/1bLoFu1nwUqzdD4Y5RZ9oDdKeiHIsntug54Hcr1pgaHiPqHFEaXI1IFP/EsOfROQZ8Mig9VTIRza6Tjg=="], + + "@radix-ui/react-tooltip": ["@radix-ui/react-tooltip@1.2.8", "https://registry.npmjs.com/@radix-ui/react-tooltip/-/react-tooltip-1.2.8.tgz", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-popper": "1.2.8", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-visually-hidden": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg=="], + + "@radix-ui/react-use-callback-ref": ["@radix-ui/react-use-callback-ref@1.1.1", "https://registry.npmjs.com/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg=="], + + "@radix-ui/react-use-controllable-state": ["@radix-ui/react-use-controllable-state@1.2.2", "https://registry.npmjs.com/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", { "dependencies": { "@radix-ui/react-use-effect-event": "0.0.2", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg=="], + + "@radix-ui/react-use-effect-event": ["@radix-ui/react-use-effect-event@0.0.2", "https://registry.npmjs.com/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA=="], + + "@radix-ui/react-use-escape-keydown": ["@radix-ui/react-use-escape-keydown@1.1.1", "https://registry.npmjs.com/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.1.tgz", { "dependencies": { "@radix-ui/react-use-callback-ref": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g=="], + + "@radix-ui/react-use-is-hydrated": ["@radix-ui/react-use-is-hydrated@0.1.0", "https://registry.npmjs.com/@radix-ui/react-use-is-hydrated/-/react-use-is-hydrated-0.1.0.tgz", { "dependencies": { "use-sync-external-store": "^1.5.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-U+UORVEq+cTnRIaostJv9AGdV3G6Y+zbVd+12e18jQ5A3c0xL03IhnHuiU4UV69wolOQp5GfR58NW/EgdQhwOA=="], + + "@radix-ui/react-use-layout-effect": ["@radix-ui/react-use-layout-effect@1.1.1", "https://registry.npmjs.com/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ=="], + + "@radix-ui/react-use-previous": ["@radix-ui/react-use-previous@1.1.1", "https://registry.npmjs.com/@radix-ui/react-use-previous/-/react-use-previous-1.1.1.tgz", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ=="], + + "@radix-ui/react-use-rect": ["@radix-ui/react-use-rect@1.1.1", "https://registry.npmjs.com/@radix-ui/react-use-rect/-/react-use-rect-1.1.1.tgz", { "dependencies": { "@radix-ui/rect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w=="], + + "@radix-ui/react-use-size": ["@radix-ui/react-use-size@1.1.1", "https://registry.npmjs.com/@radix-ui/react-use-size/-/react-use-size-1.1.1.tgz", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ=="], + + "@radix-ui/react-visually-hidden": ["@radix-ui/react-visually-hidden@1.2.3", "https://registry.npmjs.com/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.3.tgz", { "dependencies": { "@radix-ui/react-primitive": "2.1.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug=="], + + "@radix-ui/rect": ["@radix-ui/rect@1.1.1", "https://registry.npmjs.com/@radix-ui/rect/-/rect-1.1.1.tgz", {}, "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw=="], + + "@react-hook/intersection-observer": ["@react-hook/intersection-observer@3.1.2", "https://registry.npmjs.com/@react-hook/intersection-observer/-/intersection-observer-3.1.2.tgz", { "dependencies": { "@react-hook/passive-layout-effect": "^1.2.0", "intersection-observer": "^0.10.0" }, "peerDependencies": { "react": ">=16.8" } }, "sha512-mWU3BMkmmzyYMSuhO9wu3eJVP21N8TcgYm9bZnTrMwuM818bEk+0NRM3hP+c/TqA9Ln5C7qE53p1H0QMtzYdvQ=="], + + "@react-hook/passive-layout-effect": ["@react-hook/passive-layout-effect@1.2.1", "https://registry.npmjs.com/@react-hook/passive-layout-effect/-/passive-layout-effect-1.2.1.tgz", { "peerDependencies": { "react": ">=16.8" } }, "sha512-IwEphTD75liO8g+6taS+4oqz+nnroocNfWVHWz7j+N+ZO2vYrc6PV1q7GQhuahL0IOR7JccFTsFKQ/mb6iZWAg=="], + + "@reactuses/core": ["@reactuses/core@6.1.9", "https://registry.npmjs.com/@reactuses/core/-/core-6.1.9.tgz", { "dependencies": { "@microsoft/fetch-event-source": "^2.0.1", "js-cookie": "^3.0.5", "lodash-es": "^4.17.21", "screenfull": "^5.0.0", "use-sync-external-store": "^1.2.0" }, "peerDependencies": { "qrcode": "^1.5", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "optionalPeers": ["qrcode"] }, "sha512-ahXOyJ92RvhYMvgXaKXqrSzIz0H2SUNaFy3zbrcmgfs4H46rOGTsxoy+ObxjXCogp6uZFYaFumSMO0u/xWcQMg=="], + + "@rtsao/scc": ["@rtsao/scc@1.1.0", "https://registry.npmjs.com/@rtsao/scc/-/scc-1.1.0.tgz", {}, "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g=="], + + "@schummar/icu-type-parser": ["@schummar/icu-type-parser@1.21.5", "https://registry.npmjs.com/@schummar/icu-type-parser/-/icu-type-parser-1.21.5.tgz", {}, "sha512-bXHSaW5jRTmke9Vd0h5P7BtWZG9Znqb8gSDxZnxaGSJnGwPLDPfS+3g0BKzeWqzgZPsIVZkM7m2tbo18cm5HBw=="], + + "@standard-schema/spec": ["@standard-schema/spec@1.1.0", "https://registry.npmjs.com/@standard-schema/spec/-/spec-1.1.0.tgz", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], + + "@standard-schema/utils": ["@standard-schema/utils@0.3.0", "https://registry.npmjs.com/@standard-schema/utils/-/utils-0.3.0.tgz", {}, "sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g=="], + + "@stitches/core": ["@stitches/core@1.2.8", "https://registry.npmjs.com/@stitches/core/-/core-1.2.8.tgz", {}, "sha512-Gfkvwk9o9kE9r9XNBmJRfV8zONvXThnm1tcuojL04Uy5uRyqg93DC83lDebl0rocZCfKSjUv+fWYtMQmEDJldg=="], + + "@swc/core": ["@swc/core@1.15.8", "https://registry.npmjs.com/@swc/core/-/core-1.15.8.tgz", { "dependencies": { "@swc/counter": "^0.1.3", "@swc/types": "^0.1.25" }, "optionalDependencies": { "@swc/core-darwin-arm64": "1.15.8", "@swc/core-darwin-x64": "1.15.8", "@swc/core-linux-arm-gnueabihf": "1.15.8", "@swc/core-linux-arm64-gnu": "1.15.8", "@swc/core-linux-arm64-musl": "1.15.8", "@swc/core-linux-x64-gnu": "1.15.8", "@swc/core-linux-x64-musl": "1.15.8", "@swc/core-win32-arm64-msvc": "1.15.8", "@swc/core-win32-ia32-msvc": "1.15.8", "@swc/core-win32-x64-msvc": "1.15.8" }, "peerDependencies": { "@swc/helpers": ">=0.5.17" }, "optionalPeers": ["@swc/helpers"] }, "sha512-T8keoJjXaSUoVBCIjgL6wAnhADIb09GOELzKg10CjNg+vLX48P93SME6jTfte9MZIm5m+Il57H3rTSk/0kzDUw=="], + + "@swc/core-darwin-arm64": ["@swc/core-darwin-arm64@1.15.8", "https://registry.npmjs.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.8.tgz", { "os": "darwin", "cpu": "arm64" }, "sha512-M9cK5GwyWWRkRGwwCbREuj6r8jKdES/haCZ3Xckgkl8MUQJZA3XB7IXXK1IXRNeLjg6m7cnoMICpXv1v1hlJOg=="], + + "@swc/core-darwin-x64": ["@swc/core-darwin-x64@1.15.8", "https://registry.npmjs.com/@swc/core-darwin-x64/-/core-darwin-x64-1.15.8.tgz", { "os": "darwin", "cpu": "x64" }, "sha512-j47DasuOvXl80sKJHSi2X25l44CMc3VDhlJwA7oewC1nV1VsSzwX+KOwE5tLnfORvVJJyeiXgJORNYg4jeIjYQ=="], + + "@swc/core-linux-arm-gnueabihf": ["@swc/core-linux-arm-gnueabihf@1.15.8", "https://registry.npmjs.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.8.tgz", { "os": "linux", "cpu": "arm" }, "sha512-siAzDENu2rUbwr9+fayWa26r5A9fol1iORG53HWxQL1J8ym4k7xt9eME0dMPXlYZDytK5r9sW8zEA10F2U3Xwg=="], + + "@swc/core-linux-arm64-gnu": ["@swc/core-linux-arm64-gnu@1.15.8", "https://registry.npmjs.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.8.tgz", { "os": "linux", "cpu": "arm64" }, "sha512-o+1y5u6k2FfPYbTRUPvurwzNt5qd0NTumCTFscCNuBksycloXY16J8L+SMW5QRX59n4Hp9EmFa3vpvNHRVv1+Q=="], + + "@swc/core-linux-arm64-musl": ["@swc/core-linux-arm64-musl@1.15.8", "https://registry.npmjs.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.8.tgz", { "os": "linux", "cpu": "arm64" }, "sha512-koiCqL09EwOP1S2RShCI7NbsQuG6r2brTqUYE7pV7kZm9O17wZ0LSz22m6gVibpwEnw8jI3IE1yYsQTVpluALw=="], + + "@swc/core-linux-x64-gnu": ["@swc/core-linux-x64-gnu@1.15.8", "https://registry.npmjs.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.8.tgz", { "os": "linux", "cpu": "x64" }, "sha512-4p6lOMU3bC+Vd5ARtKJ/FxpIC5G8v3XLoPEZ5s7mLR8h7411HWC/LmTXDHcrSXRC55zvAVia1eldy6zDLz8iFQ=="], + + "@swc/core-linux-x64-musl": ["@swc/core-linux-x64-musl@1.15.8", "https://registry.npmjs.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.8.tgz", { "os": "linux", "cpu": "x64" }, "sha512-z3XBnbrZAL+6xDGAhJoN4lOueIxC/8rGrJ9tg+fEaeqLEuAtHSW2QHDHxDwkxZMjuF/pZ6MUTjHjbp8wLbuRLA=="], + + "@swc/core-win32-arm64-msvc": ["@swc/core-win32-arm64-msvc@1.15.8", "https://registry.npmjs.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.8.tgz", { "os": "win32", "cpu": "arm64" }, "sha512-djQPJ9Rh9vP8GTS/Df3hcc6XP6xnG5c8qsngWId/BLA9oX6C7UzCPAn74BG/wGb9a6j4w3RINuoaieJB3t+7iQ=="], + + "@swc/core-win32-ia32-msvc": ["@swc/core-win32-ia32-msvc@1.15.8", "https://registry.npmjs.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.8.tgz", { "os": "win32", "cpu": "ia32" }, "sha512-/wfAgxORg2VBaUoFdytcVBVCgf1isWZIEXB9MZEUty4wwK93M/PxAkjifOho9RN3WrM3inPLabICRCEgdHpKKQ=="], + + "@swc/core-win32-x64-msvc": ["@swc/core-win32-x64-msvc@1.15.8", "https://registry.npmjs.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.8.tgz", { "os": "win32", "cpu": "x64" }, "sha512-GpMePrh9Sl4d61o4KAHOOv5is5+zt6BEXCOCgs/H0FLGeii7j9bWDE8ExvKFy2GRRZVNR1ugsnzaGWHKM6kuzA=="], + + "@swc/counter": ["@swc/counter@0.1.3", "https://registry.npmjs.com/@swc/counter/-/counter-0.1.3.tgz", {}, "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ=="], + + "@swc/helpers": ["@swc/helpers@0.5.15", "https://registry.npmjs.com/@swc/helpers/-/helpers-0.5.15.tgz", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g=="], + + "@swc/types": ["@swc/types@0.1.25", "https://registry.npmjs.com/@swc/types/-/types-0.1.25.tgz", { "dependencies": { "@swc/counter": "^0.1.3" } }, "sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g=="], + + "@tailwindcss/node": ["@tailwindcss/node@4.1.18", "https://registry.npmjs.com/@tailwindcss/node/-/node-4.1.18.tgz", { "dependencies": { "@jridgewell/remapping": "^2.3.4", "enhanced-resolve": "^5.18.3", "jiti": "^2.6.1", "lightningcss": "1.30.2", "magic-string": "^0.30.21", "source-map-js": "^1.2.1", "tailwindcss": "4.1.18" } }, "sha512-DoR7U1P7iYhw16qJ49fgXUlry1t4CpXeErJHnQ44JgTSKMaZUdf17cfn5mHchfJ4KRBZRFA/Coo+MUF5+gOaCQ=="], + + "@tailwindcss/oxide": ["@tailwindcss/oxide@4.1.18", "https://registry.npmjs.com/@tailwindcss/oxide/-/oxide-4.1.18.tgz", { "optionalDependencies": { "@tailwindcss/oxide-android-arm64": "4.1.18", "@tailwindcss/oxide-darwin-arm64": "4.1.18", "@tailwindcss/oxide-darwin-x64": "4.1.18", "@tailwindcss/oxide-freebsd-x64": "4.1.18", "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.18", "@tailwindcss/oxide-linux-arm64-gnu": "4.1.18", "@tailwindcss/oxide-linux-arm64-musl": "4.1.18", "@tailwindcss/oxide-linux-x64-gnu": "4.1.18", "@tailwindcss/oxide-linux-x64-musl": "4.1.18", "@tailwindcss/oxide-wasm32-wasi": "4.1.18", "@tailwindcss/oxide-win32-arm64-msvc": "4.1.18", "@tailwindcss/oxide-win32-x64-msvc": "4.1.18" } }, "sha512-EgCR5tTS5bUSKQgzeMClT6iCY3ToqE1y+ZB0AKldj809QXk1Y+3jB0upOYZrn9aGIzPtUsP7sX4QQ4XtjBB95A=="], + + "@tailwindcss/oxide-android-arm64": ["@tailwindcss/oxide-android-arm64@4.1.18", "https://registry.npmjs.com/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.18.tgz", { "os": "android", "cpu": "arm64" }, "sha512-dJHz7+Ugr9U/diKJA0W6N/6/cjI+ZTAoxPf9Iz9BFRF2GzEX8IvXxFIi/dZBloVJX/MZGvRuFA9rqwdiIEZQ0Q=="], + + "@tailwindcss/oxide-darwin-arm64": ["@tailwindcss/oxide-darwin-arm64@4.1.18", "https://registry.npmjs.com/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.18.tgz", { "os": "darwin", "cpu": "arm64" }, "sha512-Gc2q4Qhs660bhjyBSKgq6BYvwDz4G+BuyJ5H1xfhmDR3D8HnHCmT/BSkvSL0vQLy/nkMLY20PQ2OoYMO15Jd0A=="], + + "@tailwindcss/oxide-darwin-x64": ["@tailwindcss/oxide-darwin-x64@4.1.18", "https://registry.npmjs.com/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.18.tgz", { "os": "darwin", "cpu": "x64" }, "sha512-FL5oxr2xQsFrc3X9o1fjHKBYBMD1QZNyc1Xzw/h5Qu4XnEBi3dZn96HcHm41c/euGV+GRiXFfh2hUCyKi/e+yw=="], + + "@tailwindcss/oxide-freebsd-x64": ["@tailwindcss/oxide-freebsd-x64@4.1.18", "https://registry.npmjs.com/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.18.tgz", { "os": "freebsd", "cpu": "x64" }, "sha512-Fj+RHgu5bDodmV1dM9yAxlfJwkkWvLiRjbhuO2LEtwtlYlBgiAT4x/j5wQr1tC3SANAgD+0YcmWVrj8R9trVMA=="], + + "@tailwindcss/oxide-linux-arm-gnueabihf": ["@tailwindcss/oxide-linux-arm-gnueabihf@4.1.18", "https://registry.npmjs.com/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.18.tgz", { "os": "linux", "cpu": "arm" }, "sha512-Fp+Wzk/Ws4dZn+LV2Nqx3IilnhH51YZoRaYHQsVq3RQvEl+71VGKFpkfHrLM/Li+kt5c0DJe/bHXK1eHgDmdiA=="], + + "@tailwindcss/oxide-linux-arm64-gnu": ["@tailwindcss/oxide-linux-arm64-gnu@4.1.18", "https://registry.npmjs.com/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.18.tgz", { "os": "linux", "cpu": "arm64" }, "sha512-S0n3jboLysNbh55Vrt7pk9wgpyTTPD0fdQeh7wQfMqLPM/Hrxi+dVsLsPrycQjGKEQk85Kgbx+6+QnYNiHalnw=="], + + "@tailwindcss/oxide-linux-arm64-musl": ["@tailwindcss/oxide-linux-arm64-musl@4.1.18", "https://registry.npmjs.com/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.18.tgz", { "os": "linux", "cpu": "arm64" }, "sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg=="], + + "@tailwindcss/oxide-linux-x64-gnu": ["@tailwindcss/oxide-linux-x64-gnu@4.1.18", "https://registry.npmjs.com/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.18.tgz", { "os": "linux", "cpu": "x64" }, "sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g=="], + + "@tailwindcss/oxide-linux-x64-musl": ["@tailwindcss/oxide-linux-x64-musl@4.1.18", "https://registry.npmjs.com/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.18.tgz", { "os": "linux", "cpu": "x64" }, "sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ=="], + + "@tailwindcss/oxide-wasm32-wasi": ["@tailwindcss/oxide-wasm32-wasi@4.1.18", "https://registry.npmjs.com/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.18.tgz", { "dependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1", "@emnapi/wasi-threads": "^1.1.0", "@napi-rs/wasm-runtime": "^1.1.0", "@tybys/wasm-util": "^0.10.1", "tslib": "^2.4.0" }, "cpu": "none" }, "sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA=="], + + "@tailwindcss/oxide-win32-arm64-msvc": ["@tailwindcss/oxide-win32-arm64-msvc@4.1.18", "https://registry.npmjs.com/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.18.tgz", { "os": "win32", "cpu": "arm64" }, "sha512-HjSA7mr9HmC8fu6bdsZvZ+dhjyGCLdotjVOgLA2vEqxEBZaQo9YTX4kwgEvPCpRh8o4uWc4J/wEoFzhEmjvPbA=="], + + "@tailwindcss/oxide-win32-x64-msvc": ["@tailwindcss/oxide-win32-x64-msvc@4.1.18", "https://registry.npmjs.com/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.18.tgz", { "os": "win32", "cpu": "x64" }, "sha512-bJWbyYpUlqamC8dpR7pfjA0I7vdF6t5VpUGMWRkXVE3AXgIZjYUYAK7II1GNaxR8J1SSrSrppRar8G++JekE3Q=="], + + "@tailwindcss/postcss": ["@tailwindcss/postcss@4.1.18", "https://registry.npmjs.com/@tailwindcss/postcss/-/postcss-4.1.18.tgz", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "@tailwindcss/node": "4.1.18", "@tailwindcss/oxide": "4.1.18", "postcss": "^8.4.41", "tailwindcss": "4.1.18" } }, "sha512-Ce0GFnzAOuPyfV5SxjXGn0CubwGcuDB0zcdaPuCSzAa/2vII24JTkH+I6jcbXLb1ctjZMZZI6OjDaLPJQL1S0g=="], + + "@tanstack/query-core": ["@tanstack/query-core@5.90.19", "https://registry.npmjs.com/@tanstack/query-core/-/query-core-5.90.19.tgz", {}, "sha512-GLW5sjPVIvH491VV1ufddnfldyVB+teCnpPIvweEfkpRx7CfUmUGhoh9cdcUKBh/KwVxk22aNEDxeTsvmyB/WA=="], + + "@tanstack/react-query": ["@tanstack/react-query@5.90.19", "https://registry.npmjs.com/@tanstack/react-query/-/react-query-5.90.19.tgz", { "dependencies": { "@tanstack/query-core": "5.90.19" }, "peerDependencies": { "react": "^18 || ^19" } }, "sha512-qTZRZ4QyTzQc+M0IzrbKHxSeISUmRB3RPGmao5bT+sI6ayxSRhn0FXEnT5Hg3as8SBFcRosrXXRFB+yAcxVxJQ=="], + + "@tanstack/react-table": ["@tanstack/react-table@8.21.3", "https://registry.npmjs.com/@tanstack/react-table/-/react-table-8.21.3.tgz", { "dependencies": { "@tanstack/table-core": "8.21.3" }, "peerDependencies": { "react": ">=16.8", "react-dom": ">=16.8" } }, "sha512-5nNMTSETP4ykGegmVkhjcS8tTLW6Vl4axfEGQN3v0zdHYbK4UfoqfPChclTrJ4EoK9QynqAu9oUf8VEmrpZ5Ww=="], + + "@tanstack/table-core": ["@tanstack/table-core@8.21.3", "https://registry.npmjs.com/@tanstack/table-core/-/table-core-8.21.3.tgz", {}, "sha512-ldZXEhOBb8Is7xLs01fR3YEc3DERiz5silj8tnGkFZytt1abEvl/GhUmCE0PMLaMPTa3Jk4HbKmRlHmu+gCftg=="], + + "@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "https://registry.npmjs.com/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="], + + "@types/d3-array": ["@types/d3-array@3.2.2", "https://registry.npmjs.com/@types/d3-array/-/d3-array-3.2.2.tgz", {}, "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw=="], + + "@types/d3-color": ["@types/d3-color@3.1.3", "https://registry.npmjs.com/@types/d3-color/-/d3-color-3.1.3.tgz", {}, "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A=="], + + "@types/d3-ease": ["@types/d3-ease@3.0.2", "https://registry.npmjs.com/@types/d3-ease/-/d3-ease-3.0.2.tgz", {}, "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA=="], + + "@types/d3-interpolate": ["@types/d3-interpolate@3.0.4", "https://registry.npmjs.com/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", { "dependencies": { "@types/d3-color": "*" } }, "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA=="], + + "@types/d3-path": ["@types/d3-path@3.1.1", "https://registry.npmjs.com/@types/d3-path/-/d3-path-3.1.1.tgz", {}, "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg=="], + + "@types/d3-scale": ["@types/d3-scale@4.0.9", "https://registry.npmjs.com/@types/d3-scale/-/d3-scale-4.0.9.tgz", { "dependencies": { "@types/d3-time": "*" } }, "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw=="], + + "@types/d3-shape": ["@types/d3-shape@3.1.8", "https://registry.npmjs.com/@types/d3-shape/-/d3-shape-3.1.8.tgz", { "dependencies": { "@types/d3-path": "*" } }, "sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w=="], + + "@types/d3-time": ["@types/d3-time@3.0.4", "https://registry.npmjs.com/@types/d3-time/-/d3-time-3.0.4.tgz", {}, "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g=="], + + "@types/d3-timer": ["@types/d3-timer@3.0.2", "https://registry.npmjs.com/@types/d3-timer/-/d3-timer-3.0.2.tgz", {}, "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw=="], + + "@types/debug": ["@types/debug@4.1.12", "https://registry.npmjs.com/@types/debug/-/debug-4.1.12.tgz", { "dependencies": { "@types/ms": "*" } }, "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ=="], + + "@types/estree": ["@types/estree@1.0.8", "https://registry.npmjs.com/@types/estree/-/estree-1.0.8.tgz", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="], + + "@types/estree-jsx": ["@types/estree-jsx@1.0.5", "https://registry.npmjs.com/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", { "dependencies": { "@types/estree": "*" } }, "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg=="], + + "@types/hast": ["@types/hast@3.0.4", "https://registry.npmjs.com/@types/hast/-/hast-3.0.4.tgz", { "dependencies": { "@types/unist": "*" } }, "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ=="], + + "@types/json-schema": ["@types/json-schema@7.0.15", "https://registry.npmjs.com/@types/json-schema/-/json-schema-7.0.15.tgz", {}, "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="], + + "@types/json5": ["@types/json5@0.0.29", "https://registry.npmjs.com/@types/json5/-/json5-0.0.29.tgz", {}, "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ=="], + + "@types/mdast": ["@types/mdast@4.0.4", "https://registry.npmjs.com/@types/mdast/-/mdast-4.0.4.tgz", { "dependencies": { "@types/unist": "*" } }, "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA=="], + + "@types/ms": ["@types/ms@2.1.0", "https://registry.npmjs.com/@types/ms/-/ms-2.1.0.tgz", {}, "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA=="], + + "@types/node": ["@types/node@25.0.9", "https://registry.npmjs.com/@types/node/-/node-25.0.9.tgz", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-/rpCXHlCWeqClNBwUhDcusJxXYDjZTyE8v5oTO7WbL8eij2nKhUeU89/6xgjU7N4/Vh3He0BtyhJdQbDyhiXAw=="], + + "@types/react": ["@types/react@19.2.8", "https://registry.npmjs.com/@types/react/-/react-19.2.8.tgz", { "dependencies": { "csstype": "^3.2.2" } }, "sha512-3MbSL37jEchWZz2p2mjntRZtPt837ij10ApxKfgmXCTuHWagYg7iA5bqPw6C8BMPfwidlvfPI/fxOc42HLhcyg=="], + + "@types/react-dom": ["@types/react-dom@19.2.3", "https://registry.npmjs.com/@types/react-dom/-/react-dom-19.2.3.tgz", { "peerDependencies": { "@types/react": "^19.2.0" } }, "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ=="], + + "@types/unist": ["@types/unist@3.0.3", "https://registry.npmjs.com/@types/unist/-/unist-3.0.3.tgz", {}, "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q=="], + + "@typescript-eslint/eslint-plugin": ["@typescript-eslint/eslint-plugin@8.53.0", "https://registry.npmjs.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.53.0.tgz", { "dependencies": { "@eslint-community/regexpp": "^4.12.2", "@typescript-eslint/scope-manager": "8.53.0", "@typescript-eslint/type-utils": "8.53.0", "@typescript-eslint/utils": "8.53.0", "@typescript-eslint/visitor-keys": "8.53.0", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.4.0" }, "peerDependencies": { "@typescript-eslint/parser": "^8.53.0", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-eEXsVvLPu8Z4PkFibtuFJLJOTAV/nPdgtSjkGoPpddpFk3/ym2oy97jynY6ic2m6+nc5M8SE1e9v/mHKsulcJg=="], + + "@typescript-eslint/parser": ["@typescript-eslint/parser@8.53.0", "https://registry.npmjs.com/@typescript-eslint/parser/-/parser-8.53.0.tgz", { "dependencies": { "@typescript-eslint/scope-manager": "8.53.0", "@typescript-eslint/types": "8.53.0", "@typescript-eslint/typescript-estree": "8.53.0", "@typescript-eslint/visitor-keys": "8.53.0", "debug": "^4.4.3" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-npiaib8XzbjtzS2N4HlqPvlpxpmZ14FjSJrteZpPxGUaYPlvhzlzUZ4mZyABo0EFrOWnvyd0Xxroq//hKhtAWg=="], + + "@typescript-eslint/project-service": ["@typescript-eslint/project-service@8.53.0", "https://registry.npmjs.com/@typescript-eslint/project-service/-/project-service-8.53.0.tgz", { "dependencies": { "@typescript-eslint/tsconfig-utils": "^8.53.0", "@typescript-eslint/types": "^8.53.0", "debug": "^4.4.3" }, "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-Bl6Gdr7NqkqIP5yP9z1JU///Nmes4Eose6L1HwpuVHwScgDPPuEWbUVhvlZmb8hy0vX9syLk5EGNL700WcBlbg=="], + + "@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.53.0", "https://registry.npmjs.com/@typescript-eslint/scope-manager/-/scope-manager-8.53.0.tgz", { "dependencies": { "@typescript-eslint/types": "8.53.0", "@typescript-eslint/visitor-keys": "8.53.0" } }, "sha512-kWNj3l01eOGSdVBnfAF2K1BTh06WS0Yet6JUgb9Cmkqaz3Jlu0fdVUjj9UI8gPidBWSMqDIglmEXifSgDT/D0g=="], + + "@typescript-eslint/tsconfig-utils": ["@typescript-eslint/tsconfig-utils@8.53.0", "https://registry.npmjs.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.53.0.tgz", { "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-K6Sc0R5GIG6dNoPdOooQ+KtvT5KCKAvTcY8h2rIuul19vxH5OTQk7ArKkd4yTzkw66WnNY0kPPzzcmWA+XRmiA=="], + + "@typescript-eslint/type-utils": ["@typescript-eslint/type-utils@8.53.0", "https://registry.npmjs.com/@typescript-eslint/type-utils/-/type-utils-8.53.0.tgz", { "dependencies": { "@typescript-eslint/types": "8.53.0", "@typescript-eslint/typescript-estree": "8.53.0", "@typescript-eslint/utils": "8.53.0", "debug": "^4.4.3", "ts-api-utils": "^2.4.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-BBAUhlx7g4SmcLhn8cnbxoxtmS7hcq39xKCgiutL3oNx1TaIp+cny51s8ewnKMpVUKQUGb41RAUWZ9kxYdovuw=="], + + "@typescript-eslint/types": ["@typescript-eslint/types@8.53.0", "https://registry.npmjs.com/@typescript-eslint/types/-/types-8.53.0.tgz", {}, "sha512-Bmh9KX31Vlxa13+PqPvt4RzKRN1XORYSLlAE+sO1i28NkisGbTtSLFVB3l7PWdHtR3E0mVMuC7JilWJ99m2HxQ=="], + + "@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.53.0", "https://registry.npmjs.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.53.0.tgz", { "dependencies": { "@typescript-eslint/project-service": "8.53.0", "@typescript-eslint/tsconfig-utils": "8.53.0", "@typescript-eslint/types": "8.53.0", "@typescript-eslint/visitor-keys": "8.53.0", "debug": "^4.4.3", "minimatch": "^9.0.5", "semver": "^7.7.3", "tinyglobby": "^0.2.15", "ts-api-utils": "^2.4.0" }, "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-pw0c0Gdo7Z4xOG987u3nJ8akL9093yEEKv8QTJ+Bhkghj1xyj8cgPaavlr9rq8h7+s6plUJ4QJYw2gCZodqmGw=="], + + "@typescript-eslint/utils": ["@typescript-eslint/utils@8.53.0", "https://registry.npmjs.com/@typescript-eslint/utils/-/utils-8.53.0.tgz", { "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", "@typescript-eslint/scope-manager": "8.53.0", "@typescript-eslint/types": "8.53.0", "@typescript-eslint/typescript-estree": "8.53.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-XDY4mXTez3Z1iRDI5mbRhH4DFSt46oaIFsLg+Zn97+sYrXACziXSQcSelMybnVZ5pa1P6xYkPr5cMJyunM1ZDA=="], + + "@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.53.0", "https://registry.npmjs.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.53.0.tgz", { "dependencies": { "@typescript-eslint/types": "8.53.0", "eslint-visitor-keys": "^4.2.1" } }, "sha512-LZ2NqIHFhvFwxG0qZeLL9DvdNAHPGCY5dIRwBhyYeU+LfLhcStE1ImjsuTG/WaVh3XysGaeLW8Rqq7cGkPCFvw=="], + + "@ungap/structured-clone": ["@ungap/structured-clone@1.3.0", "https://registry.npmjs.com/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", {}, "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g=="], + + "@unrs/resolver-binding-android-arm-eabi": ["@unrs/resolver-binding-android-arm-eabi@1.11.1", "https://registry.npmjs.com/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", { "os": "android", "cpu": "arm" }, "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw=="], + + "@unrs/resolver-binding-android-arm64": ["@unrs/resolver-binding-android-arm64@1.11.1", "https://registry.npmjs.com/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", { "os": "android", "cpu": "arm64" }, "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g=="], + + "@unrs/resolver-binding-darwin-arm64": ["@unrs/resolver-binding-darwin-arm64@1.11.1", "https://registry.npmjs.com/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", { "os": "darwin", "cpu": "arm64" }, "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g=="], + + "@unrs/resolver-binding-darwin-x64": ["@unrs/resolver-binding-darwin-x64@1.11.1", "https://registry.npmjs.com/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", { "os": "darwin", "cpu": "x64" }, "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ=="], + + "@unrs/resolver-binding-freebsd-x64": ["@unrs/resolver-binding-freebsd-x64@1.11.1", "https://registry.npmjs.com/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", { "os": "freebsd", "cpu": "x64" }, "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw=="], + + "@unrs/resolver-binding-linux-arm-gnueabihf": ["@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1", "https://registry.npmjs.com/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", { "os": "linux", "cpu": "arm" }, "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw=="], + + "@unrs/resolver-binding-linux-arm-musleabihf": ["@unrs/resolver-binding-linux-arm-musleabihf@1.11.1", "https://registry.npmjs.com/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", { "os": "linux", "cpu": "arm" }, "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw=="], + + "@unrs/resolver-binding-linux-arm64-gnu": ["@unrs/resolver-binding-linux-arm64-gnu@1.11.1", "https://registry.npmjs.com/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", { "os": "linux", "cpu": "arm64" }, "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ=="], + + "@unrs/resolver-binding-linux-arm64-musl": ["@unrs/resolver-binding-linux-arm64-musl@1.11.1", "https://registry.npmjs.com/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", { "os": "linux", "cpu": "arm64" }, "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w=="], + + "@unrs/resolver-binding-linux-ppc64-gnu": ["@unrs/resolver-binding-linux-ppc64-gnu@1.11.1", "https://registry.npmjs.com/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", { "os": "linux", "cpu": "ppc64" }, "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA=="], + + "@unrs/resolver-binding-linux-riscv64-gnu": ["@unrs/resolver-binding-linux-riscv64-gnu@1.11.1", "https://registry.npmjs.com/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", { "os": "linux", "cpu": "none" }, "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ=="], + + "@unrs/resolver-binding-linux-riscv64-musl": ["@unrs/resolver-binding-linux-riscv64-musl@1.11.1", "https://registry.npmjs.com/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", { "os": "linux", "cpu": "none" }, "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew=="], + + "@unrs/resolver-binding-linux-s390x-gnu": ["@unrs/resolver-binding-linux-s390x-gnu@1.11.1", "https://registry.npmjs.com/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", { "os": "linux", "cpu": "s390x" }, "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg=="], + + "@unrs/resolver-binding-linux-x64-gnu": ["@unrs/resolver-binding-linux-x64-gnu@1.11.1", "https://registry.npmjs.com/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", { "os": "linux", "cpu": "x64" }, "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w=="], + + "@unrs/resolver-binding-linux-x64-musl": ["@unrs/resolver-binding-linux-x64-musl@1.11.1", "https://registry.npmjs.com/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", { "os": "linux", "cpu": "x64" }, "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA=="], + + "@unrs/resolver-binding-wasm32-wasi": ["@unrs/resolver-binding-wasm32-wasi@1.11.1", "https://registry.npmjs.com/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", { "dependencies": { "@napi-rs/wasm-runtime": "^0.2.11" }, "cpu": "none" }, "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ=="], + + "@unrs/resolver-binding-win32-arm64-msvc": ["@unrs/resolver-binding-win32-arm64-msvc@1.11.1", "https://registry.npmjs.com/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", { "os": "win32", "cpu": "arm64" }, "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw=="], + + "@unrs/resolver-binding-win32-ia32-msvc": ["@unrs/resolver-binding-win32-ia32-msvc@1.11.1", "https://registry.npmjs.com/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", { "os": "win32", "cpu": "ia32" }, "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ=="], + + "@unrs/resolver-binding-win32-x64-msvc": ["@unrs/resolver-binding-win32-x64-msvc@1.11.1", "https://registry.npmjs.com/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", { "os": "win32", "cpu": "x64" }, "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g=="], + + "acorn": ["acorn@8.15.0", "https://registry.npmjs.com/acorn/-/acorn-8.15.0.tgz", { "bin": { "acorn": "bin/acorn" } }, "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg=="], + + "acorn-jsx": ["acorn-jsx@5.3.2", "https://registry.npmjs.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz", { "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="], + + "ajv": ["ajv@6.12.6", "https://registry.npmjs.com/ajv/-/ajv-6.12.6.tgz", { "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g=="], + + "anser": ["anser@2.3.5", "https://registry.npmjs.com/anser/-/anser-2.3.5.tgz", {}, "sha512-vcZjxvvVoxTeR5XBNJB38oTu/7eDCZlwdz32N1eNgpyPF7j/Z7Idf+CUwQOkKKpJ7RJyjxgLHCM7vdIK0iCNMQ=="], + + "ansi-styles": ["ansi-styles@4.3.0", "https://registry.npmjs.com/ansi-styles/-/ansi-styles-4.3.0.tgz", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], + + "argparse": ["argparse@2.0.1", "https://registry.npmjs.com/argparse/-/argparse-2.0.1.tgz", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], + + "aria-hidden": ["aria-hidden@1.2.6", "https://registry.npmjs.com/aria-hidden/-/aria-hidden-1.2.6.tgz", { "dependencies": { "tslib": "^2.0.0" } }, "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA=="], + + "aria-query": ["aria-query@5.3.2", "https://registry.npmjs.com/aria-query/-/aria-query-5.3.2.tgz", {}, "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw=="], + + "array-buffer-byte-length": ["array-buffer-byte-length@1.0.2", "https://registry.npmjs.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", { "dependencies": { "call-bound": "^1.0.3", "is-array-buffer": "^3.0.5" } }, "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw=="], + + "array-includes": ["array-includes@3.1.9", "https://registry.npmjs.com/array-includes/-/array-includes-3.1.9.tgz", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.4", "define-properties": "^1.2.1", "es-abstract": "^1.24.0", "es-object-atoms": "^1.1.1", "get-intrinsic": "^1.3.0", "is-string": "^1.1.1", "math-intrinsics": "^1.1.0" } }, "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ=="], + + "array.prototype.findlast": ["array.prototype.findlast@1.2.5", "https://registry.npmjs.com/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.2", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "es-shim-unscopables": "^1.0.2" } }, "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ=="], + + "array.prototype.findlastindex": ["array.prototype.findlastindex@1.2.6", "https://registry.npmjs.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.4", "define-properties": "^1.2.1", "es-abstract": "^1.23.9", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "es-shim-unscopables": "^1.1.0" } }, "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ=="], + + "array.prototype.flat": ["array.prototype.flat@1.3.3", "https://registry.npmjs.com/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-shim-unscopables": "^1.0.2" } }, "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg=="], + + "array.prototype.flatmap": ["array.prototype.flatmap@1.3.3", "https://registry.npmjs.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-shim-unscopables": "^1.0.2" } }, "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg=="], + + "array.prototype.tosorted": ["array.prototype.tosorted@1.1.4", "https://registry.npmjs.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.3", "es-errors": "^1.3.0", "es-shim-unscopables": "^1.0.2" } }, "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA=="], + + "arraybuffer.prototype.slice": ["arraybuffer.prototype.slice@1.0.4", "https://registry.npmjs.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", { "dependencies": { "array-buffer-byte-length": "^1.0.1", "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "is-array-buffer": "^3.0.4" } }, "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ=="], + + "ast-types-flow": ["ast-types-flow@0.0.8", "https://registry.npmjs.com/ast-types-flow/-/ast-types-flow-0.0.8.tgz", {}, "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ=="], + + "async-function": ["async-function@1.0.0", "https://registry.npmjs.com/async-function/-/async-function-1.0.0.tgz", {}, "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA=="], + + "available-typed-arrays": ["available-typed-arrays@1.0.7", "https://registry.npmjs.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", { "dependencies": { "possible-typed-array-names": "^1.0.0" } }, "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ=="], + + "axe-core": ["axe-core@4.11.1", "https://registry.npmjs.com/axe-core/-/axe-core-4.11.1.tgz", {}, "sha512-BASOg+YwO2C+346x3LZOeoovTIoTrRqEsqMa6fmfAV0P+U9mFr9NsyOEpiYvFjbc64NMrSswhV50WdXzdb/Z5A=="], + + "axobject-query": ["axobject-query@4.1.0", "https://registry.npmjs.com/axobject-query/-/axobject-query-4.1.0.tgz", {}, "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ=="], + + "bail": ["bail@2.0.2", "https://registry.npmjs.com/bail/-/bail-2.0.2.tgz", {}, "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw=="], + + "balanced-match": ["balanced-match@1.0.2", "https://registry.npmjs.com/balanced-match/-/balanced-match-1.0.2.tgz", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], + + "base64-js": ["base64-js@1.5.1", "https://registry.npmjs.com/base64-js/-/base64-js-1.5.1.tgz", {}, "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="], + + "baseline-browser-mapping": ["baseline-browser-mapping@2.9.15", "https://registry.npmjs.com/baseline-browser-mapping/-/baseline-browser-mapping-2.9.15.tgz", { "bin": { "baseline-browser-mapping": "dist/cli.js" } }, "sha512-kX8h7K2srmDyYnXRIppo4AH/wYgzWVCs+eKr3RusRSQ5PvRYoEFmR/I0PbdTjKFAoKqp5+kbxnNTFO9jOfSVJg=="], + + "brace-expansion": ["brace-expansion@1.1.12", "https://registry.npmjs.com/brace-expansion/-/brace-expansion-1.1.12.tgz", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg=="], + + "braces": ["braces@3.0.3", "https://registry.npmjs.com/braces/-/braces-3.0.3.tgz", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], + + "browserslist": ["browserslist@4.28.1", "https://registry.npmjs.com/browserslist/-/browserslist-4.28.1.tgz", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], + + "buffer": ["buffer@6.0.3", "https://registry.npmjs.com/buffer/-/buffer-6.0.3.tgz", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" } }, "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA=="], + + "bun-types": ["bun-types@1.3.6", "https://registry.npmjs.com/bun-types/-/bun-types-1.3.6.tgz", { "dependencies": { "@types/node": "*" } }, "sha512-OlFwHcnNV99r//9v5IIOgQ9Uk37gZqrNMCcqEaExdkVq3Avwqok1bJFmvGMCkCE0FqzdY8VMOZpfpR3lwI+CsQ=="], + + "c12": ["c12@3.1.0", "https://registry.npmjs.com/c12/-/c12-3.1.0.tgz", { "dependencies": { "chokidar": "^4.0.3", "confbox": "^0.2.2", "defu": "^6.1.4", "dotenv": "^16.6.1", "exsolve": "^1.0.7", "giget": "^2.0.0", "jiti": "^2.4.2", "ohash": "^2.0.11", "pathe": "^2.0.3", "perfect-debounce": "^1.0.0", "pkg-types": "^2.2.0", "rc9": "^2.1.2" }, "peerDependencies": { "magicast": "^0.3.5" }, "optionalPeers": ["magicast"] }, "sha512-uWoS8OU1MEIsOv8p/5a82c3H31LsWVR5qiyXVfBNOzfffjUWtPnhAb4BYI2uG2HfGmZmFjCtui5XNWaps+iFuw=="], + + "call-bind": ["call-bind@1.0.8", "https://registry.npmjs.com/call-bind/-/call-bind-1.0.8.tgz", { "dependencies": { "call-bind-apply-helpers": "^1.0.0", "es-define-property": "^1.0.0", "get-intrinsic": "^1.2.4", "set-function-length": "^1.2.2" } }, "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww=="], + + "call-bind-apply-helpers": ["call-bind-apply-helpers@1.0.2", "https://registry.npmjs.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", { "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" } }, "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ=="], + + "call-bound": ["call-bound@1.0.4", "https://registry.npmjs.com/call-bound/-/call-bound-1.0.4.tgz", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "get-intrinsic": "^1.3.0" } }, "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg=="], + + "callsites": ["callsites@3.1.0", "https://registry.npmjs.com/callsites/-/callsites-3.1.0.tgz", {}, "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="], + + "caniuse-lite": ["caniuse-lite@1.0.30001764", "https://registry.npmjs.com/caniuse-lite/-/caniuse-lite-1.0.30001764.tgz", {}, "sha512-9JGuzl2M+vPL+pz70gtMF9sHdMFbY9FJaQBi186cHKH3pSzDvzoUJUPV6fqiKIMyXbud9ZLg4F3Yza1vJ1+93g=="], + + "ccount": ["ccount@2.0.1", "https://registry.npmjs.com/ccount/-/ccount-2.0.1.tgz", {}, "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg=="], + + "chalk": ["chalk@4.1.2", "https://registry.npmjs.com/chalk/-/chalk-4.1.2.tgz", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], + + "character-entities": ["character-entities@2.0.2", "https://registry.npmjs.com/character-entities/-/character-entities-2.0.2.tgz", {}, "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ=="], + + "character-entities-html4": ["character-entities-html4@2.1.0", "https://registry.npmjs.com/character-entities-html4/-/character-entities-html4-2.1.0.tgz", {}, "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA=="], + + "character-entities-legacy": ["character-entities-legacy@3.0.0", "https://registry.npmjs.com/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", {}, "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ=="], + + "character-reference-invalid": ["character-reference-invalid@2.0.1", "https://registry.npmjs.com/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", {}, "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw=="], + + "chokidar": ["chokidar@4.0.3", "https://registry.npmjs.com/chokidar/-/chokidar-4.0.3.tgz", { "dependencies": { "readdirp": "^4.0.1" } }, "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA=="], + + "citty": ["citty@0.1.6", "https://registry.npmjs.com/citty/-/citty-0.1.6.tgz", { "dependencies": { "consola": "^3.2.3" } }, "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ=="], + + "class-variance-authority": ["class-variance-authority@0.7.1", "https://registry.npmjs.com/class-variance-authority/-/class-variance-authority-0.7.1.tgz", { "dependencies": { "clsx": "^2.1.1" } }, "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg=="], + + "classnames": ["classnames@2.5.1", "https://registry.npmjs.com/classnames/-/classnames-2.5.1.tgz", {}, "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow=="], + + "clean-set": ["clean-set@1.1.2", "https://registry.npmjs.com/clean-set/-/clean-set-1.1.2.tgz", {}, "sha512-cA8uCj0qSoG9e0kevyOWXwPaELRPVg5Pxp6WskLMwerx257Zfnh8Nl0JBH59d7wQzij2CK7qEfJQK3RjuKKIug=="], + + "client-only": ["client-only@0.0.1", "https://registry.npmjs.com/client-only/-/client-only-0.0.1.tgz", {}, "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="], + + "clsx": ["clsx@2.1.1", "https://registry.npmjs.com/clsx/-/clsx-2.1.1.tgz", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="], + + "cm6-theme-basic-light": ["cm6-theme-basic-light@0.2.0", "https://registry.npmjs.com/cm6-theme-basic-light/-/cm6-theme-basic-light-0.2.0.tgz", { "peerDependencies": { "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.0.0", "@lezer/highlight": "^1.0.0" } }, "sha512-1prg2gv44sYfpHscP26uLT/ePrh0mlmVwMSoSd3zYKQ92Ab3jPRLzyCnpyOCQLJbK+YdNs4HvMRqMNYdy4pMhA=="], + + "cmdk": ["cmdk@1.1.1", "https://registry.npmjs.com/cmdk/-/cmdk-1.1.1.tgz", { "dependencies": { "@radix-ui/react-compose-refs": "^1.1.1", "@radix-ui/react-dialog": "^1.1.6", "@radix-ui/react-id": "^1.1.0", "@radix-ui/react-primitive": "^2.0.2" }, "peerDependencies": { "react": "^18 || ^19 || ^19.0.0-rc", "react-dom": "^18 || ^19 || ^19.0.0-rc" } }, "sha512-Vsv7kFaXm+ptHDMZ7izaRsP70GgrW9NBNGswt9OZaVBLlE0SNpDq8eu/VGXyF9r7M0azK3Wy7OlYXsuyYLFzHg=="], + + "codemirror": ["codemirror@6.0.2", "https://registry.npmjs.com/codemirror/-/codemirror-6.0.2.tgz", { "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/commands": "^6.0.0", "@codemirror/language": "^6.0.0", "@codemirror/lint": "^6.0.0", "@codemirror/search": "^6.0.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.0.0" } }, "sha512-VhydHotNW5w1UGK0Qj96BwSk/Zqbp9WbnyK2W/eVMv4QyF41INRGpjUhFJY7/uDNuudSc33a/PKr4iDqRduvHw=="], + + "color-convert": ["color-convert@2.0.1", "https://registry.npmjs.com/color-convert/-/color-convert-2.0.1.tgz", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], + + "color-name": ["color-name@1.1.4", "https://registry.npmjs.com/color-name/-/color-name-1.1.4.tgz", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="], + + "comma-separated-tokens": ["comma-separated-tokens@2.0.3", "https://registry.npmjs.com/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", {}, "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg=="], + + "compute-scroll-into-view": ["compute-scroll-into-view@2.0.4", "https://registry.npmjs.com/compute-scroll-into-view/-/compute-scroll-into-view-2.0.4.tgz", {}, "sha512-y/ZA3BGnxoM/QHHQ2Uy49CLtnWPbt4tTPpEEZiEmmiWBFKjej7nEyH8Ryz54jH0MLXflUYA3Er2zUxPSJu5R+g=="], + + "concat-map": ["concat-map@0.0.1", "https://registry.npmjs.com/concat-map/-/concat-map-0.0.1.tgz", {}, "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="], + + "confbox": ["confbox@0.2.2", "https://registry.npmjs.com/confbox/-/confbox-0.2.2.tgz", {}, "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ=="], + + "consola": ["consola@3.4.2", "https://registry.npmjs.com/consola/-/consola-3.4.2.tgz", {}, "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA=="], + + "convert-source-map": ["convert-source-map@2.0.0", "https://registry.npmjs.com/convert-source-map/-/convert-source-map-2.0.0.tgz", {}, "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="], + + "cookie": ["cookie@0.7.2", "https://registry.npmjs.com/cookie/-/cookie-0.7.2.tgz", {}, "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w=="], + + "crelt": ["crelt@1.0.6", "https://registry.npmjs.com/crelt/-/crelt-1.0.6.tgz", {}, "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g=="], + + "cross-spawn": ["cross-spawn@7.0.6", "https://registry.npmjs.com/cross-spawn/-/cross-spawn-7.0.6.tgz", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="], + + "csstype": ["csstype@3.2.3", "https://registry.npmjs.com/csstype/-/csstype-3.2.3.tgz", {}, "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="], + + "d": ["d@1.0.2", "https://registry.npmjs.com/d/-/d-1.0.2.tgz", { "dependencies": { "es5-ext": "^0.10.64", "type": "^2.7.2" } }, "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw=="], + + "d3-array": ["d3-array@3.2.4", "https://registry.npmjs.com/d3-array/-/d3-array-3.2.4.tgz", { "dependencies": { "internmap": "1 - 2" } }, "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg=="], + + "d3-color": ["d3-color@3.1.0", "https://registry.npmjs.com/d3-color/-/d3-color-3.1.0.tgz", {}, "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA=="], + + "d3-ease": ["d3-ease@3.0.1", "https://registry.npmjs.com/d3-ease/-/d3-ease-3.0.1.tgz", {}, "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w=="], + + "d3-format": ["d3-format@3.1.2", "https://registry.npmjs.com/d3-format/-/d3-format-3.1.2.tgz", {}, "sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg=="], + + "d3-interpolate": ["d3-interpolate@3.0.1", "https://registry.npmjs.com/d3-interpolate/-/d3-interpolate-3.0.1.tgz", { "dependencies": { "d3-color": "1 - 3" } }, "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g=="], + + "d3-path": ["d3-path@3.1.0", "https://registry.npmjs.com/d3-path/-/d3-path-3.1.0.tgz", {}, "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ=="], + + "d3-scale": ["d3-scale@4.0.2", "https://registry.npmjs.com/d3-scale/-/d3-scale-4.0.2.tgz", { "dependencies": { "d3-array": "2.10.0 - 3", "d3-format": "1 - 3", "d3-interpolate": "1.2.0 - 3", "d3-time": "2.1.1 - 3", "d3-time-format": "2 - 4" } }, "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ=="], + + "d3-shape": ["d3-shape@3.2.0", "https://registry.npmjs.com/d3-shape/-/d3-shape-3.2.0.tgz", { "dependencies": { "d3-path": "^3.1.0" } }, "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA=="], + + "d3-time": ["d3-time@3.1.0", "https://registry.npmjs.com/d3-time/-/d3-time-3.1.0.tgz", { "dependencies": { "d3-array": "2 - 3" } }, "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q=="], + + "d3-time-format": ["d3-time-format@4.1.0", "https://registry.npmjs.com/d3-time-format/-/d3-time-format-4.1.0.tgz", { "dependencies": { "d3-time": "1 - 3" } }, "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg=="], + + "d3-timer": ["d3-timer@3.0.1", "https://registry.npmjs.com/d3-timer/-/d3-timer-3.0.1.tgz", {}, "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA=="], + + "damerau-levenshtein": ["damerau-levenshtein@1.0.8", "https://registry.npmjs.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", {}, "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA=="], + + "data-view-buffer": ["data-view-buffer@1.0.2", "https://registry.npmjs.com/data-view-buffer/-/data-view-buffer-1.0.2.tgz", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "is-data-view": "^1.0.2" } }, "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ=="], + + "data-view-byte-length": ["data-view-byte-length@1.0.2", "https://registry.npmjs.com/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "is-data-view": "^1.0.2" } }, "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ=="], + + "data-view-byte-offset": ["data-view-byte-offset@1.0.1", "https://registry.npmjs.com/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "is-data-view": "^1.0.1" } }, "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ=="], + + "date-fns": ["date-fns@4.1.0", "https://registry.npmjs.com/date-fns/-/date-fns-4.1.0.tgz", {}, "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg=="], + + "date-fns-jalali": ["date-fns-jalali@4.1.0-0", "https://registry.npmjs.com/date-fns-jalali/-/date-fns-jalali-4.1.0-0.tgz", {}, "sha512-hTIP/z+t+qKwBDcmmsnmjWTduxCg+5KfdqWQvb2X/8C9+knYY6epN/pfxdDuyVlSVeFz0sM5eEfwIUQ70U4ckg=="], + + "debug": ["debug@4.4.3", "https://registry.npmjs.com/debug/-/debug-4.4.3.tgz", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], + + "decimal.js": ["decimal.js@10.6.0", "https://registry.npmjs.com/decimal.js/-/decimal.js-10.6.0.tgz", {}, "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg=="], + + "decimal.js-light": ["decimal.js-light@2.5.1", "https://registry.npmjs.com/decimal.js-light/-/decimal.js-light-2.5.1.tgz", {}, "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg=="], + + "decode-named-character-reference": ["decode-named-character-reference@1.2.0", "https://registry.npmjs.com/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz", { "dependencies": { "character-entities": "^2.0.0" } }, "sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q=="], + + "deep-is": ["deep-is@0.1.4", "https://registry.npmjs.com/deep-is/-/deep-is-0.1.4.tgz", {}, "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="], + + "deepmerge-ts": ["deepmerge-ts@7.1.5", "https://registry.npmjs.com/deepmerge-ts/-/deepmerge-ts-7.1.5.tgz", {}, "sha512-HOJkrhaYsweh+W+e74Yn7YStZOilkoPb6fycpwNLKzSPtruFs48nYis0zy5yJz1+ktUhHxoRDJ27RQAWLIJVJw=="], + + "define-data-property": ["define-data-property@1.1.4", "https://registry.npmjs.com/define-data-property/-/define-data-property-1.1.4.tgz", { "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", "gopd": "^1.0.1" } }, "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A=="], + + "define-properties": ["define-properties@1.2.1", "https://registry.npmjs.com/define-properties/-/define-properties-1.2.1.tgz", { "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" } }, "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg=="], + + "defu": ["defu@6.1.4", "https://registry.npmjs.com/defu/-/defu-6.1.4.tgz", {}, "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg=="], + + "dequal": ["dequal@2.0.3", "https://registry.npmjs.com/dequal/-/dequal-2.0.3.tgz", {}, "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA=="], + + "destr": ["destr@2.0.5", "https://registry.npmjs.com/destr/-/destr-2.0.5.tgz", {}, "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA=="], + + "detect-libc": ["detect-libc@2.1.2", "https://registry.npmjs.com/detect-libc/-/detect-libc-2.1.2.tgz", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="], + + "detect-node-es": ["detect-node-es@1.1.0", "https://registry.npmjs.com/detect-node-es/-/detect-node-es-1.1.0.tgz", {}, "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ=="], + + "devlop": ["devlop@1.1.0", "https://registry.npmjs.com/devlop/-/devlop-1.1.0.tgz", { "dependencies": { "dequal": "^2.0.0" } }, "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA=="], + + "diff": ["diff@5.2.0", "https://registry.npmjs.com/diff/-/diff-5.2.0.tgz", {}, "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A=="], + + "doctrine": ["doctrine@2.1.0", "https://registry.npmjs.com/doctrine/-/doctrine-2.1.0.tgz", { "dependencies": { "esutils": "^2.0.2" } }, "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw=="], + + "dom-helpers": ["dom-helpers@5.2.1", "https://registry.npmjs.com/dom-helpers/-/dom-helpers-5.2.1.tgz", { "dependencies": { "@babel/runtime": "^7.8.7", "csstype": "^3.0.2" } }, "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA=="], + + "dotenv": ["dotenv@16.6.1", "https://registry.npmjs.com/dotenv/-/dotenv-16.6.1.tgz", {}, "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow=="], + + "downshift": ["downshift@7.6.2", "https://registry.npmjs.com/downshift/-/downshift-7.6.2.tgz", { "dependencies": { "@babel/runtime": "^7.14.8", "compute-scroll-into-view": "^2.0.4", "prop-types": "^15.7.2", "react-is": "^17.0.2", "tslib": "^2.3.0" }, "peerDependencies": { "react": ">=16.12.0" } }, "sha512-iOv+E1Hyt3JDdL9yYcOgW7nZ7GQ2Uz6YbggwXvKUSleetYhU2nXD482Rz6CzvM4lvI1At34BYruKAL4swRGxaA=="], + + "dunder-proto": ["dunder-proto@1.0.1", "https://registry.npmjs.com/dunder-proto/-/dunder-proto-1.0.1.tgz", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="], + + "effect": ["effect@3.18.4", "https://registry.npmjs.com/effect/-/effect-3.18.4.tgz", { "dependencies": { "@standard-schema/spec": "^1.0.0", "fast-check": "^3.23.1" } }, "sha512-b1LXQJLe9D11wfnOKAk3PKxuqYshQ0Heez+y5pnkd3jLj1yx9QhM72zZ9uUrOQyNvrs2GZZd/3maL0ZV18YuDA=="], + + "electron-to-chromium": ["electron-to-chromium@1.5.267", "https://registry.npmjs.com/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz", {}, "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw=="], + + "embla-carousel": ["embla-carousel@8.6.0", "https://registry.npmjs.com/embla-carousel/-/embla-carousel-8.6.0.tgz", {}, "sha512-SjWyZBHJPbqxHOzckOfo8lHisEaJWmwd23XppYFYVh10bU66/Pn5tkVkbkCMZVdbUE5eTCI2nD8OyIP4Z+uwkA=="], + + "embla-carousel-react": ["embla-carousel-react@8.6.0", "https://registry.npmjs.com/embla-carousel-react/-/embla-carousel-react-8.6.0.tgz", { "dependencies": { "embla-carousel": "8.6.0", "embla-carousel-reactive-utils": "8.6.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.1 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" } }, "sha512-0/PjqU7geVmo6F734pmPqpyHqiM99olvyecY7zdweCw+6tKEXnrE90pBiBbMMU8s5tICemzpQ3hi5EpxzGW+JA=="], + + "embla-carousel-reactive-utils": ["embla-carousel-reactive-utils@8.6.0", "https://registry.npmjs.com/embla-carousel-reactive-utils/-/embla-carousel-reactive-utils-8.6.0.tgz", { "peerDependencies": { "embla-carousel": "8.6.0" } }, "sha512-fMVUDUEx0/uIEDM0Mz3dHznDhfX+znCCDCeIophYb1QGVM7YThSWX+wz11zlYwWFOr74b4QLGg0hrGPJeG2s4A=="], + + "emoji-regex": ["emoji-regex@9.2.2", "https://registry.npmjs.com/emoji-regex/-/emoji-regex-9.2.2.tgz", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="], + + "empathic": ["empathic@2.0.0", "https://registry.npmjs.com/empathic/-/empathic-2.0.0.tgz", {}, "sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA=="], + + "enhanced-resolve": ["enhanced-resolve@5.18.4", "https://registry.npmjs.com/enhanced-resolve/-/enhanced-resolve-5.18.4.tgz", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" } }, "sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q=="], + + "es-abstract": ["es-abstract@1.24.1", "https://registry.npmjs.com/es-abstract/-/es-abstract-1.24.1.tgz", { "dependencies": { "array-buffer-byte-length": "^1.0.2", "arraybuffer.prototype.slice": "^1.0.4", "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "call-bound": "^1.0.4", "data-view-buffer": "^1.0.2", "data-view-byte-length": "^1.0.2", "data-view-byte-offset": "^1.0.1", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "es-set-tostringtag": "^2.1.0", "es-to-primitive": "^1.3.0", "function.prototype.name": "^1.1.8", "get-intrinsic": "^1.3.0", "get-proto": "^1.0.1", "get-symbol-description": "^1.1.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", "has-proto": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "internal-slot": "^1.1.0", "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", "is-data-view": "^1.0.2", "is-negative-zero": "^2.0.3", "is-regex": "^1.2.1", "is-set": "^2.0.3", "is-shared-array-buffer": "^1.0.4", "is-string": "^1.1.1", "is-typed-array": "^1.1.15", "is-weakref": "^1.1.1", "math-intrinsics": "^1.1.0", "object-inspect": "^1.13.4", "object-keys": "^1.1.1", "object.assign": "^4.1.7", "own-keys": "^1.0.1", "regexp.prototype.flags": "^1.5.4", "safe-array-concat": "^1.1.3", "safe-push-apply": "^1.0.0", "safe-regex-test": "^1.1.0", "set-proto": "^1.0.0", "stop-iteration-iterator": "^1.1.0", "string.prototype.trim": "^1.2.10", "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", "typed-array-buffer": "^1.0.3", "typed-array-byte-length": "^1.0.3", "typed-array-byte-offset": "^1.0.4", "typed-array-length": "^1.0.7", "unbox-primitive": "^1.1.0", "which-typed-array": "^1.1.19" } }, "sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw=="], + + "es-define-property": ["es-define-property@1.0.1", "https://registry.npmjs.com/es-define-property/-/es-define-property-1.0.1.tgz", {}, "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="], + + "es-errors": ["es-errors@1.3.0", "https://registry.npmjs.com/es-errors/-/es-errors-1.3.0.tgz", {}, "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="], + + "es-iterator-helpers": ["es-iterator-helpers@1.2.2", "https://registry.npmjs.com/es-iterator-helpers/-/es-iterator-helpers-1.2.2.tgz", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.4", "define-properties": "^1.2.1", "es-abstract": "^1.24.1", "es-errors": "^1.3.0", "es-set-tostringtag": "^2.1.0", "function-bind": "^1.1.2", "get-intrinsic": "^1.3.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", "has-proto": "^1.2.0", "has-symbols": "^1.1.0", "internal-slot": "^1.1.0", "iterator.prototype": "^1.1.5", "safe-array-concat": "^1.1.3" } }, "sha512-BrUQ0cPTB/IwXj23HtwHjS9n7O4h9FX94b4xc5zlTHxeLgTAdzYUDyy6KdExAl9lbN5rtfe44xpjpmj9grxs5w=="], + + "es-object-atoms": ["es-object-atoms@1.1.1", "https://registry.npmjs.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA=="], + + "es-set-tostringtag": ["es-set-tostringtag@2.1.0", "https://registry.npmjs.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", { "dependencies": { "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA=="], + + "es-shim-unscopables": ["es-shim-unscopables@1.1.0", "https://registry.npmjs.com/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", { "dependencies": { "hasown": "^2.0.2" } }, "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw=="], + + "es-to-primitive": ["es-to-primitive@1.3.0", "https://registry.npmjs.com/es-to-primitive/-/es-to-primitive-1.3.0.tgz", { "dependencies": { "is-callable": "^1.2.7", "is-date-object": "^1.0.5", "is-symbol": "^1.0.4" } }, "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g=="], + + "es5-ext": ["es5-ext@0.10.64", "https://registry.npmjs.com/es5-ext/-/es5-ext-0.10.64.tgz", { "dependencies": { "es6-iterator": "^2.0.3", "es6-symbol": "^3.1.3", "esniff": "^2.0.1", "next-tick": "^1.1.0" } }, "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg=="], + + "es6-iterator": ["es6-iterator@2.0.3", "https://registry.npmjs.com/es6-iterator/-/es6-iterator-2.0.3.tgz", { "dependencies": { "d": "1", "es5-ext": "^0.10.35", "es6-symbol": "^3.1.1" } }, "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g=="], + + "es6-symbol": ["es6-symbol@3.1.4", "https://registry.npmjs.com/es6-symbol/-/es6-symbol-3.1.4.tgz", { "dependencies": { "d": "^1.0.2", "ext": "^1.7.0" } }, "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg=="], + + "escalade": ["escalade@3.2.0", "https://registry.npmjs.com/escalade/-/escalade-3.2.0.tgz", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], + + "escape-carriage": ["escape-carriage@1.3.1", "https://registry.npmjs.com/escape-carriage/-/escape-carriage-1.3.1.tgz", {}, "sha512-GwBr6yViW3ttx1kb7/Oh+gKQ1/TrhYwxKqVmg5gS+BK+Qe2KrOa/Vh7w3HPBvgGf0LfcDGoY9I6NHKoA5Hozhw=="], + + "escape-string-regexp": ["escape-string-regexp@4.0.0", "https://registry.npmjs.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="], + + "eslint": ["eslint@9.39.2", "https://registry.npmjs.com/eslint/-/eslint-9.39.2.tgz", { "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.21.1", "@eslint/config-helpers": "^0.4.2", "@eslint/core": "^0.17.0", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "9.39.2", "@eslint/plugin-kit": "^0.4.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.4.0", "eslint-visitor-keys": "^4.2.1", "espree": "^10.4.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw=="], + + "eslint-config-next": ["eslint-config-next@16.1.3", "https://registry.npmjs.com/eslint-config-next/-/eslint-config-next-16.1.3.tgz", { "dependencies": { "@next/eslint-plugin-next": "16.1.3", "eslint-import-resolver-node": "^0.3.6", "eslint-import-resolver-typescript": "^3.5.2", "eslint-plugin-import": "^2.32.0", "eslint-plugin-jsx-a11y": "^6.10.0", "eslint-plugin-react": "^7.37.0", "eslint-plugin-react-hooks": "^7.0.0", "globals": "16.4.0", "typescript-eslint": "^8.46.0" }, "peerDependencies": { "eslint": ">=9.0.0", "typescript": ">=3.3.1" }, "optionalPeers": ["typescript"] }, "sha512-q2Z87VSsoJcv+vgR+Dm8NPRf+rErXcRktuBR5y3umo/j5zLjIWH7rqBCh3X804gUGKbOrqbgsLUkqDE35C93Gw=="], + + "eslint-import-resolver-node": ["eslint-import-resolver-node@0.3.9", "https://registry.npmjs.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", { "dependencies": { "debug": "^3.2.7", "is-core-module": "^2.13.0", "resolve": "^1.22.4" } }, "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g=="], + + "eslint-import-resolver-typescript": ["eslint-import-resolver-typescript@3.10.1", "https://registry.npmjs.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.10.1.tgz", { "dependencies": { "@nolyfill/is-core-module": "1.0.39", "debug": "^4.4.0", "get-tsconfig": "^4.10.0", "is-bun-module": "^2.0.0", "stable-hash": "^0.0.5", "tinyglobby": "^0.2.13", "unrs-resolver": "^1.6.2" }, "peerDependencies": { "eslint": "*", "eslint-plugin-import": "*", "eslint-plugin-import-x": "*" }, "optionalPeers": ["eslint-plugin-import", "eslint-plugin-import-x"] }, "sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ=="], + + "eslint-module-utils": ["eslint-module-utils@2.12.1", "https://registry.npmjs.com/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", { "dependencies": { "debug": "^3.2.7" } }, "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw=="], + + "eslint-plugin-import": ["eslint-plugin-import@2.32.0", "https://registry.npmjs.com/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", { "dependencies": { "@rtsao/scc": "^1.1.0", "array-includes": "^3.1.9", "array.prototype.findlastindex": "^1.2.6", "array.prototype.flat": "^1.3.3", "array.prototype.flatmap": "^1.3.3", "debug": "^3.2.7", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.9", "eslint-module-utils": "^2.12.1", "hasown": "^2.0.2", "is-core-module": "^2.16.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", "object.fromentries": "^2.0.8", "object.groupby": "^1.0.3", "object.values": "^1.2.1", "semver": "^6.3.1", "string.prototype.trimend": "^1.0.9", "tsconfig-paths": "^3.15.0" }, "peerDependencies": { "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" } }, "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA=="], + + "eslint-plugin-jsx-a11y": ["eslint-plugin-jsx-a11y@6.10.2", "https://registry.npmjs.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", { "dependencies": { "aria-query": "^5.3.2", "array-includes": "^3.1.8", "array.prototype.flatmap": "^1.3.2", "ast-types-flow": "^0.0.8", "axe-core": "^4.10.0", "axobject-query": "^4.1.0", "damerau-levenshtein": "^1.0.8", "emoji-regex": "^9.2.2", "hasown": "^2.0.2", "jsx-ast-utils": "^3.3.5", "language-tags": "^1.0.9", "minimatch": "^3.1.2", "object.fromentries": "^2.0.8", "safe-regex-test": "^1.0.3", "string.prototype.includes": "^2.0.1" }, "peerDependencies": { "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" } }, "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q=="], + + "eslint-plugin-react": ["eslint-plugin-react@7.37.5", "https://registry.npmjs.com/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", { "dependencies": { "array-includes": "^3.1.8", "array.prototype.findlast": "^1.2.5", "array.prototype.flatmap": "^1.3.3", "array.prototype.tosorted": "^1.1.4", "doctrine": "^2.1.0", "es-iterator-helpers": "^1.2.1", "estraverse": "^5.3.0", "hasown": "^2.0.2", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", "object.entries": "^1.1.9", "object.fromentries": "^2.0.8", "object.values": "^1.2.1", "prop-types": "^15.8.1", "resolve": "^2.0.0-next.5", "semver": "^6.3.1", "string.prototype.matchall": "^4.0.12", "string.prototype.repeat": "^1.0.0" }, "peerDependencies": { "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" } }, "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA=="], + + "eslint-plugin-react-hooks": ["eslint-plugin-react-hooks@7.0.1", "https://registry.npmjs.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.0.1.tgz", { "dependencies": { "@babel/core": "^7.24.4", "@babel/parser": "^7.24.4", "hermes-parser": "^0.25.1", "zod": "^3.25.0 || ^4.0.0", "zod-validation-error": "^3.5.0 || ^4.0.0" }, "peerDependencies": { "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" } }, "sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA=="], + + "eslint-scope": ["eslint-scope@8.4.0", "https://registry.npmjs.com/eslint-scope/-/eslint-scope-8.4.0.tgz", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg=="], + + "eslint-visitor-keys": ["eslint-visitor-keys@4.2.1", "https://registry.npmjs.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", {}, "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ=="], + + "esniff": ["esniff@2.0.1", "https://registry.npmjs.com/esniff/-/esniff-2.0.1.tgz", { "dependencies": { "d": "^1.0.1", "es5-ext": "^0.10.62", "event-emitter": "^0.3.5", "type": "^2.7.2" } }, "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg=="], + + "espree": ["espree@10.4.0", "https://registry.npmjs.com/espree/-/espree-10.4.0.tgz", { "dependencies": { "acorn": "^8.15.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^4.2.1" } }, "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ=="], + + "esquery": ["esquery@1.7.0", "https://registry.npmjs.com/esquery/-/esquery-1.7.0.tgz", { "dependencies": { "estraverse": "^5.1.0" } }, "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g=="], + + "esrecurse": ["esrecurse@4.3.0", "https://registry.npmjs.com/esrecurse/-/esrecurse-4.3.0.tgz", { "dependencies": { "estraverse": "^5.2.0" } }, "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag=="], + + "estraverse": ["estraverse@5.3.0", "https://registry.npmjs.com/estraverse/-/estraverse-5.3.0.tgz", {}, "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="], + + "estree-util-is-identifier-name": ["estree-util-is-identifier-name@3.0.0", "https://registry.npmjs.com/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", {}, "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg=="], + + "estree-util-visit": ["estree-util-visit@2.0.0", "https://registry.npmjs.com/estree-util-visit/-/estree-util-visit-2.0.0.tgz", { "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/unist": "^3.0.0" } }, "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww=="], + + "esutils": ["esutils@2.0.3", "https://registry.npmjs.com/esutils/-/esutils-2.0.3.tgz", {}, "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="], + + "event-emitter": ["event-emitter@0.3.5", "https://registry.npmjs.com/event-emitter/-/event-emitter-0.3.5.tgz", { "dependencies": { "d": "1", "es5-ext": "~0.10.14" } }, "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA=="], + + "eventemitter3": ["eventemitter3@4.0.7", "https://registry.npmjs.com/eventemitter3/-/eventemitter3-4.0.7.tgz", {}, "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw=="], + + "exsolve": ["exsolve@1.0.8", "https://registry.npmjs.com/exsolve/-/exsolve-1.0.8.tgz", {}, "sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA=="], + + "ext": ["ext@1.7.0", "https://registry.npmjs.com/ext/-/ext-1.7.0.tgz", { "dependencies": { "type": "^2.7.2" } }, "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw=="], + + "extend": ["extend@3.0.2", "https://registry.npmjs.com/extend/-/extend-3.0.2.tgz", {}, "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="], + + "fast-check": ["fast-check@3.23.2", "https://registry.npmjs.com/fast-check/-/fast-check-3.23.2.tgz", { "dependencies": { "pure-rand": "^6.1.0" } }, "sha512-h5+1OzzfCC3Ef7VbtKdcv7zsstUQwUDlYpUTvjeUsJAssPgLn7QzbboPtL5ro04Mq0rPOsMzl7q5hIbRs2wD1A=="], + + "fast-deep-equal": ["fast-deep-equal@3.1.3", "https://registry.npmjs.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], + + "fast-equals": ["fast-equals@5.4.0", "https://registry.npmjs.com/fast-equals/-/fast-equals-5.4.0.tgz", {}, "sha512-jt2DW/aNFNwke7AUd+Z+e6pz39KO5rzdbbFCg2sGafS4mk13MI7Z8O5z9cADNn5lhGODIgLwug6TZO2ctf7kcw=="], + + "fast-glob": ["fast-glob@3.3.1", "https://registry.npmjs.com/fast-glob/-/fast-glob-3.3.1.tgz", { "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.4" } }, "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg=="], + + "fast-json-stable-stringify": ["fast-json-stable-stringify@2.1.0", "https://registry.npmjs.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", {}, "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="], + + "fast-levenshtein": ["fast-levenshtein@2.0.6", "https://registry.npmjs.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", {}, "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="], + + "fastq": ["fastq@1.20.1", "https://registry.npmjs.com/fastq/-/fastq-1.20.1.tgz", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw=="], + + "fault": ["fault@2.0.1", "https://registry.npmjs.com/fault/-/fault-2.0.1.tgz", { "dependencies": { "format": "^0.2.0" } }, "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ=="], + + "fdir": ["fdir@6.5.0", "https://registry.npmjs.com/fdir/-/fdir-6.5.0.tgz", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="], + + "file-entry-cache": ["file-entry-cache@8.0.0", "https://registry.npmjs.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz", { "dependencies": { "flat-cache": "^4.0.0" } }, "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ=="], + + "fill-range": ["fill-range@7.1.1", "https://registry.npmjs.com/fill-range/-/fill-range-7.1.1.tgz", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="], + + "find-up": ["find-up@5.0.0", "https://registry.npmjs.com/find-up/-/find-up-5.0.0.tgz", { "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="], + + "flat-cache": ["flat-cache@4.0.1", "https://registry.npmjs.com/flat-cache/-/flat-cache-4.0.1.tgz", { "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.4" } }, "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw=="], + + "flatted": ["flatted@3.3.3", "https://registry.npmjs.com/flatted/-/flatted-3.3.3.tgz", {}, "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg=="], + + "for-each": ["for-each@0.3.5", "https://registry.npmjs.com/for-each/-/for-each-0.3.5.tgz", { "dependencies": { "is-callable": "^1.2.7" } }, "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg=="], + + "format": ["format@0.2.2", "https://registry.npmjs.com/format/-/format-0.2.2.tgz", {}, "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww=="], + + "framer-motion": ["framer-motion@12.26.2", "https://registry.npmjs.com/framer-motion/-/framer-motion-12.26.2.tgz", { "dependencies": { "motion-dom": "^12.26.2", "motion-utils": "^12.24.10", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-lflOQEdjquUi9sCg5Y1LrsZDlsjrHw7m0T9Yedvnk7Bnhqfkc89/Uha10J3CFhkL+TCZVCRw9eUGyM/lyYhXQA=="], + + "function-bind": ["function-bind@1.1.2", "https://registry.npmjs.com/function-bind/-/function-bind-1.1.2.tgz", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="], + + "function.prototype.name": ["function.prototype.name@1.1.8", "https://registry.npmjs.com/function.prototype.name/-/function.prototype.name-1.1.8.tgz", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "functions-have-names": "^1.2.3", "hasown": "^2.0.2", "is-callable": "^1.2.7" } }, "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q=="], + + "functions-have-names": ["functions-have-names@1.2.3", "https://registry.npmjs.com/functions-have-names/-/functions-have-names-1.2.3.tgz", {}, "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ=="], + + "generator-function": ["generator-function@2.0.1", "https://registry.npmjs.com/generator-function/-/generator-function-2.0.1.tgz", {}, "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g=="], + + "gensync": ["gensync@1.0.0-beta.2", "https://registry.npmjs.com/gensync/-/gensync-1.0.0-beta.2.tgz", {}, "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="], + + "get-intrinsic": ["get-intrinsic@1.3.0", "https://registry.npmjs.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "math-intrinsics": "^1.1.0" } }, "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ=="], + + "get-nonce": ["get-nonce@1.0.1", "https://registry.npmjs.com/get-nonce/-/get-nonce-1.0.1.tgz", {}, "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q=="], + + "get-proto": ["get-proto@1.0.1", "https://registry.npmjs.com/get-proto/-/get-proto-1.0.1.tgz", { "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" } }, "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g=="], + + "get-symbol-description": ["get-symbol-description@1.1.0", "https://registry.npmjs.com/get-symbol-description/-/get-symbol-description-1.1.0.tgz", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6" } }, "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg=="], + + "get-tsconfig": ["get-tsconfig@4.13.0", "https://registry.npmjs.com/get-tsconfig/-/get-tsconfig-4.13.0.tgz", { "dependencies": { "resolve-pkg-maps": "^1.0.0" } }, "sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ=="], + + "giget": ["giget@2.0.0", "https://registry.npmjs.com/giget/-/giget-2.0.0.tgz", { "dependencies": { "citty": "^0.1.6", "consola": "^3.4.0", "defu": "^6.1.4", "node-fetch-native": "^1.6.6", "nypm": "^0.6.0", "pathe": "^2.0.3" }, "bin": { "giget": "dist/cli.mjs" } }, "sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA=="], + + "glob-parent": ["glob-parent@6.0.2", "https://registry.npmjs.com/glob-parent/-/glob-parent-6.0.2.tgz", { "dependencies": { "is-glob": "^4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="], + + "globals": ["globals@16.4.0", "https://registry.npmjs.com/globals/-/globals-16.4.0.tgz", {}, "sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw=="], + + "globalthis": ["globalthis@1.0.4", "https://registry.npmjs.com/globalthis/-/globalthis-1.0.4.tgz", { "dependencies": { "define-properties": "^1.2.1", "gopd": "^1.0.1" } }, "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ=="], + + "gopd": ["gopd@1.2.0", "https://registry.npmjs.com/gopd/-/gopd-1.2.0.tgz", {}, "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="], + + "graceful-fs": ["graceful-fs@4.2.11", "https://registry.npmjs.com/graceful-fs/-/graceful-fs-4.2.11.tgz", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], + + "has-bigints": ["has-bigints@1.1.0", "https://registry.npmjs.com/has-bigints/-/has-bigints-1.1.0.tgz", {}, "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg=="], + + "has-flag": ["has-flag@4.0.0", "https://registry.npmjs.com/has-flag/-/has-flag-4.0.0.tgz", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="], + + "has-property-descriptors": ["has-property-descriptors@1.0.2", "https://registry.npmjs.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", { "dependencies": { "es-define-property": "^1.0.0" } }, "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg=="], + + "has-proto": ["has-proto@1.2.0", "https://registry.npmjs.com/has-proto/-/has-proto-1.2.0.tgz", { "dependencies": { "dunder-proto": "^1.0.0" } }, "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ=="], + + "has-symbols": ["has-symbols@1.1.0", "https://registry.npmjs.com/has-symbols/-/has-symbols-1.1.0.tgz", {}, "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ=="], + + "has-tostringtag": ["has-tostringtag@1.0.2", "https://registry.npmjs.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz", { "dependencies": { "has-symbols": "^1.0.3" } }, "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw=="], + + "hasown": ["hasown@2.0.2", "https://registry.npmjs.com/hasown/-/hasown-2.0.2.tgz", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="], + + "hast-util-parse-selector": ["hast-util-parse-selector@2.2.5", "https://registry.npmjs.com/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz", {}, "sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ=="], + + "hast-util-to-jsx-runtime": ["hast-util-to-jsx-runtime@2.3.6", "https://registry.npmjs.com/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", { "dependencies": { "@types/estree": "^1.0.0", "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "comma-separated-tokens": "^2.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "hast-util-whitespace": "^3.0.0", "mdast-util-mdx-expression": "^2.0.0", "mdast-util-mdx-jsx": "^3.0.0", "mdast-util-mdxjs-esm": "^2.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "style-to-js": "^1.0.0", "unist-util-position": "^5.0.0", "vfile-message": "^4.0.0" } }, "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg=="], + + "hast-util-whitespace": ["hast-util-whitespace@3.0.0", "https://registry.npmjs.com/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw=="], + + "hastscript": ["hastscript@6.0.0", "https://registry.npmjs.com/hastscript/-/hastscript-6.0.0.tgz", { "dependencies": { "@types/hast": "^2.0.0", "comma-separated-tokens": "^1.0.0", "hast-util-parse-selector": "^2.0.0", "property-information": "^5.0.0", "space-separated-tokens": "^1.0.0" } }, "sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w=="], + + "hermes-estree": ["hermes-estree@0.25.1", "https://registry.npmjs.com/hermes-estree/-/hermes-estree-0.25.1.tgz", {}, "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw=="], + + "hermes-parser": ["hermes-parser@0.25.1", "https://registry.npmjs.com/hermes-parser/-/hermes-parser-0.25.1.tgz", { "dependencies": { "hermes-estree": "0.25.1" } }, "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA=="], + + "highlight.js": ["highlight.js@10.7.3", "https://registry.npmjs.com/highlight.js/-/highlight.js-10.7.3.tgz", {}, "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A=="], + + "highlightjs-vue": ["highlightjs-vue@1.0.0", "https://registry.npmjs.com/highlightjs-vue/-/highlightjs-vue-1.0.0.tgz", {}, "sha512-PDEfEF102G23vHmPhLyPboFCD+BkMGu+GuJe2d9/eH4FsCwvgBpnc9n0pGE+ffKdph38s6foEZiEjdgHdzp+IA=="], + + "html-url-attributes": ["html-url-attributes@3.0.1", "https://registry.npmjs.com/html-url-attributes/-/html-url-attributes-3.0.1.tgz", {}, "sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ=="], + + "ieee754": ["ieee754@1.2.1", "https://registry.npmjs.com/ieee754/-/ieee754-1.2.1.tgz", {}, "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="], + + "ignore": ["ignore@5.3.2", "https://registry.npmjs.com/ignore/-/ignore-5.3.2.tgz", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="], + + "immer": ["immer@10.2.0", "https://registry.npmjs.com/immer/-/immer-10.2.0.tgz", {}, "sha512-d/+XTN3zfODyjr89gM3mPq1WNX2B8pYsu7eORitdwyA2sBubnTl3laYlBk4sXY5FUa5qTZGBDPJICVbvqzjlbw=="], + + "import-fresh": ["import-fresh@3.3.1", "https://registry.npmjs.com/import-fresh/-/import-fresh-3.3.1.tgz", { "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" } }, "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ=="], + + "imurmurhash": ["imurmurhash@0.1.4", "https://registry.npmjs.com/imurmurhash/-/imurmurhash-0.1.4.tgz", {}, "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="], + + "inline-style-parser": ["inline-style-parser@0.2.7", "https://registry.npmjs.com/inline-style-parser/-/inline-style-parser-0.2.7.tgz", {}, "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA=="], + + "input-otp": ["input-otp@1.4.2", "https://registry.npmjs.com/input-otp/-/input-otp-1.4.2.tgz", { "peerDependencies": { "react": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc" } }, "sha512-l3jWwYNvrEa6NTCt7BECfCm48GvwuZzkoeG3gBL2w4CHeOXW3eKFmf9UNYkNfYc3mxMrthMnxjIE07MT0zLBQA=="], + + "internal-slot": ["internal-slot@1.1.0", "https://registry.npmjs.com/internal-slot/-/internal-slot-1.1.0.tgz", { "dependencies": { "es-errors": "^1.3.0", "hasown": "^2.0.2", "side-channel": "^1.1.0" } }, "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw=="], + + "internmap": ["internmap@2.0.3", "https://registry.npmjs.com/internmap/-/internmap-2.0.3.tgz", {}, "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg=="], + + "intersection-observer": ["intersection-observer@0.10.0", "https://registry.npmjs.com/intersection-observer/-/intersection-observer-0.10.0.tgz", {}, "sha512-fn4bQ0Xq8FTej09YC/jqKZwtijpvARlRp6wxL5WTA6yPe2YWSJ5RJh7Nm79rK2qB0wr6iDQzH60XGq5V/7u8YQ=="], + + "intl-messageformat": ["intl-messageformat@10.7.18", "https://registry.npmjs.com/intl-messageformat/-/intl-messageformat-10.7.18.tgz", { "dependencies": { "@formatjs/ecma402-abstract": "2.3.6", "@formatjs/fast-memoize": "2.2.7", "@formatjs/icu-messageformat-parser": "2.11.4", "tslib": "^2.8.0" } }, "sha512-m3Ofv/X/tV8Y3tHXLohcuVuhWKo7BBq62cqY15etqmLxg2DZ34AGGgQDeR+SCta2+zICb1NX83af0GJmbQ1++g=="], + + "is-alphabetical": ["is-alphabetical@2.0.1", "https://registry.npmjs.com/is-alphabetical/-/is-alphabetical-2.0.1.tgz", {}, "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ=="], + + "is-alphanumerical": ["is-alphanumerical@2.0.1", "https://registry.npmjs.com/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", { "dependencies": { "is-alphabetical": "^2.0.0", "is-decimal": "^2.0.0" } }, "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw=="], + + "is-array-buffer": ["is-array-buffer@3.0.5", "https://registry.npmjs.com/is-array-buffer/-/is-array-buffer-3.0.5.tgz", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "get-intrinsic": "^1.2.6" } }, "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A=="], + + "is-async-function": ["is-async-function@2.1.1", "https://registry.npmjs.com/is-async-function/-/is-async-function-2.1.1.tgz", { "dependencies": { "async-function": "^1.0.0", "call-bound": "^1.0.3", "get-proto": "^1.0.1", "has-tostringtag": "^1.0.2", "safe-regex-test": "^1.1.0" } }, "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ=="], + + "is-bigint": ["is-bigint@1.1.0", "https://registry.npmjs.com/is-bigint/-/is-bigint-1.1.0.tgz", { "dependencies": { "has-bigints": "^1.0.2" } }, "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ=="], + + "is-boolean-object": ["is-boolean-object@1.2.2", "https://registry.npmjs.com/is-boolean-object/-/is-boolean-object-1.2.2.tgz", { "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" } }, "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A=="], + + "is-bun-module": ["is-bun-module@2.0.0", "https://registry.npmjs.com/is-bun-module/-/is-bun-module-2.0.0.tgz", { "dependencies": { "semver": "^7.7.1" } }, "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ=="], + + "is-callable": ["is-callable@1.2.7", "https://registry.npmjs.com/is-callable/-/is-callable-1.2.7.tgz", {}, "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA=="], + + "is-core-module": ["is-core-module@2.16.1", "https://registry.npmjs.com/is-core-module/-/is-core-module-2.16.1.tgz", { "dependencies": { "hasown": "^2.0.2" } }, "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w=="], + + "is-data-view": ["is-data-view@1.0.2", "https://registry.npmjs.com/is-data-view/-/is-data-view-1.0.2.tgz", { "dependencies": { "call-bound": "^1.0.2", "get-intrinsic": "^1.2.6", "is-typed-array": "^1.1.13" } }, "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw=="], + + "is-date-object": ["is-date-object@1.1.0", "https://registry.npmjs.com/is-date-object/-/is-date-object-1.1.0.tgz", { "dependencies": { "call-bound": "^1.0.2", "has-tostringtag": "^1.0.2" } }, "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg=="], + + "is-decimal": ["is-decimal@2.0.1", "https://registry.npmjs.com/is-decimal/-/is-decimal-2.0.1.tgz", {}, "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A=="], + + "is-extglob": ["is-extglob@2.1.1", "https://registry.npmjs.com/is-extglob/-/is-extglob-2.1.1.tgz", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="], + + "is-finalizationregistry": ["is-finalizationregistry@1.1.1", "https://registry.npmjs.com/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", { "dependencies": { "call-bound": "^1.0.3" } }, "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg=="], + + "is-generator-function": ["is-generator-function@1.1.2", "https://registry.npmjs.com/is-generator-function/-/is-generator-function-1.1.2.tgz", { "dependencies": { "call-bound": "^1.0.4", "generator-function": "^2.0.0", "get-proto": "^1.0.1", "has-tostringtag": "^1.0.2", "safe-regex-test": "^1.1.0" } }, "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA=="], + + "is-glob": ["is-glob@4.0.3", "https://registry.npmjs.com/is-glob/-/is-glob-4.0.3.tgz", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="], + + "is-hexadecimal": ["is-hexadecimal@2.0.1", "https://registry.npmjs.com/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", {}, "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg=="], + + "is-map": ["is-map@2.0.3", "https://registry.npmjs.com/is-map/-/is-map-2.0.3.tgz", {}, "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw=="], + + "is-negative-zero": ["is-negative-zero@2.0.3", "https://registry.npmjs.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz", {}, "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw=="], + + "is-number": ["is-number@7.0.0", "https://registry.npmjs.com/is-number/-/is-number-7.0.0.tgz", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="], + + "is-number-object": ["is-number-object@1.1.1", "https://registry.npmjs.com/is-number-object/-/is-number-object-1.1.1.tgz", { "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" } }, "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw=="], + + "is-plain-obj": ["is-plain-obj@4.1.0", "https://registry.npmjs.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz", {}, "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg=="], + + "is-regex": ["is-regex@1.2.1", "https://registry.npmjs.com/is-regex/-/is-regex-1.2.1.tgz", { "dependencies": { "call-bound": "^1.0.2", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g=="], + + "is-set": ["is-set@2.0.3", "https://registry.npmjs.com/is-set/-/is-set-2.0.3.tgz", {}, "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg=="], + + "is-shared-array-buffer": ["is-shared-array-buffer@1.0.4", "https://registry.npmjs.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", { "dependencies": { "call-bound": "^1.0.3" } }, "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A=="], + + "is-string": ["is-string@1.1.1", "https://registry.npmjs.com/is-string/-/is-string-1.1.1.tgz", { "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" } }, "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA=="], + + "is-symbol": ["is-symbol@1.1.1", "https://registry.npmjs.com/is-symbol/-/is-symbol-1.1.1.tgz", { "dependencies": { "call-bound": "^1.0.2", "has-symbols": "^1.1.0", "safe-regex-test": "^1.1.0" } }, "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w=="], + + "is-typed-array": ["is-typed-array@1.1.15", "https://registry.npmjs.com/is-typed-array/-/is-typed-array-1.1.15.tgz", { "dependencies": { "which-typed-array": "^1.1.16" } }, "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ=="], + + "is-weakmap": ["is-weakmap@2.0.2", "https://registry.npmjs.com/is-weakmap/-/is-weakmap-2.0.2.tgz", {}, "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w=="], + + "is-weakref": ["is-weakref@1.1.1", "https://registry.npmjs.com/is-weakref/-/is-weakref-1.1.1.tgz", { "dependencies": { "call-bound": "^1.0.3" } }, "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew=="], + + "is-weakset": ["is-weakset@2.0.4", "https://registry.npmjs.com/is-weakset/-/is-weakset-2.0.4.tgz", { "dependencies": { "call-bound": "^1.0.3", "get-intrinsic": "^1.2.6" } }, "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ=="], + + "isarray": ["isarray@2.0.5", "https://registry.npmjs.com/isarray/-/isarray-2.0.5.tgz", {}, "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="], + + "isexe": ["isexe@2.0.0", "https://registry.npmjs.com/isexe/-/isexe-2.0.0.tgz", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], + + "isomorphic.js": ["isomorphic.js@0.2.5", "https://registry.npmjs.com/isomorphic.js/-/isomorphic.js-0.2.5.tgz", {}, "sha512-PIeMbHqMt4DnUP3MA/Flc0HElYjMXArsw1qwJZcm9sqR8mq3l8NYizFMty0pWwE/tzIGH3EKK5+jes5mAr85yw=="], + + "iterator.prototype": ["iterator.prototype@1.1.5", "https://registry.npmjs.com/iterator.prototype/-/iterator.prototype-1.1.5.tgz", { "dependencies": { "define-data-property": "^1.1.4", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.6", "get-proto": "^1.0.0", "has-symbols": "^1.1.0", "set-function-name": "^2.0.2" } }, "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g=="], + + "jiti": ["jiti@2.6.1", "https://registry.npmjs.com/jiti/-/jiti-2.6.1.tgz", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ=="], + + "jose": ["jose@4.15.9", "https://registry.npmjs.com/jose/-/jose-4.15.9.tgz", {}, "sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA=="], + + "js-cookie": ["js-cookie@3.0.5", "https://registry.npmjs.com/js-cookie/-/js-cookie-3.0.5.tgz", {}, "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw=="], + + "js-tokens": ["js-tokens@4.0.0", "https://registry.npmjs.com/js-tokens/-/js-tokens-4.0.0.tgz", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], + + "js-yaml": ["js-yaml@4.1.1", "https://registry.npmjs.com/js-yaml/-/js-yaml-4.1.1.tgz", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA=="], + + "jsesc": ["jsesc@3.1.0", "https://registry.npmjs.com/jsesc/-/jsesc-3.1.0.tgz", { "bin": { "jsesc": "bin/jsesc" } }, "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA=="], + + "json-buffer": ["json-buffer@3.0.1", "https://registry.npmjs.com/json-buffer/-/json-buffer-3.0.1.tgz", {}, "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="], + + "json-schema-traverse": ["json-schema-traverse@0.4.1", "https://registry.npmjs.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", {}, "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="], + + "json-stable-stringify-without-jsonify": ["json-stable-stringify-without-jsonify@1.0.1", "https://registry.npmjs.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", {}, "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw=="], + + "json5": ["json5@1.0.2", "https://registry.npmjs.com/json5/-/json5-1.0.2.tgz", { "dependencies": { "minimist": "^1.2.0" }, "bin": { "json5": "lib/cli.js" } }, "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA=="], + + "jsx-ast-utils": ["jsx-ast-utils@3.3.5", "https://registry.npmjs.com/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", { "dependencies": { "array-includes": "^3.1.6", "array.prototype.flat": "^1.3.1", "object.assign": "^4.1.4", "object.values": "^1.1.6" } }, "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ=="], + + "keyv": ["keyv@4.5.4", "https://registry.npmjs.com/keyv/-/keyv-4.5.4.tgz", { "dependencies": { "json-buffer": "3.0.1" } }, "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw=="], + + "kleur": ["kleur@4.1.5", "https://registry.npmjs.com/kleur/-/kleur-4.1.5.tgz", {}, "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ=="], + + "language-subtag-registry": ["language-subtag-registry@0.3.23", "https://registry.npmjs.com/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", {}, "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ=="], + + "language-tags": ["language-tags@1.0.9", "https://registry.npmjs.com/language-tags/-/language-tags-1.0.9.tgz", { "dependencies": { "language-subtag-registry": "^0.3.20" } }, "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA=="], + + "levn": ["levn@0.4.1", "https://registry.npmjs.com/levn/-/levn-0.4.1.tgz", { "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" } }, "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ=="], + + "lexical": ["lexical@0.35.0", "https://registry.npmjs.com/lexical/-/lexical-0.35.0.tgz", {}, "sha512-3VuV8xXhh5xJA6tzvfDvE0YBCMkIZUmxtRilJQDDdCgJCc+eut6qAv2qbN+pbqvarqcQqPN1UF+8YvsjmyOZpw=="], + + "lib0": ["lib0@0.2.117", "https://registry.npmjs.com/lib0/-/lib0-0.2.117.tgz", { "dependencies": { "isomorphic.js": "^0.2.4" }, "bin": { "0serve": "bin/0serve.js", "0gentesthtml": "bin/gentesthtml.js", "0ecdsa-generate-keypair": "bin/0ecdsa-generate-keypair.js" } }, "sha512-DeXj9X5xDCjgKLU/7RR+/HQEVzuuEUiwldwOGsHK/sfAfELGWEyTcf0x+uOvCvK3O2zPmZePXWL85vtia6GyZw=="], + + "lightningcss": ["lightningcss@1.30.2", "https://registry.npmjs.com/lightningcss/-/lightningcss-1.30.2.tgz", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-android-arm64": "1.30.2", "lightningcss-darwin-arm64": "1.30.2", "lightningcss-darwin-x64": "1.30.2", "lightningcss-freebsd-x64": "1.30.2", "lightningcss-linux-arm-gnueabihf": "1.30.2", "lightningcss-linux-arm64-gnu": "1.30.2", "lightningcss-linux-arm64-musl": "1.30.2", "lightningcss-linux-x64-gnu": "1.30.2", "lightningcss-linux-x64-musl": "1.30.2", "lightningcss-win32-arm64-msvc": "1.30.2", "lightningcss-win32-x64-msvc": "1.30.2" } }, "sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ=="], + + "lightningcss-android-arm64": ["lightningcss-android-arm64@1.30.2", "https://registry.npmjs.com/lightningcss-android-arm64/-/lightningcss-android-arm64-1.30.2.tgz", { "os": "android", "cpu": "arm64" }, "sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A=="], + + "lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.30.2", "https://registry.npmjs.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.2.tgz", { "os": "darwin", "cpu": "arm64" }, "sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA=="], + + "lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.30.2", "https://registry.npmjs.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.2.tgz", { "os": "darwin", "cpu": "x64" }, "sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ=="], + + "lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.30.2", "https://registry.npmjs.com/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.2.tgz", { "os": "freebsd", "cpu": "x64" }, "sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA=="], + + "lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.30.2", "https://registry.npmjs.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.2.tgz", { "os": "linux", "cpu": "arm" }, "sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA=="], + + "lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.30.2", "https://registry.npmjs.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.2.tgz", { "os": "linux", "cpu": "arm64" }, "sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A=="], + + "lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.30.2", "https://registry.npmjs.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.2.tgz", { "os": "linux", "cpu": "arm64" }, "sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA=="], + + "lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.30.2", "https://registry.npmjs.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.2.tgz", { "os": "linux", "cpu": "x64" }, "sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w=="], + + "lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.30.2", "https://registry.npmjs.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.2.tgz", { "os": "linux", "cpu": "x64" }, "sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA=="], + + "lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.30.2", "https://registry.npmjs.com/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.2.tgz", { "os": "win32", "cpu": "arm64" }, "sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ=="], + + "lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.30.2", "https://registry.npmjs.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.2.tgz", { "os": "win32", "cpu": "x64" }, "sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw=="], + + "locate-path": ["locate-path@6.0.0", "https://registry.npmjs.com/locate-path/-/locate-path-6.0.0.tgz", { "dependencies": { "p-locate": "^5.0.0" } }, "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw=="], + + "lodash": ["lodash@4.17.21", "https://registry.npmjs.com/lodash/-/lodash-4.17.21.tgz", {}, "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="], + + "lodash-es": ["lodash-es@4.17.22", "https://registry.npmjs.com/lodash-es/-/lodash-es-4.17.22.tgz", {}, "sha512-XEawp1t0gxSi9x01glktRZ5HDy0HXqrM0x5pXQM98EaI0NxO6jVM7omDOxsuEo5UIASAnm2bRp1Jt/e0a2XU8Q=="], + + "lodash.merge": ["lodash.merge@4.6.2", "https://registry.npmjs.com/lodash.merge/-/lodash.merge-4.6.2.tgz", {}, "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="], + + "longest-streak": ["longest-streak@3.1.0", "https://registry.npmjs.com/longest-streak/-/longest-streak-3.1.0.tgz", {}, "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g=="], + + "loose-envify": ["loose-envify@1.4.0", "https://registry.npmjs.com/loose-envify/-/loose-envify-1.4.0.tgz", { "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, "bin": { "loose-envify": "cli.js" } }, "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q=="], + + "lowlight": ["lowlight@1.20.0", "https://registry.npmjs.com/lowlight/-/lowlight-1.20.0.tgz", { "dependencies": { "fault": "^1.0.0", "highlight.js": "~10.7.0" } }, "sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw=="], + + "lru-cache": ["lru-cache@6.0.0", "https://registry.npmjs.com/lru-cache/-/lru-cache-6.0.0.tgz", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA=="], + + "lucide-react": ["lucide-react@0.525.0", "https://registry.npmjs.com/lucide-react/-/lucide-react-0.525.0.tgz", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-Tm1txJ2OkymCGkvwoHt33Y2JpN5xucVq1slHcgE6Lk0WjDfjgKWor5CdVER8U6DvcfMwh4M8XxmpTiyzfmfDYQ=="], + + "lz-string": ["lz-string@1.5.0", "https://registry.npmjs.com/lz-string/-/lz-string-1.5.0.tgz", { "bin": { "lz-string": "bin/bin.js" } }, "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ=="], + + "magic-string": ["magic-string@0.30.21", "https://registry.npmjs.com/magic-string/-/magic-string-0.30.21.tgz", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], + + "markdown-table": ["markdown-table@3.0.4", "https://registry.npmjs.com/markdown-table/-/markdown-table-3.0.4.tgz", {}, "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw=="], + + "math-intrinsics": ["math-intrinsics@1.1.0", "https://registry.npmjs.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz", {}, "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="], + + "mdast-util-directive": ["mdast-util-directive@3.1.0", "https://registry.npmjs.com/mdast-util-directive/-/mdast-util-directive-3.1.0.tgz", { "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "ccount": "^2.0.0", "devlop": "^1.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0", "parse-entities": "^4.0.0", "stringify-entities": "^4.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-I3fNFt+DHmpWCYAT7quoM6lHf9wuqtI+oCOfvILnoicNIqjh5E3dEJWiXuYME2gNe8vl1iMQwyUHa7bgFmak6Q=="], + + "mdast-util-from-markdown": ["mdast-util-from-markdown@2.0.2", "https://registry.npmjs.com/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz", { "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "mdast-util-to-string": "^4.0.0", "micromark": "^4.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-decode-string": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "unist-util-stringify-position": "^4.0.0" } }, "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA=="], + + "mdast-util-frontmatter": ["mdast-util-frontmatter@2.0.1", "https://registry.npmjs.com/mdast-util-frontmatter/-/mdast-util-frontmatter-2.0.1.tgz", { "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "escape-string-regexp": "^5.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0", "micromark-extension-frontmatter": "^2.0.0" } }, "sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA=="], + + "mdast-util-gfm-strikethrough": ["mdast-util-gfm-strikethrough@2.0.0", "https://registry.npmjs.com/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg=="], + + "mdast-util-gfm-table": ["mdast-util-gfm-table@2.0.0", "https://registry.npmjs.com/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", { "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "markdown-table": "^3.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg=="], + + "mdast-util-gfm-task-list-item": ["mdast-util-gfm-task-list-item@2.0.0", "https://registry.npmjs.com/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", { "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ=="], + + "mdast-util-highlight-mark": ["mdast-util-highlight-mark@1.2.2", "https://registry.npmjs.com/mdast-util-highlight-mark/-/mdast-util-highlight-mark-1.2.2.tgz", { "dependencies": { "micromark-extension-highlight-mark": "1.2.0" } }, "sha512-OYumVoytj+B9YgwzBhBcYUCLYHIPvJtAvwnMyKhUXbfUFuER5S+FDZyu9fadUxm2TCT5fRYK3jQXh2ioWAxrMw=="], + + "mdast-util-mdx": ["mdast-util-mdx@3.0.0", "https://registry.npmjs.com/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", { "dependencies": { "mdast-util-from-markdown": "^2.0.0", "mdast-util-mdx-expression": "^2.0.0", "mdast-util-mdx-jsx": "^3.0.0", "mdast-util-mdxjs-esm": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w=="], + + "mdast-util-mdx-expression": ["mdast-util-mdx-expression@2.0.1", "https://registry.npmjs.com/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", { "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ=="], + + "mdast-util-mdx-jsx": ["mdast-util-mdx-jsx@3.2.0", "https://registry.npmjs.com/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz", { "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "ccount": "^2.0.0", "devlop": "^1.1.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0", "parse-entities": "^4.0.0", "stringify-entities": "^4.0.0", "unist-util-stringify-position": "^4.0.0", "vfile-message": "^4.0.0" } }, "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q=="], + + "mdast-util-mdxjs-esm": ["mdast-util-mdxjs-esm@2.0.1", "https://registry.npmjs.com/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", { "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg=="], + + "mdast-util-phrasing": ["mdast-util-phrasing@4.1.0", "https://registry.npmjs.com/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", { "dependencies": { "@types/mdast": "^4.0.0", "unist-util-is": "^6.0.0" } }, "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w=="], + + "mdast-util-to-hast": ["mdast-util-to-hast@13.2.1", "https://registry.npmjs.com/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz", { "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "@ungap/structured-clone": "^1.0.0", "devlop": "^1.0.0", "micromark-util-sanitize-uri": "^2.0.0", "trim-lines": "^3.0.0", "unist-util-position": "^5.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0" } }, "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA=="], + + "mdast-util-to-markdown": ["mdast-util-to-markdown@2.1.2", "https://registry.npmjs.com/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", { "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "longest-streak": "^3.0.0", "mdast-util-phrasing": "^4.0.0", "mdast-util-to-string": "^4.0.0", "micromark-util-classify-character": "^2.0.0", "micromark-util-decode-string": "^2.0.0", "unist-util-visit": "^5.0.0", "zwitch": "^2.0.0" } }, "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA=="], + + "mdast-util-to-string": ["mdast-util-to-string@4.0.0", "https://registry.npmjs.com/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", { "dependencies": { "@types/mdast": "^4.0.0" } }, "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg=="], + + "merge2": ["merge2@1.4.1", "https://registry.npmjs.com/merge2/-/merge2-1.4.1.tgz", {}, "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="], + + "micromark": ["micromark@4.0.2", "https://registry.npmjs.com/micromark/-/micromark-4.0.2.tgz", { "dependencies": { "@types/debug": "^4.0.0", "debug": "^4.0.0", "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-combine-extensions": "^2.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-encode": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-subtokenize": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA=="], + + "micromark-core-commonmark": ["micromark-core-commonmark@2.0.3", "https://registry.npmjs.com/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", { "dependencies": { "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "micromark-factory-destination": "^2.0.0", "micromark-factory-label": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-factory-title": "^2.0.0", "micromark-factory-whitespace": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-classify-character": "^2.0.0", "micromark-util-html-tag-name": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-subtokenize": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg=="], + + "micromark-extension-directive": ["micromark-extension-directive@3.0.2", "https://registry.npmjs.com/micromark-extension-directive/-/micromark-extension-directive-3.0.2.tgz", { "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", "micromark-factory-whitespace": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "parse-entities": "^4.0.0" } }, "sha512-wjcXHgk+PPdmvR58Le9d7zQYWy+vKEU9Se44p2CrCDPiLr2FMyiT4Fyb5UFKFC66wGB3kPlgD7q3TnoqPS7SZA=="], + + "micromark-extension-frontmatter": ["micromark-extension-frontmatter@2.0.0", "https://registry.npmjs.com/micromark-extension-frontmatter/-/micromark-extension-frontmatter-2.0.0.tgz", { "dependencies": { "fault": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg=="], + + "micromark-extension-gfm-strikethrough": ["micromark-extension-gfm-strikethrough@2.1.0", "https://registry.npmjs.com/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", { "dependencies": { "devlop": "^1.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-classify-character": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw=="], + + "micromark-extension-gfm-table": ["micromark-extension-gfm-table@2.1.1", "https://registry.npmjs.com/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz", { "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg=="], + + "micromark-extension-gfm-task-list-item": ["micromark-extension-gfm-task-list-item@2.1.0", "https://registry.npmjs.com/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", { "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw=="], + + "micromark-extension-highlight-mark": ["micromark-extension-highlight-mark@1.2.0", "https://registry.npmjs.com/micromark-extension-highlight-mark/-/micromark-extension-highlight-mark-1.2.0.tgz", { "dependencies": { "micromark-util-chunked": "^2.0.0", "micromark-util-classify-character": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "uvu": "^0.5.6" } }, "sha512-huGtbd/9kQsMk8u7nrVMaS5qH/47yDG6ZADggo5Owz5JoY8wdfQjfuy118/QiYNCvdFuFDbzT0A7K7Hp2cBsXA=="], + + "micromark-extension-mdx-expression": ["micromark-extension-mdx-expression@3.0.1", "https://registry.npmjs.com/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.1.tgz", { "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", "micromark-factory-mdx-expression": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-events-to-acorn": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q=="], + + "micromark-extension-mdx-jsx": ["micromark-extension-mdx-jsx@3.0.2", "https://registry.npmjs.com/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.2.tgz", { "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "micromark-factory-mdx-expression": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-events-to-acorn": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ=="], + + "micromark-extension-mdx-md": ["micromark-extension-mdx-md@2.0.0", "https://registry.npmjs.com/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz", { "dependencies": { "micromark-util-types": "^2.0.0" } }, "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ=="], + + "micromark-extension-mdxjs": ["micromark-extension-mdxjs@3.0.0", "https://registry.npmjs.com/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz", { "dependencies": { "acorn": "^8.0.0", "acorn-jsx": "^5.0.0", "micromark-extension-mdx-expression": "^3.0.0", "micromark-extension-mdx-jsx": "^3.0.0", "micromark-extension-mdx-md": "^2.0.0", "micromark-extension-mdxjs-esm": "^3.0.0", "micromark-util-combine-extensions": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ=="], + + "micromark-extension-mdxjs-esm": ["micromark-extension-mdxjs-esm@3.0.0", "https://registry.npmjs.com/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz", { "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-events-to-acorn": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "unist-util-position-from-estree": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A=="], + + "micromark-factory-destination": ["micromark-factory-destination@2.0.1", "https://registry.npmjs.com/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA=="], + + "micromark-factory-label": ["micromark-factory-label@2.0.1", "https://registry.npmjs.com/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", { "dependencies": { "devlop": "^1.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg=="], + + "micromark-factory-mdx-expression": ["micromark-factory-mdx-expression@2.0.3", "https://registry.npmjs.com/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.3.tgz", { "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-events-to-acorn": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "unist-util-position-from-estree": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ=="], + + "micromark-factory-space": ["micromark-factory-space@2.0.1", "https://registry.npmjs.com/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg=="], + + "micromark-factory-title": ["micromark-factory-title@2.0.1", "https://registry.npmjs.com/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", { "dependencies": { "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw=="], + + "micromark-factory-whitespace": ["micromark-factory-whitespace@2.0.1", "https://registry.npmjs.com/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", { "dependencies": { "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ=="], + + "micromark-util-character": ["micromark-util-character@2.1.1", "https://registry.npmjs.com/micromark-util-character/-/micromark-util-character-2.1.1.tgz", { "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q=="], + + "micromark-util-chunked": ["micromark-util-chunked@2.0.1", "https://registry.npmjs.com/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", { "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA=="], + + "micromark-util-classify-character": ["micromark-util-classify-character@2.0.1", "https://registry.npmjs.com/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q=="], + + "micromark-util-combine-extensions": ["micromark-util-combine-extensions@2.0.1", "https://registry.npmjs.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", { "dependencies": { "micromark-util-chunked": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg=="], + + "micromark-util-decode-numeric-character-reference": ["micromark-util-decode-numeric-character-reference@2.0.2", "https://registry.npmjs.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", { "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw=="], + + "micromark-util-decode-string": ["micromark-util-decode-string@2.0.1", "https://registry.npmjs.com/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", { "dependencies": { "decode-named-character-reference": "^1.0.0", "micromark-util-character": "^2.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-symbol": "^2.0.0" } }, "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ=="], + + "micromark-util-encode": ["micromark-util-encode@2.0.1", "https://registry.npmjs.com/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", {}, "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw=="], + + "micromark-util-events-to-acorn": ["micromark-util-events-to-acorn@2.0.3", "https://registry.npmjs.com/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.3.tgz", { "dependencies": { "@types/estree": "^1.0.0", "@types/unist": "^3.0.0", "devlop": "^1.0.0", "estree-util-visit": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg=="], + + "micromark-util-html-tag-name": ["micromark-util-html-tag-name@2.0.1", "https://registry.npmjs.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", {}, "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA=="], + + "micromark-util-normalize-identifier": ["micromark-util-normalize-identifier@2.0.1", "https://registry.npmjs.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", { "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q=="], + + "micromark-util-resolve-all": ["micromark-util-resolve-all@2.0.1", "https://registry.npmjs.com/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", { "dependencies": { "micromark-util-types": "^2.0.0" } }, "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg=="], + + "micromark-util-sanitize-uri": ["micromark-util-sanitize-uri@2.0.1", "https://registry.npmjs.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-encode": "^2.0.0", "micromark-util-symbol": "^2.0.0" } }, "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ=="], + + "micromark-util-subtokenize": ["micromark-util-subtokenize@2.1.0", "https://registry.npmjs.com/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", { "dependencies": { "devlop": "^1.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA=="], + + "micromark-util-symbol": ["micromark-util-symbol@2.0.1", "https://registry.npmjs.com/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", {}, "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q=="], + + "micromark-util-types": ["micromark-util-types@2.0.2", "https://registry.npmjs.com/micromark-util-types/-/micromark-util-types-2.0.2.tgz", {}, "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA=="], + + "micromatch": ["micromatch@4.0.8", "https://registry.npmjs.com/micromatch/-/micromatch-4.0.8.tgz", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="], + + "mime-db": ["mime-db@1.54.0", "https://registry.npmjs.com/mime-db/-/mime-db-1.54.0.tgz", {}, "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ=="], + + "minimatch": ["minimatch@3.1.2", "https://registry.npmjs.com/minimatch/-/minimatch-3.1.2.tgz", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="], + + "minimist": ["minimist@1.2.8", "https://registry.npmjs.com/minimist/-/minimist-1.2.8.tgz", {}, "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="], + + "motion-dom": ["motion-dom@12.26.2", "https://registry.npmjs.com/motion-dom/-/motion-dom-12.26.2.tgz", { "dependencies": { "motion-utils": "^12.24.10" } }, "sha512-KLMT1BroY8oKNeliA3JMNJ+nbCIsTKg6hJpDb4jtRAJ7nCKnnpg/LTq/NGqG90Limitz3kdAnAVXecdFVGlWTw=="], + + "motion-utils": ["motion-utils@12.24.10", "https://registry.npmjs.com/motion-utils/-/motion-utils-12.24.10.tgz", {}, "sha512-x5TFgkCIP4pPsRLpKoI86jv/q8t8FQOiM/0E8QKBzfMozWHfkKap2gA1hOki+B5g3IsBNpxbUnfOum1+dgvYww=="], + + "mri": ["mri@1.2.0", "https://registry.npmjs.com/mri/-/mri-1.2.0.tgz", {}, "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA=="], + + "ms": ["ms@2.1.3", "https://registry.npmjs.com/ms/-/ms-2.1.3.tgz", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], + + "nanoid": ["nanoid@3.3.11", "https://registry.npmjs.com/nanoid/-/nanoid-3.3.11.tgz", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], + + "napi-postinstall": ["napi-postinstall@0.3.4", "https://registry.npmjs.com/napi-postinstall/-/napi-postinstall-0.3.4.tgz", { "bin": { "napi-postinstall": "lib/cli.js" } }, "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ=="], + + "natural-compare": ["natural-compare@1.4.0", "https://registry.npmjs.com/natural-compare/-/natural-compare-1.4.0.tgz", {}, "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="], + + "negotiator": ["negotiator@1.0.0", "https://registry.npmjs.com/negotiator/-/negotiator-1.0.0.tgz", {}, "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg=="], + + "next": ["next@16.1.3", "https://registry.npmjs.com/next/-/next-16.1.3.tgz", { "dependencies": { "@next/env": "16.1.3", "@swc/helpers": "0.5.15", "baseline-browser-mapping": "^2.8.3", "caniuse-lite": "^1.0.30001579", "postcss": "8.4.31", "styled-jsx": "5.1.6" }, "optionalDependencies": { "@next/swc-darwin-arm64": "16.1.3", "@next/swc-darwin-x64": "16.1.3", "@next/swc-linux-arm64-gnu": "16.1.3", "@next/swc-linux-arm64-musl": "16.1.3", "@next/swc-linux-x64-gnu": "16.1.3", "@next/swc-linux-x64-musl": "16.1.3", "@next/swc-win32-arm64-msvc": "16.1.3", "@next/swc-win32-x64-msvc": "16.1.3", "sharp": "^0.34.4" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.51.1", "babel-plugin-react-compiler": "*", "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "sass": "^1.3.0" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "babel-plugin-react-compiler", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-gthG3TRD+E3/mA0uDQb9lqBmx1zVosq5kIwxNN6+MRNd085GzD+9VXMPUs+GGZCbZ+GDZdODUq4Pm7CTXK6ipw=="], + + "next-auth": ["next-auth@4.24.13", "https://registry.npmjs.com/next-auth/-/next-auth-4.24.13.tgz", { "dependencies": { "@babel/runtime": "^7.20.13", "@panva/hkdf": "^1.0.2", "cookie": "^0.7.0", "jose": "^4.15.5", "oauth": "^0.9.15", "openid-client": "^5.4.0", "preact": "^10.6.3", "preact-render-to-string": "^5.1.19", "uuid": "^8.3.2" }, "peerDependencies": { "@auth/core": "0.34.3", "next": "^12.2.5 || ^13 || ^14 || ^15 || ^16", "nodemailer": "^7.0.7", "react": "^17.0.2 || ^18 || ^19", "react-dom": "^17.0.2 || ^18 || ^19" }, "optionalPeers": ["@auth/core", "nodemailer"] }, "sha512-sgObCfcfL7BzIK76SS5TnQtc3yo2Oifp/yIpfv6fMfeBOiBJkDWF3A2y9+yqnmJ4JKc2C+nMjSjmgDeTwgN1rQ=="], + + "next-intl": ["next-intl@4.7.0", "https://registry.npmjs.com/next-intl/-/next-intl-4.7.0.tgz", { "dependencies": { "@formatjs/intl-localematcher": "^0.5.4", "@parcel/watcher": "^2.4.1", "@swc/core": "^1.15.2", "negotiator": "^1.0.0", "next-intl-swc-plugin-extractor": "^4.7.0", "po-parser": "^2.1.1", "use-intl": "^4.7.0" }, "peerDependencies": { "next": "^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0", "typescript": "^5.0.0" }, "optionalPeers": ["typescript"] }, "sha512-gvROzcNr/HM0jTzQlKWQxUNk8jrZ0bREz+bht3wNbv+uzlZ5Kn3J+m+viosub18QJ72S08UJnVK50PXWcUvwpQ=="], + + "next-intl-swc-plugin-extractor": ["next-intl-swc-plugin-extractor@4.7.0", "https://registry.npmjs.com/next-intl-swc-plugin-extractor/-/next-intl-swc-plugin-extractor-4.7.0.tgz", {}, "sha512-iAqflu2FWdQMWhwB0B2z52X7LmEpvnMNJXqVERZQ7bK5p9iqQLu70ur6Ka6NfiXLxfb+AeAkUX5qIciQOg+87A=="], + + "next-themes": ["next-themes@0.4.6", "https://registry.npmjs.com/next-themes/-/next-themes-0.4.6.tgz", { "peerDependencies": { "react": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", "react-dom": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc" } }, "sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA=="], + + "next-tick": ["next-tick@1.1.0", "https://registry.npmjs.com/next-tick/-/next-tick-1.1.0.tgz", {}, "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ=="], + + "node-addon-api": ["node-addon-api@7.1.1", "https://registry.npmjs.com/node-addon-api/-/node-addon-api-7.1.1.tgz", {}, "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ=="], + + "node-fetch-native": ["node-fetch-native@1.6.7", "https://registry.npmjs.com/node-fetch-native/-/node-fetch-native-1.6.7.tgz", {}, "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q=="], + + "node-releases": ["node-releases@2.0.27", "https://registry.npmjs.com/node-releases/-/node-releases-2.0.27.tgz", {}, "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA=="], + + "nypm": ["nypm@0.6.2", "https://registry.npmjs.com/nypm/-/nypm-0.6.2.tgz", { "dependencies": { "citty": "^0.1.6", "consola": "^3.4.2", "pathe": "^2.0.3", "pkg-types": "^2.3.0", "tinyexec": "^1.0.1" }, "bin": { "nypm": "dist/cli.mjs" } }, "sha512-7eM+hpOtrKrBDCh7Ypu2lJ9Z7PNZBdi/8AT3AX8xoCj43BBVHD0hPSTEvMtkMpfs8FCqBGhxB+uToIQimA111g=="], + + "oauth": ["oauth@0.9.15", "https://registry.npmjs.com/oauth/-/oauth-0.9.15.tgz", {}, "sha512-a5ERWK1kh38ExDEfoO6qUHJb32rd7aYmPHuyCu3Fta/cnICvYmgd2uhuKXvPD+PXB+gCEYYEaQdIRAjCOwAKNA=="], + + "object-assign": ["object-assign@4.1.1", "https://registry.npmjs.com/object-assign/-/object-assign-4.1.1.tgz", {}, "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="], + + "object-hash": ["object-hash@2.2.0", "https://registry.npmjs.com/object-hash/-/object-hash-2.2.0.tgz", {}, "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw=="], + + "object-inspect": ["object-inspect@1.13.4", "https://registry.npmjs.com/object-inspect/-/object-inspect-1.13.4.tgz", {}, "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew=="], + + "object-keys": ["object-keys@1.1.1", "https://registry.npmjs.com/object-keys/-/object-keys-1.1.1.tgz", {}, "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="], + + "object.assign": ["object.assign@4.1.7", "https://registry.npmjs.com/object.assign/-/object.assign-4.1.7.tgz", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0", "has-symbols": "^1.1.0", "object-keys": "^1.1.1" } }, "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw=="], + + "object.entries": ["object.entries@1.1.9", "https://registry.npmjs.com/object.entries/-/object.entries-1.1.9.tgz", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.4", "define-properties": "^1.2.1", "es-object-atoms": "^1.1.1" } }, "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw=="], + + "object.fromentries": ["object.fromentries@2.0.8", "https://registry.npmjs.com/object.fromentries/-/object.fromentries-2.0.8.tgz", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.2", "es-object-atoms": "^1.0.0" } }, "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ=="], + + "object.groupby": ["object.groupby@1.0.3", "https://registry.npmjs.com/object.groupby/-/object.groupby-1.0.3.tgz", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.2" } }, "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ=="], + + "object.values": ["object.values@1.2.1", "https://registry.npmjs.com/object.values/-/object.values-1.2.1.tgz", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" } }, "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA=="], + + "ohash": ["ohash@2.0.11", "https://registry.npmjs.com/ohash/-/ohash-2.0.11.tgz", {}, "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ=="], + + "oidc-token-hash": ["oidc-token-hash@5.2.0", "https://registry.npmjs.com/oidc-token-hash/-/oidc-token-hash-5.2.0.tgz", {}, "sha512-6gj2m8cJZ+iSW8bm0FXdGF0YhIQbKrfP4yWTNzxc31U6MOjfEmB1rHvlYvxI1B7t7BCi1F2vYTT6YhtQRG4hxw=="], + + "openid-client": ["openid-client@5.7.1", "https://registry.npmjs.com/openid-client/-/openid-client-5.7.1.tgz", { "dependencies": { "jose": "^4.15.9", "lru-cache": "^6.0.0", "object-hash": "^2.2.0", "oidc-token-hash": "^5.0.3" } }, "sha512-jDBPgSVfTnkIh71Hg9pRvtJc6wTwqjRkN88+gCFtYWrlP4Yx2Dsrow8uPi3qLr/aeymPF3o2+dS+wOpglK04ew=="], + + "optionator": ["optionator@0.9.4", "https://registry.npmjs.com/optionator/-/optionator-0.9.4.tgz", { "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", "word-wrap": "^1.2.5" } }, "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g=="], + + "outvariant": ["outvariant@1.4.0", "https://registry.npmjs.com/outvariant/-/outvariant-1.4.0.tgz", {}, "sha512-AlWY719RF02ujitly7Kk/0QlV+pXGFDHrHf9O2OKqyqgBieaPOIeuSkL8sRK6j2WK+/ZAURq2kZsY0d8JapUiw=="], + + "own-keys": ["own-keys@1.0.1", "https://registry.npmjs.com/own-keys/-/own-keys-1.0.1.tgz", { "dependencies": { "get-intrinsic": "^1.2.6", "object-keys": "^1.1.1", "safe-push-apply": "^1.0.0" } }, "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg=="], + + "p-limit": ["p-limit@3.1.0", "https://registry.npmjs.com/p-limit/-/p-limit-3.1.0.tgz", { "dependencies": { "yocto-queue": "^0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="], + + "p-locate": ["p-locate@5.0.0", "https://registry.npmjs.com/p-locate/-/p-locate-5.0.0.tgz", { "dependencies": { "p-limit": "^3.0.2" } }, "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="], + + "parent-module": ["parent-module@1.0.1", "https://registry.npmjs.com/parent-module/-/parent-module-1.0.1.tgz", { "dependencies": { "callsites": "^3.0.0" } }, "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="], + + "parse-entities": ["parse-entities@4.0.2", "https://registry.npmjs.com/parse-entities/-/parse-entities-4.0.2.tgz", { "dependencies": { "@types/unist": "^2.0.0", "character-entities-legacy": "^3.0.0", "character-reference-invalid": "^2.0.0", "decode-named-character-reference": "^1.0.0", "is-alphanumerical": "^2.0.0", "is-decimal": "^2.0.0", "is-hexadecimal": "^2.0.0" } }, "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw=="], + + "path-exists": ["path-exists@4.0.0", "https://registry.npmjs.com/path-exists/-/path-exists-4.0.0.tgz", {}, "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="], + + "path-key": ["path-key@3.1.1", "https://registry.npmjs.com/path-key/-/path-key-3.1.1.tgz", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="], + + "path-parse": ["path-parse@1.0.7", "https://registry.npmjs.com/path-parse/-/path-parse-1.0.7.tgz", {}, "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="], + + "pathe": ["pathe@2.0.3", "https://registry.npmjs.com/pathe/-/pathe-2.0.3.tgz", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], + + "perfect-debounce": ["perfect-debounce@1.0.0", "https://registry.npmjs.com/perfect-debounce/-/perfect-debounce-1.0.0.tgz", {}, "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA=="], + + "picocolors": ["picocolors@1.1.1", "https://registry.npmjs.com/picocolors/-/picocolors-1.1.1.tgz", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], + + "picomatch": ["picomatch@4.0.3", "https://registry.npmjs.com/picomatch/-/picomatch-4.0.3.tgz", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="], + + "pkg-types": ["pkg-types@2.3.0", "https://registry.npmjs.com/pkg-types/-/pkg-types-2.3.0.tgz", { "dependencies": { "confbox": "^0.2.2", "exsolve": "^1.0.7", "pathe": "^2.0.3" } }, "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig=="], + + "po-parser": ["po-parser@2.1.1", "https://registry.npmjs.com/po-parser/-/po-parser-2.1.1.tgz", {}, "sha512-ECF4zHLbUItpUgE3OTtLKlPjeBN+fKEczj2zYjDfCGOzicNs0GK3Vg2IoAYwx7LH/XYw43fZQP6xnZ4TkNxSLQ=="], + + "possible-typed-array-names": ["possible-typed-array-names@1.1.0", "https://registry.npmjs.com/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", {}, "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg=="], + + "postcss": ["postcss@8.5.6", "https://registry.npmjs.com/postcss/-/postcss-8.5.6.tgz", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg=="], + + "preact": ["preact@10.28.2", "https://registry.npmjs.com/preact/-/preact-10.28.2.tgz", {}, "sha512-lbteaWGzGHdlIuiJ0l2Jq454m6kcpI1zNje6d8MlGAFlYvP2GO4ibnat7P74Esfz4sPTdM6UxtTwh/d3pwM9JA=="], + + "preact-render-to-string": ["preact-render-to-string@5.2.6", "https://registry.npmjs.com/preact-render-to-string/-/preact-render-to-string-5.2.6.tgz", { "dependencies": { "pretty-format": "^3.8.0" }, "peerDependencies": { "preact": ">=10" } }, "sha512-JyhErpYOvBV1hEPwIxc/fHWXPfnEGdRKxc8gFdAZ7XV4tlzyzG847XAyEZqoDnynP88akM4eaHcSOzNcLWFguw=="], + + "prelude-ls": ["prelude-ls@1.2.1", "https://registry.npmjs.com/prelude-ls/-/prelude-ls-1.2.1.tgz", {}, "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="], + + "pretty-format": ["pretty-format@3.8.0", "https://registry.npmjs.com/pretty-format/-/pretty-format-3.8.0.tgz", {}, "sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew=="], + + "prisma": ["prisma@6.19.2", "https://registry.npmjs.com/prisma/-/prisma-6.19.2.tgz", { "dependencies": { "@prisma/config": "6.19.2", "@prisma/engines": "6.19.2" }, "peerDependencies": { "typescript": ">=5.1.0" }, "optionalPeers": ["typescript"], "bin": { "prisma": "build/index.js" } }, "sha512-XTKeKxtQElcq3U9/jHyxSPgiRgeYDKxWTPOf6NkXA0dNj5j40MfEsZkMbyNpwDWCUv7YBFUl7I2VK/6ALbmhEg=="], + + "prismjs": ["prismjs@1.30.0", "https://registry.npmjs.com/prismjs/-/prismjs-1.30.0.tgz", {}, "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw=="], + + "prop-types": ["prop-types@15.8.1", "https://registry.npmjs.com/prop-types/-/prop-types-15.8.1.tgz", { "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", "react-is": "^16.13.1" } }, "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg=="], + + "property-information": ["property-information@7.1.0", "https://registry.npmjs.com/property-information/-/property-information-7.1.0.tgz", {}, "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ=="], + + "punycode": ["punycode@2.3.1", "https://registry.npmjs.com/punycode/-/punycode-2.3.1.tgz", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="], + + "pure-rand": ["pure-rand@6.1.0", "https://registry.npmjs.com/pure-rand/-/pure-rand-6.1.0.tgz", {}, "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA=="], + + "queue-microtask": ["queue-microtask@1.2.3", "https://registry.npmjs.com/queue-microtask/-/queue-microtask-1.2.3.tgz", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="], + + "rc9": ["rc9@2.1.2", "https://registry.npmjs.com/rc9/-/rc9-2.1.2.tgz", { "dependencies": { "defu": "^6.1.4", "destr": "^2.0.3" } }, "sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg=="], + + "react": ["react@19.2.3", "https://registry.npmjs.com/react/-/react-19.2.3.tgz", {}, "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA=="], + + "react-day-picker": ["react-day-picker@9.13.0", "https://registry.npmjs.com/react-day-picker/-/react-day-picker-9.13.0.tgz", { "dependencies": { "@date-fns/tz": "^1.4.1", "date-fns": "^4.1.0", "date-fns-jalali": "^4.1.0-0" }, "peerDependencies": { "react": ">=16.8.0" } }, "sha512-euzj5Hlq+lOHqI53NiuNhCP8HWgsPf/bBAVijR50hNaY1XwjKjShAnIe8jm8RD2W9IJUvihDIZ+KrmqfFzNhFQ=="], + + "react-devtools-inline": ["react-devtools-inline@4.4.0", "https://registry.npmjs.com/react-devtools-inline/-/react-devtools-inline-4.4.0.tgz", { "dependencies": { "es6-symbol": "^3" } }, "sha512-ES0GolSrKO8wsKbsEkVeiR/ZAaHQTY4zDh1UW8DImVmm8oaGLl3ijJDvSGe+qDRKPZdPRnDtWWnSvvrgxXdThQ=="], + + "react-dom": ["react-dom@19.2.3", "https://registry.npmjs.com/react-dom/-/react-dom-19.2.3.tgz", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.3" } }, "sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg=="], + + "react-error-boundary": ["react-error-boundary@3.1.4", "https://registry.npmjs.com/react-error-boundary/-/react-error-boundary-3.1.4.tgz", { "dependencies": { "@babel/runtime": "^7.12.5" }, "peerDependencies": { "react": ">=16.13.1" } }, "sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA=="], + + "react-hook-form": ["react-hook-form@7.71.1", "https://registry.npmjs.com/react-hook-form/-/react-hook-form-7.71.1.tgz", { "peerDependencies": { "react": "^16.8.0 || ^17 || ^18 || ^19" } }, "sha512-9SUJKCGKo8HUSsCO+y0CtqkqI5nNuaDqTxyqPsZPqIwudpj4rCrAz/jZV+jn57bx5gtZKOh3neQu94DXMc+w5w=="], + + "react-is": ["react-is@18.3.1", "https://registry.npmjs.com/react-is/-/react-is-18.3.1.tgz", {}, "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg=="], + + "react-markdown": ["react-markdown@10.1.0", "https://registry.npmjs.com/react-markdown/-/react-markdown-10.1.0.tgz", { "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "hast-util-to-jsx-runtime": "^2.0.0", "html-url-attributes": "^3.0.0", "mdast-util-to-hast": "^13.0.0", "remark-parse": "^11.0.0", "remark-rehype": "^11.0.0", "unified": "^11.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0" }, "peerDependencies": { "@types/react": ">=18", "react": ">=18" } }, "sha512-qKxVopLT/TyA6BX3Ue5NwabOsAzm0Q7kAPwq6L+wWDwisYs7R8vZ0nRXqq6rkueboxpkjvLGU9fWifiX/ZZFxQ=="], + + "react-remove-scroll": ["react-remove-scroll@2.7.2", "https://registry.npmjs.com/react-remove-scroll/-/react-remove-scroll-2.7.2.tgz", { "dependencies": { "react-remove-scroll-bar": "^2.3.7", "react-style-singleton": "^2.2.3", "tslib": "^2.1.0", "use-callback-ref": "^1.3.3", "use-sidecar": "^1.1.3" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q=="], + + "react-remove-scroll-bar": ["react-remove-scroll-bar@2.3.8", "https://registry.npmjs.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", { "dependencies": { "react-style-singleton": "^2.2.2", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "optionalPeers": ["@types/react"] }, "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q=="], + + "react-resizable-panels": ["react-resizable-panels@3.0.6", "https://registry.npmjs.com/react-resizable-panels/-/react-resizable-panels-3.0.6.tgz", { "peerDependencies": { "react": "^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react-dom": "^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" } }, "sha512-b3qKHQ3MLqOgSS+FRYKapNkJZf5EQzuf6+RLiq1/IlTHw99YrZ2NJZLk4hQIzTnnIkRg2LUqyVinu6YWWpUYew=="], + + "react-smooth": ["react-smooth@4.0.4", "https://registry.npmjs.com/react-smooth/-/react-smooth-4.0.4.tgz", { "dependencies": { "fast-equals": "^5.0.1", "prop-types": "^15.8.1", "react-transition-group": "^4.4.5" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-gnGKTpYwqL0Iii09gHobNolvX4Kiq4PKx6eWBCYYix+8cdw+cGo3do906l1NBPKkSWx1DghC1dlWG9L2uGd61Q=="], + + "react-style-singleton": ["react-style-singleton@2.2.3", "https://registry.npmjs.com/react-style-singleton/-/react-style-singleton-2.2.3.tgz", { "dependencies": { "get-nonce": "^1.0.0", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ=="], + + "react-syntax-highlighter": ["react-syntax-highlighter@15.6.6", "https://registry.npmjs.com/react-syntax-highlighter/-/react-syntax-highlighter-15.6.6.tgz", { "dependencies": { "@babel/runtime": "^7.3.1", "highlight.js": "^10.4.1", "highlightjs-vue": "^1.0.0", "lowlight": "^1.17.0", "prismjs": "^1.30.0", "refractor": "^3.6.0" }, "peerDependencies": { "react": ">= 0.14.0" } }, "sha512-DgXrc+AZF47+HvAPEmn7Ua/1p10jNoVZVI/LoPiYdtY+OM+/nG5yefLHKJwdKqY1adMuHFbeyBaG9j64ML7vTw=="], + + "react-transition-group": ["react-transition-group@4.4.5", "https://registry.npmjs.com/react-transition-group/-/react-transition-group-4.4.5.tgz", { "dependencies": { "@babel/runtime": "^7.5.5", "dom-helpers": "^5.0.1", "loose-envify": "^1.4.0", "prop-types": "^15.6.2" }, "peerDependencies": { "react": ">=16.6.0", "react-dom": ">=16.6.0" } }, "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g=="], + + "readdirp": ["readdirp@4.1.2", "https://registry.npmjs.com/readdirp/-/readdirp-4.1.2.tgz", {}, "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg=="], + + "recharts": ["recharts@2.15.4", "https://registry.npmjs.com/recharts/-/recharts-2.15.4.tgz", { "dependencies": { "clsx": "^2.0.0", "eventemitter3": "^4.0.1", "lodash": "^4.17.21", "react-is": "^18.3.1", "react-smooth": "^4.0.4", "recharts-scale": "^0.4.4", "tiny-invariant": "^1.3.1", "victory-vendor": "^36.6.8" }, "peerDependencies": { "react": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-UT/q6fwS3c1dHbXv2uFgYJ9BMFHu3fwnd7AYZaEQhXuYQ4hgsxLvsUXzGdKeZrW5xopzDCvuA2N41WJ88I7zIw=="], + + "recharts-scale": ["recharts-scale@0.4.5", "https://registry.npmjs.com/recharts-scale/-/recharts-scale-0.4.5.tgz", { "dependencies": { "decimal.js-light": "^2.4.1" } }, "sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w=="], + + "reflect.getprototypeof": ["reflect.getprototypeof@1.0.10", "https://registry.npmjs.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.9", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.7", "get-proto": "^1.0.1", "which-builtin-type": "^1.2.1" } }, "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw=="], + + "refractor": ["refractor@3.6.0", "https://registry.npmjs.com/refractor/-/refractor-3.6.0.tgz", { "dependencies": { "hastscript": "^6.0.0", "parse-entities": "^2.0.0", "prismjs": "~1.27.0" } }, "sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA=="], + + "regexp.prototype.flags": ["regexp.prototype.flags@1.5.4", "https://registry.npmjs.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-errors": "^1.3.0", "get-proto": "^1.0.1", "gopd": "^1.2.0", "set-function-name": "^2.0.2" } }, "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA=="], + + "remark-parse": ["remark-parse@11.0.0", "https://registry.npmjs.com/remark-parse/-/remark-parse-11.0.0.tgz", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-from-markdown": "^2.0.0", "micromark-util-types": "^2.0.0", "unified": "^11.0.0" } }, "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA=="], + + "remark-rehype": ["remark-rehype@11.1.2", "https://registry.npmjs.com/remark-rehype/-/remark-rehype-11.1.2.tgz", { "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "mdast-util-to-hast": "^13.0.0", "unified": "^11.0.0", "vfile": "^6.0.0" } }, "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw=="], + + "resolve": ["resolve@1.22.11", "https://registry.npmjs.com/resolve/-/resolve-1.22.11.tgz", { "dependencies": { "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ=="], + + "resolve-from": ["resolve-from@4.0.0", "https://registry.npmjs.com/resolve-from/-/resolve-from-4.0.0.tgz", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="], + + "resolve-pkg-maps": ["resolve-pkg-maps@1.0.0", "https://registry.npmjs.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", {}, "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw=="], + + "reusify": ["reusify@1.1.0", "https://registry.npmjs.com/reusify/-/reusify-1.1.0.tgz", {}, "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="], + + "run-parallel": ["run-parallel@1.2.0", "https://registry.npmjs.com/run-parallel/-/run-parallel-1.2.0.tgz", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="], + + "sade": ["sade@1.8.1", "https://registry.npmjs.com/sade/-/sade-1.8.1.tgz", { "dependencies": { "mri": "^1.1.0" } }, "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A=="], + + "safe-array-concat": ["safe-array-concat@1.1.3", "https://registry.npmjs.com/safe-array-concat/-/safe-array-concat-1.1.3.tgz", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", "get-intrinsic": "^1.2.6", "has-symbols": "^1.1.0", "isarray": "^2.0.5" } }, "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q=="], + + "safe-push-apply": ["safe-push-apply@1.0.0", "https://registry.npmjs.com/safe-push-apply/-/safe-push-apply-1.0.0.tgz", { "dependencies": { "es-errors": "^1.3.0", "isarray": "^2.0.5" } }, "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA=="], + + "safe-regex-test": ["safe-regex-test@1.1.0", "https://registry.npmjs.com/safe-regex-test/-/safe-regex-test-1.1.0.tgz", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "is-regex": "^1.2.1" } }, "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw=="], + + "scheduler": ["scheduler@0.27.0", "https://registry.npmjs.com/scheduler/-/scheduler-0.27.0.tgz", {}, "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q=="], + + "screenfull": ["screenfull@5.2.0", "https://registry.npmjs.com/screenfull/-/screenfull-5.2.0.tgz", {}, "sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA=="], + + "semver": ["semver@7.7.3", "https://registry.npmjs.com/semver/-/semver-7.7.3.tgz", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], + + "set-function-length": ["set-function-length@1.2.2", "https://registry.npmjs.com/set-function-length/-/set-function-length-1.2.2.tgz", { "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", "function-bind": "^1.1.2", "get-intrinsic": "^1.2.4", "gopd": "^1.0.1", "has-property-descriptors": "^1.0.2" } }, "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg=="], + + "set-function-name": ["set-function-name@2.0.2", "https://registry.npmjs.com/set-function-name/-/set-function-name-2.0.2.tgz", { "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", "functions-have-names": "^1.2.3", "has-property-descriptors": "^1.0.2" } }, "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ=="], + + "set-proto": ["set-proto@1.0.0", "https://registry.npmjs.com/set-proto/-/set-proto-1.0.0.tgz", { "dependencies": { "dunder-proto": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0" } }, "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw=="], + + "sharp": ["sharp@0.34.5", "https://registry.npmjs.com/sharp/-/sharp-0.34.5.tgz", { "dependencies": { "@img/colour": "^1.0.0", "detect-libc": "^2.1.2", "semver": "^7.7.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.34.5", "@img/sharp-darwin-x64": "0.34.5", "@img/sharp-libvips-darwin-arm64": "1.2.4", "@img/sharp-libvips-darwin-x64": "1.2.4", "@img/sharp-libvips-linux-arm": "1.2.4", "@img/sharp-libvips-linux-arm64": "1.2.4", "@img/sharp-libvips-linux-ppc64": "1.2.4", "@img/sharp-libvips-linux-riscv64": "1.2.4", "@img/sharp-libvips-linux-s390x": "1.2.4", "@img/sharp-libvips-linux-x64": "1.2.4", "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", "@img/sharp-libvips-linuxmusl-x64": "1.2.4", "@img/sharp-linux-arm": "0.34.5", "@img/sharp-linux-arm64": "0.34.5", "@img/sharp-linux-ppc64": "0.34.5", "@img/sharp-linux-riscv64": "0.34.5", "@img/sharp-linux-s390x": "0.34.5", "@img/sharp-linux-x64": "0.34.5", "@img/sharp-linuxmusl-arm64": "0.34.5", "@img/sharp-linuxmusl-x64": "0.34.5", "@img/sharp-wasm32": "0.34.5", "@img/sharp-win32-arm64": "0.34.5", "@img/sharp-win32-ia32": "0.34.5", "@img/sharp-win32-x64": "0.34.5" } }, "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg=="], + + "shebang-command": ["shebang-command@2.0.0", "https://registry.npmjs.com/shebang-command/-/shebang-command-2.0.0.tgz", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="], + + "shebang-regex": ["shebang-regex@3.0.0", "https://registry.npmjs.com/shebang-regex/-/shebang-regex-3.0.0.tgz", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="], + + "side-channel": ["side-channel@1.1.0", "https://registry.npmjs.com/side-channel/-/side-channel-1.1.0.tgz", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3", "side-channel-list": "^1.0.0", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" } }, "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw=="], + + "side-channel-list": ["side-channel-list@1.0.0", "https://registry.npmjs.com/side-channel-list/-/side-channel-list-1.0.0.tgz", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3" } }, "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA=="], + + "side-channel-map": ["side-channel-map@1.0.1", "https://registry.npmjs.com/side-channel-map/-/side-channel-map-1.0.1.tgz", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3" } }, "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA=="], + + "side-channel-weakmap": ["side-channel-weakmap@1.0.2", "https://registry.npmjs.com/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3", "side-channel-map": "^1.0.1" } }, "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A=="], + + "sonner": ["sonner@2.0.7", "https://registry.npmjs.com/sonner/-/sonner-2.0.7.tgz", { "peerDependencies": { "react": "^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react-dom": "^18.0.0 || ^19.0.0 || ^19.0.0-rc" } }, "sha512-W6ZN4p58k8aDKA4XPcx2hpIQXBRAgyiWVkYhT7CvK6D3iAu7xjvVyhQHg2/iaKJZ1XVJ4r7XuwGL+WGEK37i9w=="], + + "source-map-js": ["source-map-js@1.2.1", "https://registry.npmjs.com/source-map-js/-/source-map-js-1.2.1.tgz", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], + + "space-separated-tokens": ["space-separated-tokens@2.0.2", "https://registry.npmjs.com/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", {}, "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q=="], + + "stable-hash": ["stable-hash@0.0.5", "https://registry.npmjs.com/stable-hash/-/stable-hash-0.0.5.tgz", {}, "sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA=="], + + "static-browser-server": ["static-browser-server@1.0.3", "https://registry.npmjs.com/static-browser-server/-/static-browser-server-1.0.3.tgz", { "dependencies": { "@open-draft/deferred-promise": "^2.1.0", "dotenv": "^16.0.3", "mime-db": "^1.52.0", "outvariant": "^1.3.0" } }, "sha512-ZUyfgGDdFRbZGGJQ1YhiM930Yczz5VlbJObrQLlk24+qNHVQx4OlLcYswEUo3bIyNAbQUIUR9Yr5/Hqjzqb4zA=="], + + "stop-iteration-iterator": ["stop-iteration-iterator@1.1.0", "https://registry.npmjs.com/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", { "dependencies": { "es-errors": "^1.3.0", "internal-slot": "^1.1.0" } }, "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ=="], + + "strict-event-emitter": ["strict-event-emitter@0.4.6", "https://registry.npmjs.com/strict-event-emitter/-/strict-event-emitter-0.4.6.tgz", {}, "sha512-12KWeb+wixJohmnwNFerbyiBrAlq5qJLwIt38etRtKtmmHyDSoGlIqFE9wx+4IwG0aDjI7GV8tc8ZccjWZZtTg=="], + + "string.prototype.includes": ["string.prototype.includes@2.0.1", "https://registry.npmjs.com/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.3" } }, "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg=="], + + "string.prototype.matchall": ["string.prototype.matchall@4.0.12", "https://registry.npmjs.com/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-abstract": "^1.23.6", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.6", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "internal-slot": "^1.1.0", "regexp.prototype.flags": "^1.5.3", "set-function-name": "^2.0.2", "side-channel": "^1.1.0" } }, "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA=="], + + "string.prototype.repeat": ["string.prototype.repeat@1.0.0", "https://registry.npmjs.com/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", { "dependencies": { "define-properties": "^1.1.3", "es-abstract": "^1.17.5" } }, "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w=="], + + "string.prototype.trim": ["string.prototype.trim@1.2.10", "https://registry.npmjs.com/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", "define-data-property": "^1.1.4", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-object-atoms": "^1.0.0", "has-property-descriptors": "^1.0.2" } }, "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA=="], + + "string.prototype.trimend": ["string.prototype.trimend@1.0.9", "https://registry.npmjs.com/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" } }, "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ=="], + + "string.prototype.trimstart": ["string.prototype.trimstart@1.0.8", "https://registry.npmjs.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" } }, "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg=="], + + "stringify-entities": ["stringify-entities@4.0.4", "https://registry.npmjs.com/stringify-entities/-/stringify-entities-4.0.4.tgz", { "dependencies": { "character-entities-html4": "^2.0.0", "character-entities-legacy": "^3.0.0" } }, "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg=="], + + "strip-bom": ["strip-bom@3.0.0", "https://registry.npmjs.com/strip-bom/-/strip-bom-3.0.0.tgz", {}, "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA=="], + + "strip-json-comments": ["strip-json-comments@3.1.1", "https://registry.npmjs.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz", {}, "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="], + + "style-mod": ["style-mod@4.1.3", "https://registry.npmjs.com/style-mod/-/style-mod-4.1.3.tgz", {}, "sha512-i/n8VsZydrugj3Iuzll8+x/00GH2vnYsk1eomD8QiRrSAeW6ItbCQDtfXCeJHd0iwiNagqjQkvpvREEPtW3IoQ=="], + + "style-to-js": ["style-to-js@1.1.21", "https://registry.npmjs.com/style-to-js/-/style-to-js-1.1.21.tgz", { "dependencies": { "style-to-object": "1.0.14" } }, "sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ=="], + + "style-to-object": ["style-to-object@1.0.14", "https://registry.npmjs.com/style-to-object/-/style-to-object-1.0.14.tgz", { "dependencies": { "inline-style-parser": "0.2.7" } }, "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw=="], + + "styled-jsx": ["styled-jsx@5.1.6", "https://registry.npmjs.com/styled-jsx/-/styled-jsx-5.1.6.tgz", { "dependencies": { "client-only": "0.0.1" }, "peerDependencies": { "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" } }, "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA=="], + + "supports-color": ["supports-color@7.2.0", "https://registry.npmjs.com/supports-color/-/supports-color-7.2.0.tgz", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="], + + "supports-preserve-symlinks-flag": ["supports-preserve-symlinks-flag@1.0.0", "https://registry.npmjs.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", {}, "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="], + + "tabbable": ["tabbable@6.4.0", "https://registry.npmjs.com/tabbable/-/tabbable-6.4.0.tgz", {}, "sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg=="], + + "tailwind-merge": ["tailwind-merge@3.4.0", "https://registry.npmjs.com/tailwind-merge/-/tailwind-merge-3.4.0.tgz", {}, "sha512-uSaO4gnW+b3Y2aWoWfFpX62vn2sR3skfhbjsEnaBI81WD1wBLlHZe5sWf0AqjksNdYTbGBEd0UasQMT3SNV15g=="], + + "tailwindcss": ["tailwindcss@4.1.18", "https://registry.npmjs.com/tailwindcss/-/tailwindcss-4.1.18.tgz", {}, "sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw=="], + + "tailwindcss-animate": ["tailwindcss-animate@1.0.7", "https://registry.npmjs.com/tailwindcss-animate/-/tailwindcss-animate-1.0.7.tgz", { "peerDependencies": { "tailwindcss": ">=3.0.0 || insiders" } }, "sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA=="], + + "tapable": ["tapable@2.3.0", "https://registry.npmjs.com/tapable/-/tapable-2.3.0.tgz", {}, "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg=="], + + "tiny-invariant": ["tiny-invariant@1.3.3", "https://registry.npmjs.com/tiny-invariant/-/tiny-invariant-1.3.3.tgz", {}, "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg=="], + + "tinyexec": ["tinyexec@1.0.2", "https://registry.npmjs.com/tinyexec/-/tinyexec-1.0.2.tgz", {}, "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg=="], + + "tinyglobby": ["tinyglobby@0.2.15", "https://registry.npmjs.com/tinyglobby/-/tinyglobby-0.2.15.tgz", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.3" } }, "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ=="], + + "to-regex-range": ["to-regex-range@5.0.1", "https://registry.npmjs.com/to-regex-range/-/to-regex-range-5.0.1.tgz", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="], + + "trim-lines": ["trim-lines@3.0.1", "https://registry.npmjs.com/trim-lines/-/trim-lines-3.0.1.tgz", {}, "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg=="], + + "trough": ["trough@2.2.0", "https://registry.npmjs.com/trough/-/trough-2.2.0.tgz", {}, "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw=="], + + "ts-api-utils": ["ts-api-utils@2.4.0", "https://registry.npmjs.com/ts-api-utils/-/ts-api-utils-2.4.0.tgz", { "peerDependencies": { "typescript": ">=4.8.4" } }, "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA=="], + + "tsconfig-paths": ["tsconfig-paths@3.15.0", "https://registry.npmjs.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", { "dependencies": { "@types/json5": "^0.0.29", "json5": "^1.0.2", "minimist": "^1.2.6", "strip-bom": "^3.0.0" } }, "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg=="], + + "tslib": ["tslib@2.8.1", "https://registry.npmjs.com/tslib/-/tslib-2.8.1.tgz", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "tw-animate-css": ["tw-animate-css@1.4.0", "https://registry.npmjs.com/tw-animate-css/-/tw-animate-css-1.4.0.tgz", {}, "sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ=="], + + "type": ["type@2.7.3", "https://registry.npmjs.com/type/-/type-2.7.3.tgz", {}, "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ=="], + + "type-check": ["type-check@0.4.0", "https://registry.npmjs.com/type-check/-/type-check-0.4.0.tgz", { "dependencies": { "prelude-ls": "^1.2.1" } }, "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew=="], + + "typed-array-buffer": ["typed-array-buffer@1.0.3", "https://registry.npmjs.com/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "is-typed-array": "^1.1.14" } }, "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw=="], + + "typed-array-byte-length": ["typed-array-byte-length@1.0.3", "https://registry.npmjs.com/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", { "dependencies": { "call-bind": "^1.0.8", "for-each": "^0.3.3", "gopd": "^1.2.0", "has-proto": "^1.2.0", "is-typed-array": "^1.1.14" } }, "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg=="], + + "typed-array-byte-offset": ["typed-array-byte-offset@1.0.4", "https://registry.npmjs.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", { "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "for-each": "^0.3.3", "gopd": "^1.2.0", "has-proto": "^1.2.0", "is-typed-array": "^1.1.15", "reflect.getprototypeof": "^1.0.9" } }, "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ=="], + + "typed-array-length": ["typed-array-length@1.0.7", "https://registry.npmjs.com/typed-array-length/-/typed-array-length-1.0.7.tgz", { "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", "is-typed-array": "^1.1.13", "possible-typed-array-names": "^1.0.0", "reflect.getprototypeof": "^1.0.6" } }, "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg=="], + + "typescript": ["typescript@5.9.3", "https://registry.npmjs.com/typescript/-/typescript-5.9.3.tgz", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], + + "typescript-eslint": ["typescript-eslint@8.53.0", "https://registry.npmjs.com/typescript-eslint/-/typescript-eslint-8.53.0.tgz", { "dependencies": { "@typescript-eslint/eslint-plugin": "8.53.0", "@typescript-eslint/parser": "8.53.0", "@typescript-eslint/typescript-estree": "8.53.0", "@typescript-eslint/utils": "8.53.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-xHURCQNxZ1dsWn0sdOaOfCSQG0HKeqSj9OexIxrz6ypU6wHYOdX2I3D2b8s8wFSsSOYJb+6q283cLiLlkEsBYw=="], + + "unbox-primitive": ["unbox-primitive@1.1.0", "https://registry.npmjs.com/unbox-primitive/-/unbox-primitive-1.1.0.tgz", { "dependencies": { "call-bound": "^1.0.3", "has-bigints": "^1.0.2", "has-symbols": "^1.1.0", "which-boxed-primitive": "^1.1.1" } }, "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw=="], + + "undici-types": ["undici-types@7.16.0", "https://registry.npmjs.com/undici-types/-/undici-types-7.16.0.tgz", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="], + + "unidiff": ["unidiff@1.0.4", "https://registry.npmjs.com/unidiff/-/unidiff-1.0.4.tgz", { "dependencies": { "diff": "^5.1.0" } }, "sha512-ynU0vsAXw0ir8roa+xPCUHmnJ5goc5BTM2Kuc3IJd8UwgaeRs7VSD5+eeaQL+xp1JtB92hu/Zy/Lgy7RZcr1pQ=="], + + "unified": ["unified@11.0.5", "https://registry.npmjs.com/unified/-/unified-11.0.5.tgz", { "dependencies": { "@types/unist": "^3.0.0", "bail": "^2.0.0", "devlop": "^1.0.0", "extend": "^3.0.0", "is-plain-obj": "^4.0.0", "trough": "^2.0.0", "vfile": "^6.0.0" } }, "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA=="], + + "unist-util-is": ["unist-util-is@6.0.1", "https://registry.npmjs.com/unist-util-is/-/unist-util-is-6.0.1.tgz", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g=="], + + "unist-util-position": ["unist-util-position@5.0.0", "https://registry.npmjs.com/unist-util-position/-/unist-util-position-5.0.0.tgz", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA=="], + + "unist-util-position-from-estree": ["unist-util-position-from-estree@2.0.0", "https://registry.npmjs.com/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ=="], + + "unist-util-stringify-position": ["unist-util-stringify-position@4.0.0", "https://registry.npmjs.com/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ=="], + + "unist-util-visit": ["unist-util-visit@5.0.0", "https://registry.npmjs.com/unist-util-visit/-/unist-util-visit-5.0.0.tgz", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg=="], + + "unist-util-visit-parents": ["unist-util-visit-parents@6.0.2", "https://registry.npmjs.com/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" } }, "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ=="], + + "unrs-resolver": ["unrs-resolver@1.11.1", "https://registry.npmjs.com/unrs-resolver/-/unrs-resolver-1.11.1.tgz", { "dependencies": { "napi-postinstall": "^0.3.0" }, "optionalDependencies": { "@unrs/resolver-binding-android-arm-eabi": "1.11.1", "@unrs/resolver-binding-android-arm64": "1.11.1", "@unrs/resolver-binding-darwin-arm64": "1.11.1", "@unrs/resolver-binding-darwin-x64": "1.11.1", "@unrs/resolver-binding-freebsd-x64": "1.11.1", "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", "@unrs/resolver-binding-linux-x64-musl": "1.11.1", "@unrs/resolver-binding-wasm32-wasi": "1.11.1", "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" } }, "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg=="], + + "update-browserslist-db": ["update-browserslist-db@1.2.3", "https://registry.npmjs.com/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w=="], + + "uri-js": ["uri-js@4.4.1", "https://registry.npmjs.com/uri-js/-/uri-js-4.4.1.tgz", { "dependencies": { "punycode": "^2.1.0" } }, "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg=="], + + "use-callback-ref": ["use-callback-ref@1.3.3", "https://registry.npmjs.com/use-callback-ref/-/use-callback-ref-1.3.3.tgz", { "dependencies": { "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg=="], + + "use-intl": ["use-intl@4.7.0", "https://registry.npmjs.com/use-intl/-/use-intl-4.7.0.tgz", { "dependencies": { "@formatjs/fast-memoize": "^2.2.0", "@schummar/icu-type-parser": "1.21.5", "intl-messageformat": "^10.5.14" }, "peerDependencies": { "react": "^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0" } }, "sha512-jyd8nSErVRRsSlUa+SDobKHo9IiWs5fjcPl9VBUnzUyEQpVM5mwJCgw8eUiylhvBpLQzUGox1KN0XlRivSID9A=="], + + "use-sidecar": ["use-sidecar@1.1.3", "https://registry.npmjs.com/use-sidecar/-/use-sidecar-1.1.3.tgz", { "dependencies": { "detect-node-es": "^1.1.0", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ=="], + + "use-sync-external-store": ["use-sync-external-store@1.6.0", "https://registry.npmjs.com/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", { "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w=="], + + "uuid": ["uuid@11.1.0", "https://registry.npmjs.com/uuid/-/uuid-11.1.0.tgz", { "bin": { "uuid": "dist/esm/bin/uuid" } }, "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A=="], + + "uvu": ["uvu@0.5.6", "https://registry.npmjs.com/uvu/-/uvu-0.5.6.tgz", { "dependencies": { "dequal": "^2.0.0", "diff": "^5.0.0", "kleur": "^4.0.3", "sade": "^1.7.3" }, "bin": { "uvu": "bin.js" } }, "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA=="], + + "vaul": ["vaul@1.1.2", "https://registry.npmjs.com/vaul/-/vaul-1.1.2.tgz", { "dependencies": { "@radix-ui/react-dialog": "^1.1.1" }, "peerDependencies": { "react": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc" } }, "sha512-ZFkClGpWyI2WUQjdLJ/BaGuV6AVQiJ3uELGk3OYtP+B6yCO7Cmn9vPFXVJkRaGkOJu3m8bQMgtyzNHixULceQA=="], + + "vfile": ["vfile@6.0.3", "https://registry.npmjs.com/vfile/-/vfile-6.0.3.tgz", { "dependencies": { "@types/unist": "^3.0.0", "vfile-message": "^4.0.0" } }, "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q=="], + + "vfile-message": ["vfile-message@4.0.3", "https://registry.npmjs.com/vfile-message/-/vfile-message-4.0.3.tgz", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-stringify-position": "^4.0.0" } }, "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw=="], + + "victory-vendor": ["victory-vendor@36.9.2", "https://registry.npmjs.com/victory-vendor/-/victory-vendor-36.9.2.tgz", { "dependencies": { "@types/d3-array": "^3.0.3", "@types/d3-ease": "^3.0.0", "@types/d3-interpolate": "^3.0.1", "@types/d3-scale": "^4.0.2", "@types/d3-shape": "^3.1.0", "@types/d3-time": "^3.0.0", "@types/d3-timer": "^3.0.0", "d3-array": "^3.1.6", "d3-ease": "^3.0.1", "d3-interpolate": "^3.0.1", "d3-scale": "^4.0.2", "d3-shape": "^3.1.0", "d3-time": "^3.0.0", "d3-timer": "^3.0.1" } }, "sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ=="], + + "w3c-keyname": ["w3c-keyname@2.2.8", "https://registry.npmjs.com/w3c-keyname/-/w3c-keyname-2.2.8.tgz", {}, "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ=="], + + "which": ["which@2.0.2", "https://registry.npmjs.com/which/-/which-2.0.2.tgz", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], + + "which-boxed-primitive": ["which-boxed-primitive@1.1.1", "https://registry.npmjs.com/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", { "dependencies": { "is-bigint": "^1.1.0", "is-boolean-object": "^1.2.1", "is-number-object": "^1.1.1", "is-string": "^1.1.1", "is-symbol": "^1.1.1" } }, "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA=="], + + "which-builtin-type": ["which-builtin-type@1.2.1", "https://registry.npmjs.com/which-builtin-type/-/which-builtin-type-1.2.1.tgz", { "dependencies": { "call-bound": "^1.0.2", "function.prototype.name": "^1.1.6", "has-tostringtag": "^1.0.2", "is-async-function": "^2.0.0", "is-date-object": "^1.1.0", "is-finalizationregistry": "^1.1.0", "is-generator-function": "^1.0.10", "is-regex": "^1.2.1", "is-weakref": "^1.0.2", "isarray": "^2.0.5", "which-boxed-primitive": "^1.1.0", "which-collection": "^1.0.2", "which-typed-array": "^1.1.16" } }, "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q=="], + + "which-collection": ["which-collection@1.0.2", "https://registry.npmjs.com/which-collection/-/which-collection-1.0.2.tgz", { "dependencies": { "is-map": "^2.0.3", "is-set": "^2.0.3", "is-weakmap": "^2.0.2", "is-weakset": "^2.0.3" } }, "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw=="], + + "which-typed-array": ["which-typed-array@1.1.20", "https://registry.npmjs.com/which-typed-array/-/which-typed-array-1.1.20.tgz", { "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "call-bound": "^1.0.4", "for-each": "^0.3.5", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2" } }, "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg=="], + + "word-wrap": ["word-wrap@1.2.5", "https://registry.npmjs.com/word-wrap/-/word-wrap-1.2.5.tgz", {}, "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA=="], + + "xtend": ["xtend@4.0.2", "https://registry.npmjs.com/xtend/-/xtend-4.0.2.tgz", {}, "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="], + + "yallist": ["yallist@4.0.0", "https://registry.npmjs.com/yallist/-/yallist-4.0.0.tgz", {}, "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="], + + "yjs": ["yjs@13.6.29", "https://registry.npmjs.com/yjs/-/yjs-13.6.29.tgz", { "dependencies": { "lib0": "^0.2.99" } }, "sha512-kHqDPdltoXH+X4w1lVmMtddE3Oeqq48nM40FD5ojTd8xYhQpzIDcfE2keMSU5bAgRPJBe225WTUdyUgj1DtbiQ=="], + + "yocto-queue": ["yocto-queue@0.1.0", "https://registry.npmjs.com/yocto-queue/-/yocto-queue-0.1.0.tgz", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="], + + "z-ai-web-dev-sdk": ["z-ai-web-dev-sdk@0.0.18", "", { "bin": { "z-ai": "dist/cli.js", "z-ai-generate": "dist/cli.js" } }, "sha512-xVoZIEME2F+/Z06orHCgUKzOMuFPhoHuzN4ZFZqcD71g11nzbzq2jKSP53igi3lJFE8ZbMB4WKb4gp6lCGrMXQ=="], + + "zod": ["zod@4.3.5", "https://registry.npmjs.com/zod/-/zod-4.3.5.tgz", {}, "sha512-k7Nwx6vuWx1IJ9Bjuf4Zt1PEllcwe7cls3VNzm4CQ1/hgtFUK2bRNG3rvnpPUhFjmqJKAKtjV576KnUkHocg/g=="], + + "zod-validation-error": ["zod-validation-error@4.0.2", "https://registry.npmjs.com/zod-validation-error/-/zod-validation-error-4.0.2.tgz", { "peerDependencies": { "zod": "^3.25.0 || ^4.0.0" } }, "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ=="], + + "zustand": ["zustand@5.0.10", "https://registry.npmjs.com/zustand/-/zustand-5.0.10.tgz", { "peerDependencies": { "@types/react": ">=18.0.0", "immer": ">=9.0.6", "react": ">=18.0.0", "use-sync-external-store": ">=1.2.0" }, "optionalPeers": ["@types/react", "immer", "react", "use-sync-external-store"] }, "sha512-U1AiltS1O9hSy3rul+Ub82ut2fqIAefiSuwECWt6jlMVUGejvf+5omLcRBSzqbRagSM3hQZbtzdeRc6QVScXTg=="], + + "zwitch": ["zwitch@2.0.4", "https://registry.npmjs.com/zwitch/-/zwitch-2.0.4.tgz", {}, "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A=="], + + "@babel/core/json5": ["json5@2.2.3", "https://registry.npmjs.com/json5/-/json5-2.2.3.tgz", { "bin": { "json5": "lib/cli.js" } }, "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="], + + "@babel/core/semver": ["semver@6.3.1", "https://registry.npmjs.com/semver/-/semver-6.3.1.tgz", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + + "@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "https://registry.npmjs.com/lru-cache/-/lru-cache-5.1.1.tgz", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], + + "@babel/helper-compilation-targets/semver": ["semver@6.3.1", "https://registry.npmjs.com/semver/-/semver-6.3.1.tgz", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + + "@codesandbox/sandpack-react/react-is": ["react-is@17.0.2", "https://registry.npmjs.com/react-is/-/react-is-17.0.2.tgz", {}, "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="], + + "@eslint-community/eslint-utils/eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "https://registry.npmjs.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="], + + "@eslint/eslintrc/globals": ["globals@14.0.0", "https://registry.npmjs.com/globals/-/globals-14.0.0.tgz", {}, "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ=="], + + "@formatjs/ecma402-abstract/@formatjs/intl-localematcher": ["@formatjs/intl-localematcher@0.6.2", "https://registry.npmjs.com/@formatjs/intl-localematcher/-/intl-localematcher-0.6.2.tgz", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-XOMO2Hupl0wdd172Y06h6kLpBz6Dv+J4okPLl4LPtzbr8f66WbIoy4ev98EBuZ6ZK4h5ydTN6XneT4QVpD7cdA=="], + + "@radix-ui/react-alert-dialog/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "https://registry.npmjs.com/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], + + "@radix-ui/react-aspect-ratio/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.4", "https://registry.npmjs.com/@radix-ui/react-primitive/-/react-primitive-2.1.4.tgz", { "dependencies": { "@radix-ui/react-slot": "1.2.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg=="], + + "@radix-ui/react-avatar/@radix-ui/react-context": ["@radix-ui/react-context@1.1.3", "https://registry.npmjs.com/@radix-ui/react-context/-/react-context-1.1.3.tgz", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-ieIFACdMpYfMEjF0rEf5KLvfVyIkOz6PDGyNnP+u+4xQ6jny3VCgA4OgXOwNx2aUkxn8zx9fiVcM8CfFYv9Lxw=="], + + "@radix-ui/react-avatar/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.4", "https://registry.npmjs.com/@radix-ui/react-primitive/-/react-primitive-2.1.4.tgz", { "dependencies": { "@radix-ui/react-slot": "1.2.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg=="], + + "@radix-ui/react-collection/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "https://registry.npmjs.com/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], + + "@radix-ui/react-dialog/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "https://registry.npmjs.com/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], + + "@radix-ui/react-label/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.4", "https://registry.npmjs.com/@radix-ui/react-primitive/-/react-primitive-2.1.4.tgz", { "dependencies": { "@radix-ui/react-slot": "1.2.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg=="], + + "@radix-ui/react-menu/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "https://registry.npmjs.com/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], + + "@radix-ui/react-popover/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "https://registry.npmjs.com/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], + + "@radix-ui/react-primitive/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "https://registry.npmjs.com/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], + + "@radix-ui/react-progress/@radix-ui/react-context": ["@radix-ui/react-context@1.1.3", "https://registry.npmjs.com/@radix-ui/react-context/-/react-context-1.1.3.tgz", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-ieIFACdMpYfMEjF0rEf5KLvfVyIkOz6PDGyNnP+u+4xQ6jny3VCgA4OgXOwNx2aUkxn8zx9fiVcM8CfFYv9Lxw=="], + + "@radix-ui/react-progress/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.4", "https://registry.npmjs.com/@radix-ui/react-primitive/-/react-primitive-2.1.4.tgz", { "dependencies": { "@radix-ui/react-slot": "1.2.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg=="], + + "@radix-ui/react-select/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "https://registry.npmjs.com/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], + + "@radix-ui/react-separator/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.4", "https://registry.npmjs.com/@radix-ui/react-primitive/-/react-primitive-2.1.4.tgz", { "dependencies": { "@radix-ui/react-slot": "1.2.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg=="], + + "@radix-ui/react-toolbar/@radix-ui/react-separator": ["@radix-ui/react-separator@1.1.7", "https://registry.npmjs.com/@radix-ui/react-separator/-/react-separator-1.1.7.tgz", { "dependencies": { "@radix-ui/react-primitive": "2.1.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-0HEb8R9E8A+jZjvmFCy/J4xhbXy3TV+9XSnGJ3KvTtjlIUy/YQ/p6UYZvi7YbeoeXdyU9+Y3scizK6hkY37baA=="], + + "@radix-ui/react-tooltip/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "https://registry.npmjs.com/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], + + "@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.8.1", "https://registry.npmjs.com/@emnapi/core/-/core-1.8.1.tgz", { "dependencies": { "@emnapi/wasi-threads": "1.1.0", "tslib": "^2.4.0" }, "bundled": true }, "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg=="], + + "@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.8.1", "https://registry.npmjs.com/@emnapi/runtime/-/runtime-1.8.1.tgz", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg=="], + + "@tailwindcss/oxide-wasm32-wasi/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.1.0", "https://registry.npmjs.com/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ=="], + + "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.1.1", "https://registry.npmjs.com/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.1.tgz", { "dependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1", "@tybys/wasm-util": "^0.10.1" }, "bundled": true }, "sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A=="], + + "@tailwindcss/oxide-wasm32-wasi/@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "https://registry.npmjs.com/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="], + + "@tailwindcss/oxide-wasm32-wasi/tslib": ["tslib@2.8.1", "https://registry.npmjs.com/tslib/-/tslib-2.8.1.tgz", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "@typescript-eslint/eslint-plugin/ignore": ["ignore@7.0.5", "https://registry.npmjs.com/ignore/-/ignore-7.0.5.tgz", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="], + + "@typescript-eslint/typescript-estree/minimatch": ["minimatch@9.0.5", "https://registry.npmjs.com/minimatch/-/minimatch-9.0.5.tgz", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], + + "downshift/react-is": ["react-is@17.0.2", "https://registry.npmjs.com/react-is/-/react-is-17.0.2.tgz", {}, "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="], + + "eslint-import-resolver-node/debug": ["debug@3.2.7", "https://registry.npmjs.com/debug/-/debug-3.2.7.tgz", { "dependencies": { "ms": "^2.1.1" } }, "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ=="], + + "eslint-module-utils/debug": ["debug@3.2.7", "https://registry.npmjs.com/debug/-/debug-3.2.7.tgz", { "dependencies": { "ms": "^2.1.1" } }, "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ=="], + + "eslint-plugin-import/debug": ["debug@3.2.7", "https://registry.npmjs.com/debug/-/debug-3.2.7.tgz", { "dependencies": { "ms": "^2.1.1" } }, "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ=="], + + "eslint-plugin-import/semver": ["semver@6.3.1", "https://registry.npmjs.com/semver/-/semver-6.3.1.tgz", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + + "eslint-plugin-react/resolve": ["resolve@2.0.0-next.5", "https://registry.npmjs.com/resolve/-/resolve-2.0.0-next.5.tgz", { "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA=="], + + "eslint-plugin-react/semver": ["semver@6.3.1", "https://registry.npmjs.com/semver/-/semver-6.3.1.tgz", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + + "fast-glob/glob-parent": ["glob-parent@5.1.2", "https://registry.npmjs.com/glob-parent/-/glob-parent-5.1.2.tgz", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], + + "hastscript/@types/hast": ["@types/hast@2.3.10", "https://registry.npmjs.com/@types/hast/-/hast-2.3.10.tgz", { "dependencies": { "@types/unist": "^2" } }, "sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw=="], + + "hastscript/comma-separated-tokens": ["comma-separated-tokens@1.0.8", "https://registry.npmjs.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz", {}, "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw=="], + + "hastscript/property-information": ["property-information@5.6.0", "https://registry.npmjs.com/property-information/-/property-information-5.6.0.tgz", { "dependencies": { "xtend": "^4.0.0" } }, "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA=="], + + "hastscript/space-separated-tokens": ["space-separated-tokens@1.1.5", "https://registry.npmjs.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz", {}, "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA=="], + + "lowlight/fault": ["fault@1.0.4", "https://registry.npmjs.com/fault/-/fault-1.0.4.tgz", { "dependencies": { "format": "^0.2.0" } }, "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA=="], + + "mdast-util-frontmatter/escape-string-regexp": ["escape-string-regexp@5.0.0", "https://registry.npmjs.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", {}, "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="], + + "micromatch/picomatch": ["picomatch@2.3.1", "https://registry.npmjs.com/picomatch/-/picomatch-2.3.1.tgz", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + + "next/postcss": ["postcss@8.4.31", "https://registry.npmjs.com/postcss/-/postcss-8.4.31.tgz", { "dependencies": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" } }, "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ=="], + + "next-auth/uuid": ["uuid@8.3.2", "https://registry.npmjs.com/uuid/-/uuid-8.3.2.tgz", { "bin": { "uuid": "dist/bin/uuid" } }, "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="], + + "parse-entities/@types/unist": ["@types/unist@2.0.11", "https://registry.npmjs.com/@types/unist/-/unist-2.0.11.tgz", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="], + + "prop-types/react-is": ["react-is@16.13.1", "https://registry.npmjs.com/react-is/-/react-is-16.13.1.tgz", {}, "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="], + + "refractor/parse-entities": ["parse-entities@2.0.0", "https://registry.npmjs.com/parse-entities/-/parse-entities-2.0.0.tgz", { "dependencies": { "character-entities": "^1.0.0", "character-entities-legacy": "^1.0.0", "character-reference-invalid": "^1.0.0", "is-alphanumerical": "^1.0.0", "is-decimal": "^1.0.0", "is-hexadecimal": "^1.0.0" } }, "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ=="], + + "refractor/prismjs": ["prismjs@1.27.0", "https://registry.npmjs.com/prismjs/-/prismjs-1.27.0.tgz", {}, "sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA=="], + + "@babel/helper-compilation-targets/lru-cache/yallist": ["yallist@3.1.1", "https://registry.npmjs.com/yallist/-/yallist-3.1.1.tgz", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="], + + "@typescript-eslint/typescript-estree/minimatch/brace-expansion": ["brace-expansion@2.0.2", "https://registry.npmjs.com/brace-expansion/-/brace-expansion-2.0.2.tgz", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ=="], + + "hastscript/@types/hast/@types/unist": ["@types/unist@2.0.11", "https://registry.npmjs.com/@types/unist/-/unist-2.0.11.tgz", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="], + + "refractor/parse-entities/character-entities": ["character-entities@1.2.4", "https://registry.npmjs.com/character-entities/-/character-entities-1.2.4.tgz", {}, "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw=="], + + "refractor/parse-entities/character-entities-legacy": ["character-entities-legacy@1.1.4", "https://registry.npmjs.com/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", {}, "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA=="], + + "refractor/parse-entities/character-reference-invalid": ["character-reference-invalid@1.1.4", "https://registry.npmjs.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", {}, "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg=="], + + "refractor/parse-entities/is-alphanumerical": ["is-alphanumerical@1.0.4", "https://registry.npmjs.com/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", { "dependencies": { "is-alphabetical": "^1.0.0", "is-decimal": "^1.0.0" } }, "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A=="], + + "refractor/parse-entities/is-decimal": ["is-decimal@1.0.4", "https://registry.npmjs.com/is-decimal/-/is-decimal-1.0.4.tgz", {}, "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw=="], + + "refractor/parse-entities/is-hexadecimal": ["is-hexadecimal@1.0.4", "https://registry.npmjs.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", {}, "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw=="], + + "refractor/parse-entities/is-alphanumerical/is-alphabetical": ["is-alphabetical@1.0.4", "https://registry.npmjs.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz", {}, "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg=="], + } +} diff --git a/cart.html b/cart.html deleted file mode 100755 index 15c2e4f1caf553880f61aaf9a7c45938ab2b7f22..0000000000000000000000000000000000000000 --- a/cart.html +++ /dev/null @@ -1,653 +0,0 @@ - - - - - - Shopping Cart - Cellex | Nigeria's #1 Marketplace - - - - - - - - - - - - - - -
- -
- - -
-
- -
-
- - -
- -
-
-

Shopping Cart

-

Loading your cart...

-
- -
- - -
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - - - - - diff --git a/categories.html b/categories.html deleted file mode 100755 index c3a07f7adf8decbbde2761572de29849e339e3b7..0000000000000000000000000000000000000000 --- a/categories.html +++ /dev/null @@ -1,611 +0,0 @@ - - - - - - Categories — Cellex - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-

All Categories

-

Browse products by category

-
- - -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
-
- - -
-
- -
- Sort: - -
- -
- Price: - -
- -
- Seller: - -
- -
- 0 products found -
-
-
- - -
-
- -
- - - - - - - - - -
-
- - - - - - - - - diff --git a/checkout.html b/checkout.html deleted file mode 100755 index 746ef472441c7afb98a7d0004555a78ddf9b296e..0000000000000000000000000000000000000000 --- a/checkout.html +++ /dev/null @@ -1,891 +0,0 @@ - - - - - - Checkout - Cellex | Nigeria's #1 Marketplace - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - -
-
- -
-
- - -
-
-
-
-
- 1 - Shipping -
- -
- 2 - Payment -
- -
- 3 - Review -
- - - Back to Cart - -
-
-
- - -
-
- -
- -
-
-
- -
-

Shipping Information

-
- -
-
-
- - -
-
- - -
-
-
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
-
-
-
- - -
-
-
- -
-

Payment Method

-
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - - -
- - -
-
-
- -
-

Review & Place Order

-
- - -
-
-

Shipping Address

-

-
-
-

Payment Method

-

-
-
-

Order Items

-
-
-
- - - - -

- - Secure checkout with SSL encryption -

-
-
- - -
-
-

Order Summary

-
- -
- -
-
- Subtotal - ₦0.00 -
-
- Shipping - ₦0.00 -
-
- Tax (10%) - ₦0.00 -
-
- COD Fee - ₦0.00 -
-
- Total - ₦0.00 -
-
-
-
-
- - -
- -
- Step 1 of 3 -
- -
-
- - - - diff --git a/components.json b/components.json new file mode 100644 index 0000000000000000000000000000000000000000..ffe928f5b6dfe484f57a5fd47d0487f21e164fa3 --- /dev/null +++ b/components.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "new-york", + "rsc": true, + "tsx": true, + "tailwind": { + "config": "", + "css": "src/app/globals.css", + "baseColor": "neutral", + "cssVariables": true, + "prefix": "" + }, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib", + "hooks": "@/hooks" + }, + "iconLibrary": "lucide" +} \ No newline at end of file diff --git a/css/common.css b/css/common.css deleted file mode 100755 index b63e779fda9e87d8377e6945acd5c7b4290f8c9e..0000000000000000000000000000000000000000 --- a/css/common.css +++ /dev/null @@ -1,360 +0,0 @@ -/* Base styles and variables — cyan + white futuristic theme */ -:root { - --primary-color: #00d4ff; - --secondary-color: #0891b2; - --success-color: #0891b2; - --warning-color: #00d4ff; - --danger-color: #ef4444; - --light-color: #f8f9fa; - --dark-color: #0f172a; - --gray-100: #f8f9fa; - --gray-200: #e9ecef; - --gray-300: #dee2e6; - --gray-400: #ced4da; - --gray-500: #adb5bd; - --gray-600: #6c757d; - --gray-700: #495057; - --gray-800: #343a40; - --gray-900: #212529; - - --font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; - --border-radius: 4px; - --box-shadow: 0 2px 5px rgba(0,0,0,0.1); - --transition: all 0.3s ease; -} - -/* Reset styles */ -* { - margin: 0; - padding: 0; - box-sizing: border-box; -} - -html { - font-size: 16px; -} - -body { - font-family: var(--font-family); - line-height: 1.6; - color: var(--gray-800); - background-color: var(--gray-100); -} - -/* Typography */ -h1, h2, h3, h4, h5, h6 { - margin-bottom: 1rem; - color: var(--gray-900); - line-height: 1.2; -} - -h1 { font-size: 2.5rem; } -h2 { font-size: 2rem; } -h3 { font-size: 1.75rem; } -h4 { font-size: 1.5rem; } -h5 { font-size: 1.25rem; } -h6 { font-size: 1rem; } - -@media (max-width: 768px) { - h1 { font-size: 2rem; } - h2 { font-size: 1.75rem; } - h3 { font-size: 1.5rem; } - h4 { font-size: 1.25rem; } - h5 { font-size: 1.1rem; } - h6 { font-size: 1rem; } -} - -/* Container */ -.container { - width: 100%; - max-width: 1200px; - margin: 0 auto; - padding: 0 1rem; -} - -/* Grid System */ -.grid { - display: grid; - gap: 1.5rem; -} - -.grid-2 { grid-template-columns: repeat(2, 1fr); } -.grid-3 { grid-template-columns: repeat(3, 1fr); } -.grid-4 { grid-template-columns: repeat(4, 1fr); } - -@media (max-width: 1024px) { - .grid-4 { grid-template-columns: repeat(3, 1fr); } -} - -@media (max-width: 768px) { - .grid-3, .grid-4 { grid-template-columns: repeat(2, 1fr); } -} - -@media (max-width: 480px) { - .grid-2, .grid-3, .grid-4 { grid-template-columns: 1fr; } -} - -/* Buttons */ -.btn { - display: inline-flex; - align-items: center; - justify-content: center; - padding: 0.8rem 1.5rem; - border: none; - border-radius: var(--border-radius); - font-size: 1rem; - font-weight: 500; - text-decoration: none; - cursor: pointer; - transition: var(--transition); -} - -.btn-primary { - background-color: var(--primary-color); - color: white; -} - -.btn-primary:hover { - background-color: #d63d40; -} - -.btn-secondary { - background-color: var(--secondary-color); - color: white; -} - -.btn-outline { - background-color: transparent; - border: 2px solid var(--primary-color); - color: var(--primary-color); -} - -.btn-outline:hover { - background-color: var(--primary-color); - color: white; -} - -/* Forms */ -.form-group { - margin-bottom: 1rem; -} - -.form-label { - display: block; - margin-bottom: 0.5rem; - color: var(--gray-700); - font-weight: 500; -} - -.form-control { - width: 100%; - padding: 0.8rem; - border: 2px solid var(--gray-300); - border-radius: var(--border-radius); - font-size: 1rem; - transition: var(--transition); -} - -.form-control:focus { - border-color: var(--primary-color); - outline: none; -} - -/* Cards */ -.card { - background-color: white; - border-radius: var(--border-radius); - box-shadow: var(--box-shadow); - overflow: hidden; - transition: var(--transition); -} - -.card:hover { - transform: translateY(-5px); - box-shadow: 0 4px 10px rgba(0,0,0,0.15); -} - -.card-img { - width: 100%; - height: 200px; - object-fit: cover; -} - -.card-body { - padding: 1.5rem; -} - -.card-title { - margin-bottom: 0.5rem; - font-size: 1.25rem; -} - -.card-text { - color: var(--gray-600); - margin-bottom: 1rem; -} - -/* Navigation */ -.navbar { - background-color: white; - padding: 1rem; - box-shadow: var(--box-shadow); -} - -.navbar-container { - display: flex; - justify-content: space-between; - align-items: center; -} - -.navbar-brand { - font-size: 1.5rem; - font-weight: bold; - color: var(--primary-color); - text-decoration: none; -} - -.navbar-nav { - display: flex; - align-items: center; - gap: 1.5rem; -} - -.nav-link { - color: var(--gray-700); - text-decoration: none; - transition: var(--transition); -} - -.nav-link:hover { - color: var(--primary-color); -} - -.mobile-menu-btn { - display: none; - background: none; - border: none; - font-size: 1.5rem; - cursor: pointer; - color: var(--gray-700); -} - -@media (max-width: 768px) { - .mobile-menu-btn { - display: block; - } - - .navbar-nav { - display: none; - position: absolute; - top: 100%; - left: 0; - right: 0; - background-color: white; - padding: 1rem; - box-shadow: var(--box-shadow); - flex-direction: column; - gap: 1rem; - } - - .navbar-nav.active { - display: flex; - } -} - -/* Utilities */ -.text-primary { color: var(--primary-color); } -.text-secondary { color: var(--secondary-color); } -.text-success { color: var(--success-color); } -.text-warning { color: var(--warning-color); } -.text-danger { color: var(--danger-color); } - -.bg-primary { background-color: var(--primary-color); } -.bg-secondary { background-color: var(--secondary-color); } -.bg-success { background-color: var(--success-color); } -.bg-warning { background-color: var(--warning-color); } -.bg-danger { background-color: var(--danger-color); } - -.mt-1 { margin-top: 0.5rem; } -.mt-2 { margin-top: 1rem; } -.mt-3 { margin-top: 1.5rem; } -.mt-4 { margin-top: 2rem; } -.mt-5 { margin-top: 2.5rem; } - -.mb-1 { margin-bottom: 0.5rem; } -.mb-2 { margin-bottom: 1rem; } -.mb-3 { margin-bottom: 1.5rem; } -.mb-4 { margin-bottom: 2rem; } -.mb-5 { margin-bottom: 2.5rem; } - -.p-1 { padding: 0.5rem; } -.p-2 { padding: 1rem; } -.p-3 { padding: 1.5rem; } -.p-4 { padding: 2rem; } -.p-5 { padding: 2.5rem; } - -.text-center { text-align: center; } -.text-right { text-align: right; } -.text-left { text-align: left; } - -.d-flex { display: flex; } -.align-items-center { align-items: center; } -.justify-content-center { justify-content: center; } -.justify-content-between { justify-content: space-between; } -.flex-column { flex-direction: column; } -.flex-wrap { flex-wrap: wrap; } - -.hidden { display: none; } -.visible { display: block; } - -@media (max-width: 768px) { - .hidden-mobile { display: none; } -} - -@media (min-width: 769px) { - .hidden-desktop { display: none; } -} - -/* Animations */ -@keyframes fadeIn { - from { opacity: 0; } - to { opacity: 1; } -} - -@keyframes slideIn { - from { transform: translateY(-20px); opacity: 0; } - to { transform: translateY(0); opacity: 1; } -} - -.fade-in { - animation: fadeIn 0.3s ease-in-out; -} - -.slide-in { - animation: slideIn 0.3s ease-in-out; -} -/* === PRODUCTION FONT SIZES (Temu/AliExpress/Amazon style) === */ -/* Smaller, denser text for better information density */ -html { font-size: 14px; } /* Base size down from 16px */ -body { font-size: 0.875rem; } /* 14px */ -h1 { font-size: 1.25rem; } /* 20px — was 2.5rem */ -h2 { font-size: 1.125rem; } /* 18px — was 2rem */ -h3 { font-size: 1rem; } /* 16px — was 1.75rem */ -h4 { font-size: 0.9375rem; } /* 15px — was 1.5rem */ -h5 { font-size: 0.875rem; } /* 14px — was 1.25rem */ -h6 { font-size: 0.8125rem; } /* 13px — was 1rem */ -p, span, div, a, button, input, select, textarea { font-size: 0.8125rem; } /* 13px */ -.text-xs { font-size: 0.625rem !important; } /* 10px — for badges, meta */ -.text-sm { font-size: 0.75rem !important; } /* 12px */ -.text-base { font-size: 0.8125rem !important; } /* 13px */ -.text-lg { font-size: 0.9375rem !important; } /* 15px */ -.text-xl { font-size: 1.0625rem !important; } /* 17px */ -.text-2xl { font-size: 1.25rem !important; } /* 20px */ -.text-3xl { font-size: 1.5rem !important; } /* 24px */ - -@media (max-width: 768px) { - html { font-size: 13px; } - h1 { font-size: 1.125rem; } - h2 { font-size: 1rem; } - h3 { font-size: 0.9375rem; } -} diff --git a/css/index.css b/css/index.css deleted file mode 100755 index 2de1308587af8dca354847c55ccd3310a9ef7404..0000000000000000000000000000000000000000 --- a/css/index.css +++ /dev/null @@ -1,747 +0,0 @@ -/* ============================================================ - EESHA MARKETPLACE - PROFESSIONAL CSS STYLESHEET - Extracted from Site123 template with custom refinements - Dark theme with beige accents, Caladea typography -============================================================ */ -/* Fonts (Caladea) */ -@font-face { - font-family: 'Caladea'; - font-style: italic; - font-weight: 400; - font-display: swap; - src: url(https://fonts.gstatic.com/s/caladea/v8/kJExBugZ7AAjhybUvR1N9vo3huR_DaS8.woff2) format('woff2'); -} -@font-face { - font-family: 'Caladea'; - font-style: italic; - font-weight: 400; - font-display: swap; - src: url(https://fonts.gstatic.com/s/caladea/v8/kJExBugZ7AAjhybUvR1N-Po3huR_DQ.woff2) format('woff2'); -} -@font-face { - font-family: 'Caladea'; - font-style: italic; - font-weight: 700; - font-display: swap; - src: url(https://fonts.gstatic.com/s/caladea/v8/kJE0BugZ7AAjhybUvR1FQ98ipcZyJ561DbZg.woff2) format('woff2'); -} -@font-face { - font-family: 'Caladea'; - font-style: italic; - font-weight: 700; - font-display: swap; - src: url(https://fonts.gstatic.com/s/caladea/v8/kJE0BugZ7AAjhybUvR1FQ98iq8ZyJ561DQ.woff2) format('woff2'); -} -@font-face { - font-family: 'Caladea'; - font-style: normal; - font-weight: 400; - font-display: swap; - src: url(https://fonts.gstatic.com/s/caladea/v8/kJEzBugZ7AAjhybUvRZ9-vAwpOZPDA.woff2) format('woff2'); -} -@font-face { - font-family: 'Caladea'; - font-style: normal; - font-weight: 400; - font-display: swap; - src: url(https://fonts.gstatic.com/s/caladea/v8/kJEzBugZ7AAjhybUvRh9-vAwpOY.woff2) format('woff2'); -} -@font-face { - font-family: 'Caladea'; - font-style: normal; - font-weight: 700; - font-display: swap; - src: url(https://fonts.gstatic.com/s/caladea/v8/kJE2BugZ7AAjhybUtaNY79MSqcx1BZyFDA.woff2) format('woff2'); -} -@font-face { - font-family: 'Caladea'; - font-style: normal; - font-weight: 700; - font-display: swap; - src: url(https://fonts.gstatic.com/s/caladea/v8/kJE2BugZ7AAjhybUtaNY790Sqcx1BZw.woff2) format('woff2'); -} - -/* Top-level CSS variables (copied from index copy.html) */ -:root { - --global_main_color: #f8dcbf; - --global_main_color_btn_text_color: #5c340a; - --home_text_color: #ffffff; - --home_third_background_color: #000000; - --home_custom_image_size: px; - --home_custom_image_width: px; - --home_text_size_px: 71px; - --home_text_size_2_px: 45px; - --slogan_text_size_px: 22px; - --home_text_size: 71; - --home_text_size_2: 45; - --slogan_text_size: 22; - --home_text_size_px_media: 71px; - --home_text_size_2_px_media: 45px; - --slogan_text_size_px_media: 22px; - --layout_text_align: center; - --layout_text_align_rtl: center; - --layout_text_box_width: 100%; - --layout_left_side_width: 50%; - --layout_left_side_width_vh: 50vh; - --homepage_layout_height: 75%; - --homepage_layout_height_vh: 75vh; - --homepage_layout_height_menu_space: 0px; - --mainNavMobileHeight: 0px; - --homepage_layout_height_opacity_space_top: 0px; - --homepage_layout_height_opacity_space_bottom: 0px; - --mobileMenuFontSize: 20px; - --mobileMenuPagesSpace: 5px; - --homepageShapeDividerList_Size: 17%; - --layout_bottom_spacing: 0px; - --window-height: 100vh; - --window-width: 100vw; - --menu_font_size: 17px; - --menu_pages_space: 3px; - --menu_pages_side_padding: 20px; - --menu_pages_letter_spacing: 1.3px; - --menu_pages_word_spacing: 0px; - --menu_thin_border: #1b262c; - --mobileMenuTextAlign: center; - --menu_text_color: #fae6d1; - --menu_text_hover_color: #fae6d1; - --menu_color: #1b262c; - --modules_color_text: #ffffff; - --modules_color_text_second: #ffffff; - --inside_modules_color_text: #ffffff; - --sectionsPadding: 100px; - --home_text_top_space_1: 0px; - --home_text_bottom_space_1: 16px; - --home_text_top_space_2: 0px; - --home_text_bottom_space_2: 30px; - --home_text_top_space_3: 0px; - --home_text_bottom_space_3: 20px; - --homepage_padding_top: px; - --homepage_padding_bottom: px; - --homepage_main_goal_margin_top: 0px; - --homepage_main_goal_margin_bottom: 0px; - --homepage_second_goal_margin_top: 0px; - --homepage_second_goal_margin_bottom: 0px; - --modules_color_second: #000000; - --modules_color: #1b262c; - --footer_back: #1b262c; - --footer_text_hover: #f8dcbf; - --footer_links_color: #f8dcbf; - --footer_text: #ffffff; - --home_background_color: #000000; - --inside_modules_color_box: #1b262c; - --inside_modules_color_text_box: #ffffff; - --module_separate_border_color: ; - --modules_color_box: #000000; - --modules_color_second_box: #1b262c; - --modules_color_text_second_box: #ffffff; - --inside_modules_color: #000000; - --modules_color_text_box: #ffffff; - --font_logo: ; - --font_menu: Caladea; - --global_font: Caladea; - --font_slogan: ; - --font_slogan_2: ; - --font_second_slogan: ; - --font_modules_header: Caladea; - --sticky_menu: 1; - --scrollHeaderSize: 0px; - --modules_color_section_main: #f8dcbf; - --modules_color_section_btn_text: #5c340a; - --modules_color_second_section_main: #f8dcbf; - --modules_color_second_section_btn_text: #5c340a; - --inside_modules_color_section_box_main: #f8dcbf; - --inside_modules_color_section_btn_text: #5c340a; - --line_height_modules_header: 1.25; - --global_line_height: 1.25; -} - -/* Base styles */ -html, body { - height: 100%; - margin: 0; - padding: 0; - background: var(--home_background_color, #000); - color: var(--modules_color_text, #fff); - font-family: var(--global_font, Caladea), system-ui, -apple-system, serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -/* Header styling - clean Site123 nav with polish */ -.header-s123 { - background: linear-gradient(180deg, var(--menu_color, #1b262c) 0%, rgba(27, 38, 44, 0.98) 100%); - color: var(--menu_text_color, #fae6d1); - display: flex; - align-items: center; - height: auto; - padding: 1.2rem 2rem; - position: fixed; - top: 0; - left: 0; - right: 0; - z-index: 50; - box-shadow: 0 4px 12px rgba(0, 0, 0, 0.35); - border-bottom: 2px solid rgba(248, 220, 191, 0.1); -} - -.navbar-s123 { - display: flex; - align-items: center; - justify-content: space-between; - width: 100%; - max-width: 1400px; - margin: 0 auto; - gap: 3rem; -} - -.nav-brand { - flex: 0 0 auto; - display: flex; - align-items: center; - gap: 0.75rem; -} - -.site-title { - font-family: var(--global_font, Caladea), serif; - font-size: 1.6rem; - font-weight: 700; - color: var(--modules_color_section_main, #f8dcbf); - margin: 0; - letter-spacing: 1.2px; - text-transform: uppercase; - text-shadow: 0 1px 3px rgba(0, 0, 0, 0.5); -} - -.nav-menu { - display: flex; - align-items: center; - gap: 3rem; - flex: 1; - justify-content: center; -} - -.nav-link { - font-family: var(--font_menu, Caladea), serif; - color: var(--menu_text_color, #fae6d1); - text-decoration: none; - font-size: 0.98rem; - font-weight: 600; - letter-spacing: 0.8px; - transition: all 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94); - border-bottom: 2px solid transparent; - padding-bottom: 6px; - text-transform: uppercase; -} - -.nav-link:hover { - color: var(--modules_color_section_main, #f8dcbf); - border-bottom-color: var(--modules_color_section_main, #f8dcbf); - transform: translateY(-1px); -} - -.nav-actions { - flex: 0 0 auto; - display: flex; - align-items: center; - gap: 1.75rem; -} - -.cart-link { - color: var(--menu_text_color, #fae6d1); - font-size: 1.3rem; - position: relative; - text-decoration: none; - transition: all 0.3s ease; - display: flex; - align-items: center; -} - -.cart-link:hover { - color: var(--modules_color_section_main, #f8dcbf); - transform: scale(1.1); -} - -.cart-badge { - position: absolute; - top: -6px; - right: -10px; - background: linear-gradient(135deg, var(--modules_color_section_main, #f8dcbf) 0%, #f0d4b0 100%); - color: var(--modules_color_section_btn_text, #5c340a); - font-size: 0.7rem; - font-weight: 700; - width: 20px; - height: 20px; - border-radius: 50%; - display: flex; - align-items: center; - justify-content: center; - box-shadow: 0 2px 6px rgba(248, 220, 191, 0.3); - animation: pulse-badge 2s infinite; -} - -@keyframes pulse-badge { - 0%, 100% { - box-shadow: 0 2px 6px rgba(248, 220, 191, 0.3); - } - 50% { - box-shadow: 0 2px 10px rgba(248, 220, 191, 0.5); - } -} - -/* Main content */ -main { - margin-top: 70px; -} - -section { - padding: 3rem 2rem; - background: var(--home_background_color, #000); - color: var(--modules_color_text, #fff); -} - -/* Section headers */ -.page-header-wrap { - text-align: center; - margin-bottom: 2rem; -} - -.s123-page-header { - font-family: var(--font_modules_header, Caladea), serif; - font-size: 1.8rem; - font-weight: 700; - color: var(--modules_color_text, #fff); - text-transform: uppercase; - letter-spacing: 1.5px; - margin: 0 0 1rem 0; - line-height: var(--line_height_modules_header, 1.25); -} - -.page-header-wrap .small { - display: block; - width: 80px; - height: 2px; - background: var(--modules_color_section_main, #f8dcbf); - margin: 0 auto; - border: none; -} - -/* Container utilities */ -.container { - max-width: 1200px; - margin: 0 auto; - padding: 0 2rem; -} - -.container-fluid { - width: 100%; - padding: 0 2rem; -} - -/* Collection/Category boxes */ -.collection-container { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); - gap: 2rem; - padding: 2rem 0; -} - -.e-c-box { - position: relative; -} - -.box { - position: relative; - overflow: hidden; - border-radius: 12px; - background: var(--inside_modules_color_box, #1b262c); - transition: all 0.35s cubic-bezier(0.25, 0.46, 0.45, 0.94); - cursor: pointer; - border: 1px solid rgba(248, 220, 191, 0.1); -} - -.box:hover { - transform: translateY(-8px); - box-shadow: 0 16px 40px rgba(0, 0, 0, 0.5); - border-color: rgba(248, 220, 191, 0.3); -} - -.image-container { - display: block; - width: 100%; - text-decoration: none; - color: inherit; -} - -.collection-image { - width: 100%; - height: 280px; - background-size: cover; - background-position: center; - display: flex; - align-items: flex-end; - position: relative; - transition: transform 0.4s ease; -} - -.box:hover .collection-image { - transform: scale(1.05); -} - -.s123-image-ratio-1-1 { - aspect-ratio: 1 / 1; - height: auto; -} - -.title-container { - padding: 1.5rem; - background: rgba(0,0,0,0.8); - color: var(--inside_modules_color_text_box, #fff); - text-align: center; -} - -.title { - font-family: var(--font_modules_header, Caladea), serif; - font-size: 1.3rem; - font-weight: 700; - color: var(--modules_color_text_box, #fff); - margin: 0 0 0.5rem 0; - text-transform: uppercase; - letter-spacing: 1px; -} - -.count { - font-size: 0.85rem; - color: var(--modules_color_text_box, #fff); - opacity: 0.85; -} - -.count-txt { - margin-left: 0.25rem; -} - -/* Services section */ -.services-category { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); - gap: 2rem; -} - -.service-item { - text-align: center; - padding: 2rem 1rem; -} - -.service-item h4 { - font-family: var(--font_modules_header, Caladea), serif; - font-size: 1.1rem; - color: var(--modules_color_text, #fff); - margin: 1rem 0 0.75rem 0; -} - -.service-item p { - font-size: 0.95rem; - line-height: 1.6; - color: var(--modules_color_text, #fff); - opacity: 0.9; -} - -/* Testimonials */ -.testimonials-category { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); - gap: 2rem; -} - -.testimonials-text-container .box { - background: var(--inside_modules_color_box, #1b262c); - padding: 1.5rem; - border-radius: 8px; -} - -.testimonials-text-container blockquote { - margin: 0 0 1rem 0; -} - -.testimonials-text-container p { - font-size: 0.95rem; - line-height: 1.6; - color: var(--modules_color_text_box, #fff); - margin: 0 0 1rem 0; - font-style: italic; -} - -.testimonials-img { - width: 100%; - height: 150px; - margin-bottom: 1rem; - border-radius: 8px; - overflow: hidden; -} - -.img-bg { - width: 100%; - height: 100%; - background-size: cover; - background-position: center; -} - -.testimonials-wrap { - text-align: center; -} - -.testimonials-name { - font-family: var(--font_modules_header, Caladea), serif; - font-size: 1rem; - font-weight: 700; - color: var(--modules_color_text_box, #fff); -} - -.testimonials-role { - font-size: 0.85rem; - color: var(--modules_color_section_main, #f8dcbf); -} - -/* Contact form */ -.s123-module-contact-form { - max-width: 800px; - margin: 0 auto; -} - -.form-group { - margin-bottom: 1rem; -} - -.form-control { - width: 100%; - padding: 0.75rem; - border: 1px solid rgba(248, 220, 191, 0.3); - border-radius: 4px; - background: rgba(0,0,0,0.3); - color: var(--modules_color_text_box, #fff); - font-family: inherit; - font-size: 0.95rem; -} - -.form-control:focus { - outline: none; - border-color: var(--modules_color_section_main, #f8dcbf); - background: rgba(0,0,0,0.5); -} - -.form-control::placeholder { - color: rgba(248, 220, 191, 0.5); -} - -.btn { - display: inline-block; - padding: 0.85rem 2.5rem; - border-radius: 6px; - background: linear-gradient(135deg, var(--modules_color_section_main, #f8dcbf) 0%, #f0d4b0 100%); - color: var(--modules_color_section_btn_text, #5c340a); - border: 2px solid var(--modules_color_section_main, #f8dcbf); - cursor: pointer; - font-family: var(--font_modules_header, Caladea), serif; - font-size: 0.98rem; - font-weight: 700; - letter-spacing: 0.8px; - transition: all 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94); - box-shadow: 0 4px 12px rgba(248, 220, 191, 0.2); - text-transform: uppercase; -} - -.btn:hover { - background: linear-gradient(135deg, #f0d4b0 0%, var(--modules_color_section_main, #f8dcbf) 100%); - transform: translateY(-3px); - box-shadow: 0 6px 20px rgba(248, 220, 191, 0.35); -} - -.btn:active { - transform: translateY(-1px); -} - -.btn-primary { - background: linear-gradient(135deg, var(--modules_color_section_main, #f8dcbf) 0%, #f0d4b0 100%); - color: var(--modules_color_section_btn_text, #5c340a); -} - -/* Footer */ -footer { - background: linear-gradient(180deg, var(--footer_back, #1b262c) 0%, rgba(27, 38, 44, 0.95) 100%); - color: var(--footer_text, #fff); - padding: 3.5rem 2rem 2rem 2rem; - margin-top: 3rem; - border-top: 2px solid rgba(248, 220, 191, 0.1); -} - -footer .container { - max-width: 1200px; - margin: 0 auto; -} - -footer .grid { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); - gap: 2.5rem; - margin-bottom: 2.5rem; -} - -footer h3 { - font-family: var(--font_modules_header, Caladea), serif; - font-size: 1.15rem; - font-weight: 700; - color: var(--modules_color_section_main, #f8dcbf); - margin: 0 0 1.25rem 0; - text-transform: uppercase; - letter-spacing: 1px; -} - -footer p { - font-size: 0.92rem; - line-height: 1.7; - color: var(--footer_text, #fff); - opacity: 0.85; - margin: 0; -} - -footer ul { - list-style: none; - padding: 0; - margin: 0; -} - -footer li { - margin-bottom: 0.85rem; -} - -footer a { - color: var(--footer_links_color, #f8dcbf); - text-decoration: none; - font-size: 0.92rem; - transition: all 0.3s ease; -} - -footer a:hover { - color: var(--footer_text_hover, #fff); - text-decoration: underline; - margin-left: 4px; -} - -.footer-icons { - display: flex; - gap: 1.2rem; -} - -.footer-icons a { - display: inline-flex; - align-items: center; - justify-content: center; - width: 40px; - height: 40px; - background: rgba(248, 220, 191, 0.12); - border-radius: 50%; - font-size: 1.2rem; - transition: all 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94); - border: 1px solid rgba(248, 220, 191, 0.2); -} - -.footer-icons a:hover { - background: linear-gradient(135deg, var(--modules_color_section_main, #f8dcbf) 0%, #f0d4b0 100%); - color: var(--modules_color_section_btn_text, #5c340a); - transform: translateY(-3px); - box-shadow: 0 8px 20px rgba(248, 220, 191, 0.25); -} - -.footer-bottom { - border-top: 1px solid rgba(248, 220, 191, 0.15); - padding-top: 1.75rem; - text-align: center; - font-size: 0.88rem; - color: var(--footer_text, #fff); - opacity: 0.75; - letter-spacing: 0.3px; -} - -/* Utility classes */ -.flex { - display: flex; -} - -.flex-wrap { - flex-wrap: wrap; -} - -.gap-2 { - gap: 0.5rem; -} - -.justify-center { - justify-content: center; -} - -.mb-4 { - margin-bottom: 1rem; -} - -.mt-6 { - margin-top: 1.5rem; -} - -.w-full { - width: 100%; -} - -.title-container { - padding: 1.75rem; - background: linear-gradient(180deg, rgba(0, 0, 0, 0.7) 0%, rgba(0, 0, 0, 0.95) 100%); - color: var(--inside_modules_color_text_box, #fff); - text-align: center; -} - -.title { - font-family: var(--font_modules_header, Caladea), serif; - font-size: 1.35rem; - font-weight: 700; - color: var(--modules_color_section_main, #f8dcbf); - margin: 0 0 0.5rem 0; - text-transform: uppercase; - letter-spacing: 1.2px; - transition: color 0.3s ease; -} - -.box:hover .title { - color: #fff; -} - -.count { - font-size: 0.88rem; - color: var(--modules_color_text_box, #fff); - opacity: 0.8; - letter-spacing: 0.5px; -.col-sm-6 { - grid-column: span 6; -} - -/* Responsive */ -@media (max-width: 768px) { - .nav-menu { - gap: 1.5rem; - font-size: 0.85rem; - } - - .site-title { - font-size: 1.2rem; - } - - .s123-page-header { - font-size: 1.5rem; - } - - .collection-container { - grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); - gap: 1rem; - } - - footer .grid { - grid-template-columns: 1fr; - } -} diff --git a/css/loader.css b/css/loader.css deleted file mode 100755 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/css/product.css b/css/product.css deleted file mode 100755 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/css/style.css b/css/style.css deleted file mode 100755 index c624f67359b51b419b736d943fdc53ca3df3dc2f..0000000000000000000000000000000000000000 --- a/css/style.css +++ /dev/null @@ -1,281 +0,0 @@ -/* Reset and base styles */ -* { - margin: 0; - padding: 0; - box-sizing: border-box; -} - -body { - font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; - line-height: 1.6; - background-color: #f5f5f5; -} - -/* Header styles */ -.navbar { - display: flex; - justify-content: space-between; - align-items: center; - padding: 1rem 2rem; - background-color: #fff; - box-shadow: 0 2px 5px rgba(0,0,0,0.1); -} - -.logo h1 { - color: #00d4ff; - font-size: 2rem; -} - -.search-bar { - flex: 1; - max-width: 600px; - margin: 0 2rem; - display: flex; -} - -.search-bar input { - width: 100%; - padding: 0.8rem; - border: 2px solid #ddd; - border-radius: 4px 0 0 4px; - font-size: 1rem; -} - -.search-bar button { - padding: 0.8rem 1.5rem; - background-color: #00d4ff; - border: none; - border-radius: 0 4px 4px 0; - color: white; - cursor: pointer; -} - -.nav-links { - display: flex; - align-items: center; - gap: 1rem; -} - -.nav-links a { - text-decoration: none; - color: #333; - padding: 0.5rem 1rem; -} - -.login-btn, .signup-btn { - border: 2px solid #00d4ff; - border-radius: 4px; - transition: all 0.3s ease; -} - -.login-btn:hover, .signup-btn:hover { - background-color: #00d4ff; - color: white; -} - -.cart-btn { - position: relative; -} - -.cart-count { - position: absolute; - top: -8px; - right: -8px; - background-color: #00d4ff; - color: white; - border-radius: 50%; - padding: 0.2rem 0.5rem; - font-size: 0.8rem; -} - -/* Categories menu */ -.categories { - background-color: #333; - padding: 0.5rem 2rem; -} - -.categories ul { - display: flex; - list-style: none; - gap: 2rem; -} - -.categories a { - color: white; - text-decoration: none; - font-size: 0.9rem; -} - -/* Hero section */ -.hero { - margin: 2rem 0; - padding: 0 2rem; -} - -.hero-slider { - height: 400px; - background-color: #ddd; - border-radius: 8px; - margin-bottom: 2rem; -} - -/* Product grid */ -.product-grid { - display: grid; - grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); - gap: 2rem; - padding: 2rem; -} - -.product-card { - background: white; - border-radius: 8px; - padding: 1rem; - box-shadow: 0 2px 5px rgba(0,0,0,0.1); - transition: transform 0.3s ease; -} - -.product-card:hover { - transform: translateY(-5px); -} - -.product-card img { - width: 100%; - height: 200px; - object-fit: cover; - border-radius: 4px; -} - -.product-card h3 { - margin: 1rem 0; - font-size: 1.1rem; -} - -.product-card .price { - color: #00d4ff; - font-weight: bold; - font-size: 1.2rem; -} - -/* AI Assistant */ -.ai-chat-widget { - position: fixed; - bottom: 2rem; - right: 2rem; -} - -#openAIChat { - background-color: #00d4ff; - color: white; - border: none; - padding: 1rem 2rem; - border-radius: 50px; - cursor: pointer; - display: flex; - align-items: center; - gap: 0.5rem; - box-shadow: 0 2px 10px rgba(240,71,74,0.3); -} - -/* Modal styles */ -.modal { - display: none; - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - background-color: rgba(0,0,0,0.5); -} - -.modal-content { - background-color: white; - width: 90%; - max-width: 500px; - margin: 2rem auto; - border-radius: 8px; - padding: 2rem; -} - -.chat-container { - height: 500px; - display: flex; - flex-direction: column; -} - -.chat-messages { - flex: 1; - overflow-y: auto; - padding: 1rem; - border: 1px solid #ddd; - border-radius: 4px; - margin-bottom: 1rem; -} - -.chat-input { - display: flex; - gap: 1rem; -} - -.chat-input input { - flex: 1; - padding: 0.8rem; - border: 2px solid #ddd; - border-radius: 4px; -} - -.chat-input button { - padding: 0.8rem 1.5rem; - background-color: #00d4ff; - color: white; - border: none; - border-radius: 4px; - cursor: pointer; -} - -/* Footer styles */ -footer { - background-color: #333; - color: white; - padding: 3rem 2rem 1rem; - margin-top: 3rem; -} - -.footer-content { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); - gap: 2rem; - margin-bottom: 2rem; -} - -.footer-section h3 { - margin-bottom: 1rem; -} - -.footer-section ul { - list-style: none; -} - -.footer-section ul li { - margin-bottom: 0.5rem; -} - -.footer-section a { - color: white; - text-decoration: none; -} - -.social-links { - display: flex; - gap: 1rem; -} - -.social-links a { - font-size: 1.5rem; -} - -.footer-bottom { - text-align: center; - padding-top: 2rem; - border-top: 1px solid #555; -} \ No newline at end of file diff --git a/css/styles.css b/css/styles.css deleted file mode 100755 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/dist/style.css b/dist/style.css deleted file mode 100755 index 67f236248a0263859fb993adab41b0999aff36ed..0000000000000000000000000000000000000000 --- a/dist/style.css +++ /dev/null @@ -1 +0,0 @@ -body{margin:0;font-family:Segoe UI,Arial,sans-serif;background:#f9fafb;color:#222}.container{max-width:1200px;margin:0 auto;padding:0 1.5rem}.header{background:#fff;border-bottom:1px solid #e5e7eb;box-shadow:0 2px 8px 0 rgba(0,0,0,.02)}.header-flex{justify-content:space-between;height:64px;position:relative}.header-flex,.logo{display:flex;align-items:center}.logo{font-weight:700;font-size:1.3rem;color:#222;text-decoration:none}#logo{width:50px;height:50px}.logo-icon{background:#6366f1;color:#fff;border-radius:8px;width:32px;height:32px;display:flex;align-items:center;justify-content:center;margin-right:8px;font-size:1.1rem}.nav{display:flex;gap:2rem}.nav a{color:#444;text-decoration:none;font-weight:500;transition:color .2s}.nav a:hover{color:#6366f1}.auth-btns{display:flex;gap:1rem}.btn{display:inline-block;padding:.6em 1.5em;border-radius:6px;font-size:1rem;font-weight:600;text-decoration:none;border:none;cursor:pointer;transition:background .2s,color .2s}.btn-primary{background:#6366f1;color:#fff}.btn-primary:hover{background:#4f46e5}.btn-outline{background:#fff;color:#6366f1;border:2px solid #6366f1}.btn-outline:hover{background:#f1f5f9}.btn-ghost{background:none;color:#6366f1}.hero{background:#fff;padding:4rem 0 3rem}.hero-grid{display:grid;grid-template-columns:1fr 1fr;gap:3rem;align-items:center}.hero-content h1{font-size:2.5rem;font-weight:700;color:#222;margin-bottom:1rem}.hero-content .primary{color:#6366f1}.hero-content p{font-size:1.2rem;color:#555;margin-bottom:2rem}.hero-actions{display:flex;gap:1rem;margin-bottom:1.5rem}.hero-list{list-style:none;padding:0;color:#6366f1;font-size:1rem;display:flex;gap:1.5rem}.hero-image{position:relative}.hero-image img{width:100%;border-radius:18px;box-shadow:0 8px 32px 0 rgba(0,0,0,.08)}.live-badge{position:absolute;left:1rem;bottom:1rem;background:#fff;color:#222;border-radius:8px;padding:.5em 1em;font-size:.95rem;box-shadow:0 2px 8px 0 rgba(0,0,0,.08);border:1px solid #e5e7eb}.features{background:#f9fafb;padding:4rem 0}.features h2{text-align:center;font-size:2rem;font-weight:700;margin-bottom:.5rem}.features .subtitle{text-align:center;color:#555;margin-bottom:2.5rem}.features-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2rem}.feature-card{background:#fff;border-radius:14px;box-shadow:0 2px 8px 0 rgba(0,0,0,.04);padding:2rem 1.5rem;text-align:left;border:1px solid #f1f5f9}.feature-icon{font-size:2rem;margin-bottom:1rem;color:#6366f1}.feature-card h3{font-size:1.2rem;font-weight:600;margin-bottom:.5rem}.feature-card p{color:#555;margin-bottom:1rem}.feature-card ul{list-style:none;padding:0;color:#6366f1;font-size:1rem}.pricing{background:#f9fafb;padding:4rem 0 2rem}.pricing h2{text-align:center;font-size:2rem;font-weight:700;margin-bottom:.5rem}.pricing .subtitle{text-align:center;color:#555;margin-bottom:2.5rem}.pricing-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2rem}.pricing-card{background:#fff;border-radius:14px;box-shadow:0 2px 8px 0 rgba(0,0,0,.04);padding:2rem 1.5rem;text-align:center;border:1px solid #e5e7eb;position:relative}.pricing-card.popular{border:2px solid #6366f1}.pricing-card .badge{position:absolute;top:-1.2rem;left:50%;transform:translateX(-50%);background:#f59e42;color:#fff;padding:.3em 1em;border-radius:8px;font-size:.95rem;font-weight:600}.pricing-card h3{font-size:1.2rem;font-weight:600;margin-bottom:.5rem}.pricing-card .price{font-size:2rem;font-weight:700;margin-bottom:.5rem}.pricing-card .price span{font-size:1rem;color:#6366f1;margin-left:.2em}.pricing-card ul{list-style:none;padding:0;color:#6366f1;font-size:1rem;margin-bottom:1.5rem}.pricing-footer{text-align:center;margin-top:2.5rem}.pricing-footer p{color:#555;margin-bottom:1rem}.pricing-icons{display:flex;justify-content:center;gap:2rem;color:#6366f1;font-size:1.1rem}.footer{background:#222;color:#fff;padding:3rem 0 1.5rem}.footer-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:2rem;margin-bottom:2rem}.footer .logo{font-weight:700;font-size:1.2rem;margin-bottom:1rem}.footer .logo,.footer .logo-icon{display:flex;align-items:center;color:#fff}.footer .logo-icon{background:#6366f1;border-radius:8px;width:32px;height:32px;justify-content:center;margin-right:8px;font-size:1.1rem}.footer-desc{color:#bbb;margin-bottom:1rem}.footer-socials a{font-size:1.3rem;margin-right:1rem;color:#bbb;text-decoration:none}.footer-socials a:hover{color:#fff}.footer h4{font-size:1.1rem;font-weight:600;margin-bottom:1rem}.footer ul{list-style:none;padding:0;color:#bbb;font-size:1rem}.footer ul li{margin-bottom:.5rem}.footer ul a{color:#bbb;text-decoration:none;transition:color .2s}.footer ul a:hover{color:#fff}.footer-bottom{border-top:1px solid #444;padding-top:1.2rem;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;color:#bbb;font-size:.95rem}.footer-links a{color:#bbb;margin-left:1.5rem;text-decoration:none}.footer-links a:hover{color:#fff}.auth-section{background:#f3f4f6;min-height:80vh;display:flex;align-items:center;justify-content:center;padding:3rem 0}.auth-container{background:#fff;border-radius:18px;box-shadow:0 4px 32px 0 rgba(99,102,241,.08);padding:2.5rem 2rem 2rem;max-width:400px;width:100%;margin:0 auto}.auth-toggle{display:flex;justify-content:center;gap:1rem;margin-bottom:2rem}.toggle-btn{background:#f3f4f6;border:none;padding:.7em 1.5em;border-radius:6px 6px 0 0;font-size:1rem;font-weight:600;color:#6366f1;cursor:pointer;transition:background .2s,color .2s}.toggle-btn.active{background:#6366f1;color:#fff;box-shadow:0 2px 8px 0 rgba(99,102,241,.08)}.auth-form{display:flex;flex-direction:column;gap:1rem;margin-bottom:1.5rem;animation:fadeIn .3s}.auth-form h2{text-align:center;color:#6366f1;margin-bottom:.5rem}.auth-form label{font-weight:500;color:#222;margin-bottom:.2rem}.auth-form input{padding:.7em 1em;border-radius:6px;border:1.5px solid #e5e7eb;font-size:1rem;background:#f9fafb;transition:border .2s}.auth-form input:focus{border:1.5px solid #6366f1;outline:none}.auth-form button[type=submit]{margin-top:.5rem}.auth-switch{text-align:center;color:#555;font-size:.98rem}.auth-switch a{color:#6366f1;text-decoration:none;font-weight:600;margin-left:.3em}.auth-switch a:hover{text-decoration:underline}.auth-error{color:#e11d48;margin-top:.5rem;display:none}@keyframes fadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.auth-form.hidden{display:none}.menu-toggle{display:flex!important;flex-direction:column;justify-content:center;align-items:center;width:44px;height:44px;position:absolute;top:16px;right:24px;z-index:1100;background:transparent;border:none;cursor:pointer}.menu-bar{width:28px;height:4px;background:#222!important;margin:4px 0;border-radius:2px;transition:all .3s;display:block}.nav.mobile-menu{display:none;flex-direction:column;position:absolute;top:64px;right:1.5rem;background:#fff;box-shadow:0 8px 32px 0 rgba(0,0,0,.1);border-radius:12px;padding:1.5rem 2rem;z-index:1001;min-width:200px;gap:1.2rem}.mobile-hide,.nav.mobile-menu.open{display:flex}.header-right{display:flex;align-items:center;gap:1rem;margin-left:auto}.dashboard-section{background:#f9fafb;min-height:100vh;padding:3rem 0 2rem}.dashboard-section h1{text-align:center;font-size:2.2rem;font-weight:700;margin-bottom:2.5rem;color:#222}.dashboard-grid{grid-template-columns:repeat(auto-fit,minmax(340px,1fr));max-width:1200px;margin:0 auto}.dashboard-feature{border-radius:16px;box-shadow:0 4px 24px 0 rgba(99,102,241,.07);padding:2rem 1.5rem 1.5rem;transition:box-shadow .2s,border .2s}.dashboard-feature:hover{box-shadow:0 8px 32px 0 rgba(99,102,241,.13);border:1.5px solid #6366f1}.dashboard-feature h2{font-size:1.15rem;margin-bottom:.7rem}.dashboard-feature ul{margin-bottom:1.2rem;font-size:1rem}.dashboard-feature ul li{margin-bottom:.4rem}.dashboard-feature .btn{align-self:flex-end;margin-top:auto}.live-tools{flex:2;min-width:320px}.next-class{background:#fff;border-radius:14px;box-shadow:0 2px 8px 0 rgba(99,102,241,.07);padding:1.2rem 2rem;border:1.5px solid #e5e7eb;display:flex;flex-direction:column;gap:.7rem;max-width:420px}.dashboard-layout{background:#f5f6fa}.dashboard-layout,.sidebar{display:flex;min-height:100vh}.sidebar{width:220px;background:#222;color:#fff;flex-direction:column;padding:2rem 1rem 1rem}.sidebar .logo{margin-bottom:2.5rem;display:flex;align-items:center;font-size:1.3rem;font-weight:700;color:#fff}.sidebar nav{display:flex;flex-direction:column;gap:1.2rem}.sidebar nav .nav-section{margin-bottom:1.5rem}.sidebar nav .nav-section-title{color:#888;font-size:.9rem;margin-bottom:.5rem;text-transform:uppercase;letter-spacing:1px}.sidebar nav a{color:#bbb;text-decoration:none;font-size:1.05rem;display:flex;align-items:center;gap:.7rem;padding:.6em 1em;border-radius:8px;transition:background .2s,color .2s}.sidebar nav a.active,.sidebar nav a:hover{background:#6366f1;color:#fff}.sidebar .sidebar-footer{margin-top:auto;font-size:.95rem;color:#bbb;text-align:center}.main-area{flex:1;display:flex;flex-direction:column;min-width:0}.topbar{background:#fff;box-shadow:0 2px 8px 0 rgba(99,102,241,.04);height:64px;display:flex;align-items:center;justify-content:space-between;padding:0 2rem;border-bottom:1.5px solid #e5e7eb}.topbar .dashboard-title{font-size:1.3rem;font-weight:600;color:#222}.topbar .topbar-actions{display:flex;align-items:center;gap:1.5rem}.topbar .notification{font-size:1.3rem;color:#6366f1;cursor:pointer;position:relative}.topbar .notification .dot{position:absolute;top:2px;right:2px;width:8px;height:8px;background:#f59e42;border-radius:50%}.topbar .profile{display:flex;align-items:center;gap:.7rem;cursor:pointer}.topbar .profile-img{width:36px;height:36px;border-radius:50%;background:#6366f1;color:#fff;display:flex;align-items:center;justify-content:center;font-size:1.1rem;font-weight:700}.dashboard-content{flex:1;padding:2rem 2.5rem;display:flex;flex-direction:column;gap:2rem}.dashboard-row{display:flex;gap:2rem;flex-wrap:wrap;margin-bottom:2rem}.live-tools,.next-class{background:#fff;border-radius:14px;box-shadow:0 2px 8px 0 rgba(99,102,241,.07);padding:1.2rem 2rem;border:1.5px solid #e5e7eb;display:flex;flex-direction:column;gap:.7rem;max-width:420px;flex:2;min-width:320px}.class-title{font-size:1.1rem;font-weight:600;color:#222}.class-meta{color:#6366f1;font-size:.98rem}.class-actions{margin-top:.7rem;display:flex;gap:1rem}.live-tools-list{display:flex;gap:1rem;margin-top:1.2rem;list-style:none;padding:0}.live-tools-list li{margin:0}.activity-feed{background:#fff;border-radius:14px;box-shadow:0 2px 8px 0 rgba(99,102,241,.07);padding:1.2rem 2rem;border:1.5px solid #e5e7eb;flex:1;min-width:260px}.activity-feed h3{color:#6366f1;font-size:1.05rem;font-weight:600;margin-bottom:1rem}.activity-feed ul{list-style:none;padding:0;margin:0}.activity-feed li{margin-bottom:.7rem;color:#444;font-size:.98rem}.overview-widgets{display:flex;gap:2rem;flex-wrap:wrap}.widget{background:#fff;border-radius:14px;box-shadow:0 2px 8px 0 rgba(99,102,241,.07);padding:1.2rem 2rem;min-width:200px;flex:1 1 200px;display:flex;flex-direction:column;gap:.5rem;border:1.5px solid #e5e7eb}.widget .widget-title{color:#6366f1;font-size:1.05rem;font-weight:600}.widget .widget-value{font-size:1.5rem;font-weight:700;color:#222}.widget .widget-action{margin-top:.5rem}.dashboard-sections{display:flex;gap:2rem;flex-wrap:wrap}.dashboard-section-card{background:#fff;border-radius:14px;box-shadow:0 2px 8px 0 rgba(99,102,241,.07);padding:1.2rem 1.5rem;border:1.5px solid #e5e7eb;flex:1 1 320px;min-width:320px;display:flex;flex-direction:column;gap:.7rem}.dashboard-section-card h3{color:#6366f1;font-size:1.1rem;font-weight:600;margin-bottom:.5rem}.dashboard-section-card ul{color:#444;font-size:.98rem;margin-bottom:.5rem;padding-left:1.2rem}.dashboard-section-card ul li{margin-bottom:.2rem;list-style:disc}.dashboard-section-card .btn{align-self:flex-end;margin-top:auto}@media (max-width:1100px){.dashboard-row,.dashboard-sections,.overview-widgets{flex-direction:column;gap:1rem}.activity-feed,.live-tools,.next-class{min-width:unset;max-width:unset}}@media (max-width:900px){.dashboard-layout{flex-direction:column}.sidebar{width:100%;flex-direction:row;gap:1.5rem;padding:1rem .5rem;min-height:unset}.main-area{padding:0}.dashboard-content{padding:1.2rem .5rem}}.student-actions{margin-bottom:2.5rem;display:flex;justify-content:center}.find-book{background:#fff;border-radius:14px;box-shadow:0 2px 8px 0 rgba(99,102,241,.07);padding:2rem 2.5rem;display:flex;flex-direction:column;align-items:center;gap:1.2rem;border:1.5px solid #e5e7eb;max-width:500px;width:100%}.find-book h2{color:#6366f1;font-size:1.2rem;font-weight:600;margin-bottom:.5rem}.find-teacher-form{display:flex;gap:1rem;width:100%}.find-teacher-form .input{flex:1;padding:.7em 1em;border-radius:8px;border:1.5px solid #e5e7eb;font-size:1rem}.book-class-btn{width:100%;margin-top:.5rem}.dashboard-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:2rem;margin-top:2.5rem}.dashboard-feature{background:#fff;border-radius:14px;box-shadow:0 2px 8px 0 rgba(99,102,241,.07);padding:2rem 1.5rem;border:1.5px solid #e5e7eb;display:flex;flex-direction:column;align-items:flex-start;gap:1rem}.dashboard-feature h2{color:#6366f1;font-size:1.1rem;font-weight:600;margin-bottom:.5rem}.dashboard-feature ul{color:#444;font-size:.98rem;margin-bottom:.5rem;padding-left:1.2rem}.dashboard-feature ul li{margin-bottom:.2rem;list-style:disc}@media (max-width:700px){.find-book{padding:1.2rem .7rem}.dashboard-grid{gap:1rem;margin-top:1.2rem}}.profile-save-btn{margin-top:1rem}.profile-saved-msg{display:none;color:#22c55e;margin-top:.7rem;font-weight:500}#logout-btn{display:none}.search-container{margin-bottom:2rem}.search-input{width:300px;max-width:100%}.search-input,.search-select{margin-right:1rem}.search-select-subject{width:180px;max-width:100%}.search-select-price{width:140px;max-width:100%}.search-button{margin-left:1rem}.view-profile-btn{margin-top:1rem}.auth-container-wrapper{max-width:400px;margin:3rem auto}.auth-card{padding:2rem;background:#fff;border-radius:12px;box-shadow:0 2px 8px 0 rgba(0,0,0,.04)}.auth-logo{justify-content:center}.auth-title{font-size:2rem;font-weight:700;margin-bottom:.5rem}.auth-subtitle{color:#555;margin-bottom:1.5rem}.auth-input{width:100%;margin-bottom:1rem}.auth-input-password{width:100%;margin-bottom:1.5rem}.auth-submit-btn{width:100%}.auth-switch-container{text-align:center;margin-top:1.5rem}.auth-switch-text{color:#555}.auth-switch-link{color:#6366f1;text-decoration:none;margin-left:.5rem} \ No newline at end of file diff --git a/eeshapay-logo.html b/eeshapay-logo.html deleted file mode 100755 index bc4412fc80c9c398c99dcefe27a2a3ec34f349a7..0000000000000000000000000000000000000000 --- a/eeshapay-logo.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000000000000000000000000000000000000..84578b30a5400c49ff17f1a8872824427ed5ff71 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,50 @@ +import nextCoreWebVitals from "eslint-config-next/core-web-vitals"; +import nextTypescript from "eslint-config-next/typescript"; +import { dirname } from "path"; +import { fileURLToPath } from "url"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + +const eslintConfig = [...nextCoreWebVitals, ...nextTypescript, { + rules: { + // TypeScript rules + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-unused-vars": "off", + "@typescript-eslint/no-non-null-assertion": "off", + "@typescript-eslint/ban-ts-comment": "off", + "@typescript-eslint/prefer-as-const": "off", + "@typescript-eslint/no-unused-disable-directive": "off", + + // React rules + "react-hooks/exhaustive-deps": "off", + "react-hooks/purity": "off", + "react/no-unescaped-entities": "off", + "react/display-name": "off", + "react/prop-types": "off", + "react-compiler/react-compiler": "off", + + // Next.js rules + "@next/next/no-img-element": "off", + "@next/next/no-html-link-for-pages": "off", + + // General JavaScript rules + "prefer-const": "off", + "no-unused-vars": "off", + "no-console": "off", + "no-debugger": "off", + "no-empty": "off", + "no-irregular-whitespace": "off", + "no-case-declarations": "off", + "no-fallthrough": "off", + "no-mixed-spaces-and-tabs": "off", + "no-redeclare": "off", + "no-undef": "off", + "no-unreachable": "off", + "no-useless-escape": "off", + }, +}, { + ignores: ["node_modules/**", ".next/**", "out/**", "build/**", "next-env.d.ts", "examples/**", "skills"] +}]; + +export default eslintConfig; diff --git a/group-buy.html b/group-buy.html deleted file mode 100755 index d6adaa8773c371cfca1974da5ee3762d922e862e..0000000000000000000000000000000000000000 --- a/group-buy.html +++ /dev/null @@ -1,200 +0,0 @@ - - - - - - Group Buy · Cellex - - - - - - - - - - - -
-
-
- Group Buy -
-

Loading…

-

Get 20% off when 3 friends join

-
-
- -
-
- -
Loading group buy…
-
-
- - - - diff --git a/index.html b/index.html deleted file mode 100755 index 92267a043cfc7d7005c884bf6abe48483fe58851..0000000000000000000000000000000000000000 --- a/index.html +++ /dev/null @@ -1,1448 +0,0 @@ - - - - - - Cellex — One App. Every Deal. - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
-
-
- -
-
-
-
- - CHOICE DAY • 1ST EVERY MONTH -
-
Up to 70% OFF
-
Hand-picked deals. Members only.
-
-
-
-
Ends in
-
- 12: - 45: - 30 -
-
- Shop Now → -
-
-
-
🛍️
-
- - -
-
-
-
- BEAUTY MONDAY -
-
40% OFF
-
Glow up. Limited time offer.
-
-
-
-
-
-
-
- Get Glow → -
-
-
💄
-
- - -
-
-
-
- BRAND DAY • FEATURED -
-
From ₦5,000
-
Premium products. Official stores.
-
-
-
-
Brand Gallery
-
Best prices
-
- Visit Store → -
-
-
🔦
-
-
- -
- - - -
-
-
- - -
-
-
- ⚡ -
-
FLASH SALES
-
Hurry up!
-
-
-
- 00: - 02: - 15 -
-
-
-
- -
-
-
- - -
-
-

Shop by Category

- See All → -
- -
- - - - - -
-
-
- 🌱 -
-
FARM FRESH
-
Direct from local farmers
-
-
- See All → -
-
-
- -
-
-
- - -
-
-
-
- -
-
-

New Arrivals

-

Fresh products just added

-
-
- See All → -
-
- -
-
- - - - - - - - -
-
-

Meet the Top Sellers

-

Discover stores loved by shoppers

-
-
- -
-
- - - - - - - - -
- -
-
- -
-
-
Shop what you see
-
Swipe through 15-second product videos from sellers
-
- -
-
-
- - -
-
-

Why Shop With Cellex?

-

The safest, fastest marketplace in Nigeria

-
-
-
-
- -
-

Buyer Protection

-

Full refund guarantee

-
-
-
- -
-

Fast Delivery

-

Nationwide shipping

-
-
-
- -
-

Easy Returns

-

7-day return policy

-
-
-
- -
-

24/7 Support

-

Always here to help

-
-
-
- - -
-
-
-
-
-

Start Selling Today

-

Join thousands of successful merchants

- - Become a Merchant - -
-
-
-
-
-
-
-
- SELLER CENTER -
-

Open your dashboard

-

Manage products, orders, and followers

- - Go to Dashboard - -
-
-
-
-
-
- - -
-
-
-
-
Sign in for the
best experience
-
Member prices • Early access • Coins
-
- Sign in -
-
-
- - - - - - - - - - - - - - diff --git a/js/ai-assistant.js b/js/ai-assistant.js deleted file mode 100755 index b76f074f9dc6ab3d22c7cbe5b276d7f4c651540c..0000000000000000000000000000000000000000 --- a/js/ai-assistant.js +++ /dev/null @@ -1,301 +0,0 @@ -// AI Shopping Assistant -class AIShoppingAssistant { - constructor() { - this.assistantWindow = null; - this.createAssistantWindow(); - this.bindEvents(); - } - - createAssistantWindow() { - // Create modal HTML - const modalHTML = ` -
-
-
-

Shopping Assistant

- -
-
-
-
- Hello! I'm your shopping assistant. Tell me what you're looking for, and I'll help you find the perfect product. -
-
-
- - -
-
-
-
`; - - // Add modal to body - document.body.insertAdjacentHTML('beforeend', modalHTML); - this.assistantWindow = document.getElementById('ai-assistant-modal'); - - // Add styles - const styles = ` - .ai-modal { - display: none; - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - background-color: rgba(0,0,0,0.5); - z-index: 1001; - } - - .ai-modal-content { - position: fixed; - bottom: 2rem; - right: 2rem; - width: 350px; - height: 500px; - background-color: white; - border-radius: 12px; - box-shadow: 0 5px 15px rgba(0,0,0,0.3); - display: flex; - flex-direction: column; - } - - .ai-modal-header { - padding: 1rem; - background-color: #00d4ff; - color: white; - border-radius: 12px 12px 0 0; - display: flex; - justify-content: space-between; - align-items: center; - } - - .ai-modal-header h3 { - display: flex; - align-items: center; - gap: 0.5rem; - margin: 0; - font-size: 1.1rem; - } - - .close-modal { - background: none; - border: none; - color: white; - font-size: 1.5rem; - cursor: pointer; - padding: 0; - } - - .ai-chat-container { - flex: 1; - display: flex; - flex-direction: column; - padding: 1rem; - } - - .ai-messages { - flex: 1; - overflow-y: auto; - padding: 1rem; - display: flex; - flex-direction: column; - gap: 1rem; - } - - .ai-message, .user-message { - max-width: 80%; - padding: 0.8rem; - border-radius: 12px; - font-size: 0.9rem; - } - - .ai-message { - background-color: #f0f2f5; - align-self: flex-start; - border-bottom-left-radius: 4px; - } - - .user-message { - background-color: #00d4ff; - color: white; - align-self: flex-end; - border-bottom-right-radius: 4px; - } - - .ai-input { - display: flex; - gap: 0.5rem; - padding: 1rem; - background-color: white; - border-top: 1px solid #eee; - } - - .ai-input input { - flex: 1; - padding: 0.8rem; - border: 1px solid #ddd; - border-radius: 20px; - font-size: 0.9rem; - } - - .ai-input button { - background-color: #00d4ff; - color: white; - border: none; - border-radius: 50%; - width: 40px; - height: 40px; - cursor: pointer; - display: flex; - align-items: center; - justify-content: center; - transition: background-color 0.3s; - } - - .ai-input button:hover { - background-color: #d63d40; - } - - .product-suggestion { - background-color: white; - border: 1px solid #ddd; - border-radius: 8px; - padding: 0.8rem; - margin-top: 0.5rem; - cursor: pointer; - transition: transform 0.2s; - } - - .product-suggestion:hover { - transform: translateY(-2px); - } - `; - - const styleSheet = document.createElement('style'); - styleSheet.textContent = styles; - document.head.appendChild(styleSheet); - } - - bindEvents() { - // Open assistant - document.querySelector('.ai-button').addEventListener('click', () => this.open()); - - // Close assistant - document.querySelector('.close-modal').addEventListener('click', () => this.close()); - - // Send message - document.getElementById('sendMessage').addEventListener('click', () => this.sendMessage()); - document.getElementById('userInput').addEventListener('keypress', (e) => { - if (e.key === 'Enter') this.sendMessage(); - }); - } - - open() { - this.assistantWindow.style.display = 'block'; - document.getElementById('userInput').focus(); - } - - close() { - this.assistantWindow.style.display = 'none'; - } - - sendMessage() { - const input = document.getElementById('userInput'); - const message = input.value.trim(); - - if (message) { - this.addMessage(message, 'user'); - input.value = ''; - - // Process the message and generate a response - this.processUserInput(message); - } - } - - addMessage(message, sender) { - const messagesContainer = document.getElementById('aiMessages'); - const messageDiv = document.createElement('div'); - messageDiv.className = sender === 'user' ? 'user-message' : 'ai-message'; - messageDiv.textContent = message; - messagesContainer.appendChild(messageDiv); - messagesContainer.scrollTop = messagesContainer.scrollHeight; - } - - async processUserInput(message) { - // Simulate AI processing - const keywords = this.extractKeywords(message); - const suggestions = this.findRelevantProducts(keywords); - - // Simulate typing delay - await this.delay(1000); - - // Generate and display response - const response = this.generateResponse(message, suggestions); - this.addMessage(response, 'ai'); - - // Display product suggestions if any - if (suggestions.length > 0) { - await this.delay(500); - this.displayProductSuggestions(suggestions); - } - } - - extractKeywords(message) { - // Simple keyword extraction (can be enhanced with NLP) - return message.toLowerCase() - .replace(/[^\w\s]/g, '') - .split(' ') - .filter(word => word.length > 2); - } - - findRelevantProducts(keywords) { - // This should be replaced with actual product filtering logic - return products.filter(product => - keywords.some(keyword => - product.name.toLowerCase().includes(keyword) || - product.description.toLowerCase().includes(keyword) || - product.category.toLowerCase().includes(keyword) - ) - ); - } - - generateResponse(message, suggestions) { - if (suggestions.length === 0) { - return "I couldn't find any products matching your description. Could you please provide more details about what you're looking for?"; - } - - return `I found ${suggestions.length} products that might interest you. Here are some suggestions:`; - } - - displayProductSuggestions(suggestions) { - const messagesContainer = document.getElementById('aiMessages'); - - suggestions.forEach(product => { - const suggestionDiv = document.createElement('div'); - suggestionDiv.className = 'product-suggestion'; - suggestionDiv.innerHTML = ` - ${product.name} -

${product.description}

-

₦${product.price}

- `; - - suggestionDiv.addEventListener('click', () => { - // Navigate to product details or add to cart - this.addMessage(`Would you like to add ${product.name} to your cart?`, 'ai'); - }); - - messagesContainer.appendChild(suggestionDiv); - }); - - messagesContainer.scrollTop = messagesContainer.scrollHeight; - } - - delay(ms) { - return new Promise(resolve => setTimeout(resolve, ms)); - } -} - -// Initialize AI Shopping Assistant when the page loads -document.addEventListener('DOMContentLoaded', () => { - window.aiAssistant = new AIShoppingAssistant(); -}); \ No newline at end of file diff --git a/js/ai-buyer-assistant.js b/js/ai-buyer-assistant.js deleted file mode 100755 index 5dfb3f8515fdfc245694ae6f6799c3b3f10589c3..0000000000000000000000000000000000000000 --- a/js/ai-buyer-assistant.js +++ /dev/null @@ -1,962 +0,0 @@ -/** - * Cellex AI Buyer Assistant - "Cellex" - * FREE & OPEN SOURCE - No API keys required! - * - * Supports TWO modes: - * 1. Widget mode (index.html) — creates floating chat widget - * 2. Full-page mode (ai-chat.html) — attaches to existing page UI - * - * The AI backend handles natural language understanding - * Frontend just sends context and executes actions - */ - -(function() { - 'use strict'; - - const CONFIG = { - // AI chat now goes through our Supabase Edge Function (server-side). - // The HF Space URL, AI model, and system prompt are all hidden from the frontend. - // Edge function: supabase/functions/ai-chat/index.ts - sessionKey: 'eeshamart_ai_session', - debug: true - }; - - // Detect full-page mode: ai-chat.html has #chatContainer - const isFullPage = !!document.getElementById('chatContainer'); - - // Inject shared product + action-result styles ONCE, regardless of mode. - // Both widget mode and full-page mode use the same .ai-product-card / .ai-action-result - // classes so users get a consistent experience across surfaces. - (function injectSharedStyles() { - if (document.getElementById('ai-shared-styles')) return; - const style = document.createElement('style'); - style.id = 'ai-shared-styles'; - style.textContent = ` - .ai-product-card{background:white;border-radius:10px;padding:10px;margin-top:10px;box-shadow:0 2px 8px rgba(0,0,0,.06);display:flex;gap:10px;cursor:pointer;transition:all .2s;border:2px solid transparent} - .ai-product-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px rgba(0,0,0,.1);border-color:#00d4ff} - .ai-product-img{width:64px;height:64px;border-radius:8px;object-fit:cover;background:#f1f5f9;flex-shrink:0} - .ai-product-info{flex:1;min-width:0} - .ai-product-name{font-weight:600;font-size:12px;margin-bottom:2px;color:#1e293b} - .ai-product-price{color:#0891b2;font-weight:700;font-size:13px} - .ai-product-meta{font-size:10px;color:#64748b;margin-top:2px} - .ai-product-actions{display:flex;gap:4px;margin-top:6px} - .ai-action-btn{padding:4px 8px;border-radius:4px;border:none;font-size:10px;font-weight:600;cursor:pointer} - .ai-action-btn-primary{background:linear-gradient(135deg,#00d4ff,#00d4ff);color:#0f172a} - .ai-action-btn-secondary{background:#f1f5f9;color:#475569} - .ai-action-btn:hover{transform:scale(1.05)} - .ai-action-result{display:flex;align-items:center;gap:6px;padding:8px 12px;background:#f0fdf4;border-radius:8px;margin-top:8px;font-size:12px;color:#166534;border:1px solid #bbf7d0} - .ai-action-result.error{background:#fef2f2;color:#991b1b;border-color:#fecaca} - .ai-action-result.warning{background:#fffbeb;color:#0e7490;border-color:#a5f3fc} - `; - document.head.appendChild(style); - })(); - let isOpen = false; - let isLoading = false; - let conversationHistory = []; - let sessionId = `session-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`; - let container = null; - let selectedImage = null; - let context = { - lastShownProducts: [], - cartItems: [], - user: null - }; - - const CATEGORIES = [ - { name: 'Electronics', icon: 'fa-laptop', query: 'Show me electronics' }, - { name: 'Fashion', icon: 'fa-tshirt', query: 'Show me fashion' }, - { name: 'Home', icon: 'fa-couch', query: 'Show me home products' }, - { name: 'Beauty', icon: 'fa-spa', query: 'Show me beauty products' }, - { name: 'Sports', icon: 'fa-futbol', query: 'Show me sports gear' }, - { name: 'Books', icon: 'fa-book', query: 'Show me books' } - ]; - - document.addEventListener('DOMContentLoaded', init); - - function init() { - if (isFullPage) { - initFullPage(); - } else { - setTimeout(createWidget, 500); - } - } - - // ============================================ - // FULL-PAGE MODE (ai-chat.html) - // ============================================ - - function initFullPage() { - console.log('[Cellex AI] Full-page mode activated'); - - // Wire suggestion chips to sendMessage - document.querySelectorAll('.chip[data-query], .chip[onclick]').forEach(btn => { - // Chips already have onclick="sendSuggestion('...')" in HTML - }); - - // Wire image upload button - const fileInput = document.getElementById('ai-file-input'); - if (fileInput) { - fileInput.addEventListener('change', handleFileSelect); - } - - // Wire image remove button - const removeBtn = document.getElementById('ai-remove-image'); - if (removeBtn) { - removeBtn.addEventListener('click', removeSelectedImage); - } - - // Make sendMessage available globally (needed by onclick/onkeypress in HTML) - window.sendMessage = sendMessage; - - // Make sendSuggestion available globally - window.sendSuggestion = function(text) { - document.getElementById('chatInput').value = text; - sendMessage(); - }; - - // Make clearChat available globally - window.clearChat = clearConversation; - } - - function fullPage_addMessage(role, content, data = {}) { - const chatContainer = document.getElementById('chatContainer'); - if (!chatContainer) return; - const now = new Date(); - const time = now.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); - const isUser = role === 'user'; - const parsed = content - .replace(/\*\*(.*?)\*\*/g, '₦1') - .replace(/\n/g, '
'); - - // Build image HTML if provided - let imageHtml = ''; - if (data.image) { - imageHtml = `
Shared image
`; - } - - if (isUser) { - const div = document.createElement('div'); - div.className = 'flex justify-end mb-3'; - div.innerHTML = ` -
- ${imageHtml} -

${parsed}

-

${time}

-
`; - chatContainer.appendChild(div); - } else { - const div = document.createElement('div'); - div.className = 'flex items-start gap-2.5 mb-3'; - div.innerHTML = ` -
- -
-
- ${imageHtml} -
${parsed}
- ${renderProductsWidget(data.products)} - ${renderActionResultWidget(data.actionResult)} -

${time}

-
`; - chatContainer.appendChild(div); - } - - fullPageScrollToBottom(); - addProductHandlers(); - - // Hide suggestion chips after first interaction - if (conversationHistory.length > 0 || role === 'user') { - const chips = document.getElementById('suggestionChips'); - if (chips) chips.style.display = 'none'; - } - } - - function fullPage_showTypingIndicator() { - const chatContainer = document.getElementById('chatContainer'); - if (!chatContainer) return; - const div = document.createElement('div'); - div.id = 'typingIndicator'; - div.className = 'flex items-start gap-2.5 mb-3'; - div.innerHTML = ` -
- -
-
-
- - - -
-
`; - chatContainer.appendChild(div); - fullPageScrollToBottom(); - } - - function fullPage_removeTypingIndicator() { - document.getElementById('typingIndicator')?.remove(); - } - - function fullPage_updateTypingText(text) { - const indicator = document.getElementById('typingIndicator'); - if (indicator) { - const bubble = indicator.querySelector('.bg-white'); - if (bubble) { - bubble.innerHTML = `

${text}

`; - } - } - } - - function fullPageScrollToBottom() { - const chatContainer = document.getElementById('chatContainer'); - if (chatContainer) { - requestAnimationFrame(() => { - chatContainer.scrollTop = chatContainer.scrollHeight; - }); - } - } - - // ============================================ - // WIDGET MODE (index.html) — original code - // ============================================ - - function createWidget() { - container = document.createElement('div'); - container.id = 'ai-buyer-assistant'; - container.innerHTML = getWidgetHTML(); - document.body.appendChild(container); - - document.getElementById('ai-toggle-btn').addEventListener('click', toggleWidget); - document.getElementById('ai-close-btn')?.addEventListener('click', toggleWidget); - document.getElementById('ai-send-btn').addEventListener('click', sendMessage); - document.getElementById('ai-input').addEventListener('keypress', handleKeyPress); - document.getElementById('ai-file-input').addEventListener('change', handleFileSelect); - document.getElementById('ai-clear-btn')?.addEventListener('click', clearConversation); - - container.querySelectorAll('.ai-category-btn').forEach(btn => { - btn.addEventListener('click', () => { - document.getElementById('ai-input').value = btn.dataset.query; - sendMessage(); - }); - }); - - document.getElementById('ai-remove-image')?.addEventListener('click', removeSelectedImage); - } - - function getWidgetHTML() { - return ` - - - - -
-
-
- -
-

Cellex AI

- - - FREE & Open Source - -
-
-
- - -
-
- -
- -
-
- Preview - -
-
- -
-

Try these:

-
- ${CATEGORIES.map(cat => ` - - `).join('')} -
-
- -
-
- - - - -
-
-
- `; - } - - function getWidgetStyles() { - return ` - .ai-toggle-btn{position:fixed;bottom:24px;right:24px;width:56px;height:56px;border-radius:50%;background:linear-gradient(135deg,#00d4ff,#00d4ff);border:none;cursor:pointer;box-shadow:0 4px 20px rgba(245,158,11,0.4);z-index:9998;display:flex;align-items:center;justify-content:center;transition:all .3s;color:#0f172a;font-size:22px} - .ai-toggle-btn:hover{transform:scale(1.1);box-shadow:0 6px 30px rgba(245,158,11,0.5)} - .ai-pulse{position:absolute;top:-2px;right:-2px;width:14px;height:14px;background:#22c55e;border-radius:50%;border:2px solid white;animation:pulse 2s infinite} - @keyframes pulse{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.2);opacity:.7}} - .ai-widget{position:fixed;bottom:96px;right:24px;width:380px;max-width:calc(100vw - 48px);height:560px;max-height:calc(100vh - 140px);background:white;border-radius:16px;box-shadow:0 10px 50px rgba(0,0,0,.15);z-index:9999;display:flex;flex-direction:column;overflow:hidden;transition:all .3s;font-family:'Plus Jakarta Sans',system-ui,sans-serif} - .ai-hidden{transform:translateY(20px);opacity:0;pointer-events:none} - .ai-header{background:linear-gradient(135deg,#0f172a,#1e293b);color:white;padding:14px 18px;display:flex;align-items:center;justify-content:space-between} - .ai-header-left{display:flex;align-items:center;gap:10px} - .ai-logo{width:36px;height:36px;background:linear-gradient(135deg,#00d4ff,#00d4ff);border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:16px;color:#0f172a} - .ai-header-info h3{margin:0;font-size:16px;font-weight:700} - .ai-status{display:flex;align-items:center;gap:5px;font-size:11px;opacity:.8} - .ai-status-dot{width:6px;height:6px;background:#22c55e;border-radius:50%} - .ai-header-actions{display:flex;gap:6px} - .ai-header-btn{width:28px;height:28px;border-radius:6px;border:none;background:rgba(255,255,255,.1);color:white;cursor:pointer;font-size:12px} - .ai-header-btn:hover{background:rgba(255,255,255,.2)} - .ai-messages{flex:1;overflow-y:auto;padding:16px;background:#f8fafc} - .ai-message{display:flex;gap:10px;margin-bottom:14px;animation:fadeIn .3s} - @keyframes fadeIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}} - .ai-message-user{flex-direction:row-reverse} - .ai-avatar{width:32px;height:32px;border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:13px} - .ai-avatar-assistant{background:linear-gradient(135deg,#00d4ff,#00d4ff);color:#0f172a} - .ai-avatar-user{background:#0f172a;color:#00d4ff} - .ai-bubble{max-width:260px;padding:10px 14px;border-radius:14px;font-size:13px;line-height:1.5} - .ai-bubble-assistant{background:white;color:#1e293b;border-bottom-left-radius:4px;box-shadow:0 2px 8px rgba(0,0,0,.05)} - .ai-bubble-user{background:linear-gradient(135deg,#00d4ff,#00d4ff);color:#0f172a;border-bottom-right-radius:4px} - .ai-bubble strong{font-weight:600} - .ai-message-image{margin-bottom:8px} - .ai-message-image img{max-width:200px;max-height:150px;border-radius:8px;object-fit:cover;box-shadow:0 2px 8px rgba(0,0,0,.1)} - /* Product card / action-result / button styles live in #ai-shared-styles (injected once at top of file) so they're shared with full-page mode */ - .ai-quick-actions{padding:10px 16px;border-top:1px solid #e2e8f0;background:white} - .ai-quick-title{font-size:11px;color:#64748b;margin:0 0 6px 0} - .ai-categories{display:flex;gap:6px;flex-wrap:wrap} - .ai-category-btn{display:flex;align-items:center;gap:4px;padding:5px 10px;border-radius:16px;border:1px solid #e2e8f0;background:white;font-size:11px;cursor:pointer;color:#475569} - .ai-category-btn:hover{border-color:#00d4ff;background:#fffbeb;color:#b45309} - .ai-image-preview{padding:10px 16px;background:#f8fafc;border-top:1px solid #e2e8f0} - .ai-preview-container{position:relative;display:inline-block} - .ai-preview-container img{max-width:80px;max-height:80px;border-radius:6px;object-fit:cover} - .ai-remove-image{position:absolute;top:-6px;right:-6px;width:20px;height:20px;border-radius:50%;border:none;background:#ef4444;color:white;cursor:pointer;font-size:10px} - .ai-input-area{padding:10px 16px;background:white;border-top:1px solid #e2e8f0} - .ai-input-container{display:flex;gap:6px;align-items:center;background:#f1f5f9;border-radius:20px;padding:4px} - .ai-upload-btn{width:36px;height:36px;border-radius:50%;border:none;background:transparent;color:#64748b;cursor:pointer} - .ai-upload-btn:hover{background:#e2e8f0;color:#00d4ff} - #ai-input{flex:1;border:none;background:transparent;padding:6px;font-size:13px;outline:none} - .ai-send-btn{width:36px;height:36px;border-radius:50%;border:none;background:linear-gradient(135deg,#00d4ff,#00d4ff);color:#0f172a;cursor:pointer} - .ai-send-btn:hover{transform:scale(1.05)} - .ai-loading{display:flex;gap:4px;padding:12px} - .ai-loading span{width:6px;height:6px;background:#00d4ff;border-radius:50%;animation:bounce 1.4s infinite} - .ai-loading span:nth-child(1){animation-delay:-.32s} - .ai-loading span:nth-child(2){animation-delay:-.16s} - @keyframes bounce{0%,80%,100%{transform:scale(0)}40%{transform:scale(1)}} - @media(max-width:480px){.ai-widget{bottom:0;right:0;width:100%;height:100%;max-height:100%;border-radius:0}.ai-toggle-btn{bottom:80px}} - `; - } - - function toggleWidget() { - isOpen = !isOpen; - const widget = document.getElementById('ai-widget'); - const toggleBtn = document.getElementById('ai-toggle-btn'); - - if (isOpen) { - widget.classList.remove('ai-hidden'); - toggleBtn.style.display = 'none'; - document.getElementById('ai-input').focus(); - if (conversationHistory.length === 0) showWelcomeMessage(); - } else { - widget.classList.add('ai-hidden'); - toggleBtn.style.display = 'flex'; - } - } - - function showWelcomeMessage() { - if (isFullPage) return; // Welcome already in HTML - addMessage('assistant', `Hi! I'm Cellex, your AI shopping assistant!

-I can help you with:
-- Finding products within your budget
-- Planning your shopping list
-- Answering any questions

-Just talk to me naturally!
-100% FREE & Open Source!`); - } - - function addMessage(role, content, data = {}) { - if (isFullPage) { - fullPage_addMessage(role, content, data); - return; - } - - const messagesContainer = document.getElementById('ai-messages'); - const isUser = role === 'user'; - const parsed = content.replace(/\*\*(.*?)\*\*/g, '₦1').replace(/\n/g, '
'); - - let imageHtml = ''; - if (data.image) { - imageHtml = `
Shared image
`; - } - - let html = ` -
-
- -
-
- ${imageHtml} -
${parsed}
- ${renderProductsWidget(data.products)} - ${renderActionResultWidget(data.actionResult)} -
-
`; - - messagesContainer.insertAdjacentHTML('beforeend', html); - messagesContainer.scrollTop = messagesContainer.scrollHeight; - addProductHandlers(); - - if (conversationHistory.length > 0 || role === 'user') { - document.getElementById('ai-quick-actions').style.display = 'none'; - } - } - - function renderProductsWidget(products) { - if (!products || products.length === 0) return ''; - return products.slice(0, 5).map((p, i) => ` -
- ${p.name || 'Product'} -
-
${i + 1}. ${p.name}
-
₦${(p.price || 0).toLocaleString()}
-
${p.category || ''}
-
- - -
-
-
- `).join(''); - } - - function renderActionResultWidget(result) { - if (!result) return ''; - const cls = result.success ? '' : (result.requiresAuth ? 'warning' : 'error'); - const icon = result.success ? 'fa-check-circle' : (result.requiresAuth ? 'fa-exclamation-triangle' : 'fa-times-circle'); - return `
${result.message}
`; - } - - function addProductHandlers() { - const parentEl = isFullPage ? document.getElementById('chatContainer') : document.getElementById('ai-messages'); - if (!parentEl) return; - - parentEl.querySelectorAll('.ai-product-card:not([data-handled])').forEach(card => { - card.setAttribute('data-handled', 'true'); - card.addEventListener('click', e => { - if (!e.target.closest('.ai-action-btn')) { - window.location.href = `product.html?id=${card.dataset.productId}`; - } - }); - }); - - parentEl.querySelectorAll('.ai-action-btn:not([data-handled])').forEach(btn => { - btn.setAttribute('data-handled', 'true'); - btn.addEventListener('click', async e => { - e.stopPropagation(); - const action = btn.dataset.action; - const productId = parseInt(btn.dataset.productId); - - if (action === 'add') { - btn.innerHTML = ''; - const result = await window.Cart?.addToCart(productId, 1); - - if (result?.success) { - btn.innerHTML = ' Added'; - btn.classList.remove('ai-action-btn-primary'); - btn.classList.add('ai-action-btn-secondary'); - } else { - btn.innerHTML = ' Add'; - if (result?.requiresAuth) { - addMessage('assistant', 'Please login to add items.'); - } - } - } else if (action === 'view') { - window.location.href = `product.html?id=${productId}`; - } - }); - }); - } - - function addLoading() { - if (isFullPage) { - fullPage_showTypingIndicator(); - return; - } - const c = document.getElementById('ai-messages'); - c.insertAdjacentHTML('beforeend', `
-
-
-
`); - c.scrollTop = c.scrollHeight; - } - - function removeLoading() { - if (isFullPage) { - fullPage_removeTypingIndicator(); - return; - } - document.getElementById('ai-loading-msg')?.remove(); - } - - function handleFileSelect(e) { - const file = e.target.files[0]; - console.log('[Cellex AI] File selected:', file?.name, file?.type, file?.size); - if (!file?.type.startsWith('image/')) return; - - // Compress image to max 512px before sending (phone photos are too large for HF Space) - const img = new Image(); - img.onload = function() { - const MAX = 512; - let w = img.width, h = img.height; - if (w > MAX || h > MAX) { - if (w > h) { h = Math.round(h * MAX / w); w = MAX; } - else { w = Math.round(w * MAX / h); h = MAX; } - } - const canvas = document.createElement('canvas'); - canvas.width = w; canvas.height = h; - canvas.getContext('2d').drawImage(img, 0, 0, w, h); - selectedImage = canvas.toDataURL('image/jpeg', 0.7); - console.log('[Cellex AI] Image compressed. Original:', file.size, 'bytes. Base64 length:', selectedImage.length); - - if (isFullPage) { - const preview = document.getElementById('ai-image-preview'); - if (preview) { - document.getElementById('ai-preview-img').src = selectedImage; - preview.classList.remove('hidden'); - } - } else { - document.getElementById('ai-preview-img').src = selectedImage; - document.getElementById('ai-image-preview').classList.remove('ai-hidden'); - } - }; - img.onerror = function() { - // Fallback: use original file - const reader = new FileReader(); - reader.onload = ev => { - selectedImage = ev.target.result; - if (isFullPage) { - const preview = document.getElementById('ai-image-preview'); - if (preview) { - document.getElementById('ai-preview-img').src = selectedImage; - preview.classList.remove('hidden'); - } - } else { - document.getElementById('ai-preview-img').src = selectedImage; - document.getElementById('ai-image-preview').classList.remove('ai-hidden'); - } - }; - reader.readAsDataURL(file); - }; - img.src = URL.createObjectURL(file); - e.target.value = ''; - } - - function removeSelectedImage() { - selectedImage = null; - if (isFullPage) { - const preview = document.getElementById('ai-image-preview'); - if (preview) preview.classList.add('hidden'); - } else { - document.getElementById('ai-image-preview').classList.add('ai-hidden'); - } - } - - function handleKeyPress(e) { - if (e.key === 'Enter' && !e.shiftKey) { - e.preventDefault(); - sendMessage(); - } - } - - // ============================================ - // SHARED LOGIC — used by BOTH modes - // ============================================ - - async function updateContext() { - try { - console.log('[Cellex AI] Checking login status...'); - console.log('[Cellex AI] window.Cart exists:', !!window.Cart); - console.log('[Cellex AI] window.EdgeFunctions exists:', !!window.EdgeFunctions); - - if (!window.Cart) { - console.error('[Cellex AI] Cart module not loaded!'); - await new Promise(resolve => setTimeout(resolve, 500)); - if (!window.Cart) { - console.error('[Cellex AI] Cart module still not loaded after waiting'); - context.user = null; - context.cartItems = []; - return; - } - } - - context.user = await window.Cart.getCurrentUser(); - console.log('[Cellex AI] User object:', context.user ? `ID: ${context.user.id}` : 'null'); - - if (context.user) { - console.log('[Cellex AI] Fetching cart items for user...'); - const items = await window.Cart.getCartItems(); - context.cartItems = items || []; - console.log('[Cellex AI] Cart items fetched:', context.cartItems.length); - } else { - context.cartItems = []; - console.log('[Cellex AI] No user logged in - cart empty'); - } - } catch (e) { - console.error('[Cellex AI] Error updating context:', e); - console.error('[Cellex AI] Error stack:', e.stack); - } - } - - async function sendMessage() { - const input = isFullPage ? document.getElementById('chatInput') : document.getElementById('ai-input'); - const text = input.value.trim(); - if ((!text && !selectedImage) || isLoading) return; - - // DEBUG COMMAND - if (text && (text.toLowerCase() === 'debug' || text.toLowerCase() === '/debug')) { - addMessage('user', text); - input.value = ''; - - let debugInfo = '**DEBUG INFO:**\n\n'; - debugInfo += `window.Cart: ${window.Cart ? 'Loaded' : 'NOT LOADED'}\n`; - debugInfo += `window.EdgeFunctions: ${window.EdgeFunctions ? 'Loaded' : 'NOT LOADED'}\n`; - - if (window.Cart) { - try { - const user = await window.Cart.getCurrentUser(); - debugInfo += `\n**Login Status:**\n`; - debugInfo += `Logged in: ${user ? 'YES' : 'NO'}\n`; - if (user) debugInfo += `User ID: ${user.id}\n`; - - const items = await window.Cart.getCartItems(); - debugInfo += `\n**Cart Data:**\n`; - debugInfo += `Items count: ${items ? items.length : 0}\n`; - if (items && items.length > 0) { - debugInfo += `Items:\n`; - items.forEach((item, i) => { - debugInfo += ` ${i+1}. ${item.products?.name || 'Unknown'} x${item.quantity}\n`; - }); - } - } catch (e) { - debugInfo += `\nError: ${e.message}\n`; - } - } - - addMessage('assistant', debugInfo); - return; - } - - const imageToSend = selectedImage; - const displayText = text || 'Shared an image'; - console.log('[Cellex AI] sendMessage called. Has image:', !!imageToSend, 'Text:', displayText); - addMessage('user', displayText, { image: imageToSend }); - input.value = ''; - removeSelectedImage(); - - isLoading = true; - addLoading(); - - try { - await updateContext(); - - const contextForAI = { - lastShownProducts: context.lastShownProducts.map(p => ({ - id: p.id, name: p.name, price: p.price, category: p.category - })), - cartItems: context.cartItems.map(i => ({ - product_name: i.products?.name || i.product_name || 'Unknown', - quantity: i.quantity || 1, - price: i.products?.price || i.price || 0 - })), - cartTotal: context.cartItems.reduce((s, i) => s + ((i.products?.price || i.price || 0) * (i.quantity || 1)), 0), - isLoggedIn: !!context.user, - conversationHistory: conversationHistory.slice(-10) - }; - - if (imageToSend) { - contextForAI.image = imageToSend; - console.log('[Cellex AI] Image included in request. Base64 length:', imageToSend.length); - } - - // Update typing status after 10s - let statusTimer; - if (isFullPage) { - statusTimer = setTimeout(() => { - fullPage_updateTypingText('Thinking hard, please wait...'); - }, 10000); - } - - // Build message text — tell AI this is a product they should search for - const messageForAI = imageToSend - ? `[User sent a product image] ${text || 'Find me this product or similar ones'}` - : text; - - // Call AI via Supabase Edge Function (server-side). - // The edge function handles: AI model call, Supabase product search, - // cart context fetching, login enforcement. Frontend just gets the result. - const data = await window.EdgeFunctions.aiChat(messageForAI, contextForAI); - - if (statusTimer) clearTimeout(statusTimer); - - if (CONFIG.debug) console.log('[Cellex AI] Response:', data); - - removeLoading(); - - if (data.success) { - conversationHistory.push({ role: 'user', content: text }); - conversationHistory.push({ role: 'assistant', content: data.response }); - - if (conversationHistory.length > 20) { - conversationHistory = conversationHistory.slice(-20); - } - - if (data.products?.length > 0) { - context.lastShownProducts = data.products; - } - - let actionResult = null; - let actionProducts = null; - if (data.action) { - actionResult = await executeAction(data.action, data); - // If the action returned products (e.g. view_cart), include them for rendering - if (actionResult?.products?.length > 0) { - actionProducts = actionResult.products; - } - } - - // Merge products from API response and action results - const allProducts = data.products?.length > 0 ? data.products : actionProducts; - - // Show image debug info so user can see on phone (no laptop needed) - let debugTag = ''; - if (imageToSend) { - const imgDesc = data.image_description || 'not processed'; - debugTag = `\n\n🖼️ Image sent (${Math.round(imageToSend.length / 1024)}KB) → AI saw: "${imgDesc}"`; - } - addMessage('assistant', data.response + debugTag, { products: allProducts, actionResult }); - } else { - addMessage('assistant', data.response || 'Sorry, an error occurred.'); - } - } catch (error) { - console.error('[Cellex AI] Error:', error); - removeLoading(); - - let errorMsg = "Connection error. Please try again."; - if (error.name === 'AbortError') { - errorMsg = "The AI assistant took too long to respond. The server might be busy — please try again."; - } - addMessage('assistant', errorMsg); - } - - isLoading = false; - } - - async function executeAction(action, data) { - const Cart = window.Cart; - if (!Cart) return { success: false, message: 'Cart unavailable' }; - - const user = await Cart.getCurrentUser(); - if (!user) return { success: false, requiresAuth: true, message: 'Please login first.' }; - - const type = action.type; - - if (type === 'add_to_cart') { - let toAdd = []; - const qty = action.quantity || 1; - - if (action.product_id) { - const p = context.lastShownProducts.find(p => p.id === action.product_id); - if (p) toAdd = [p]; - } else if (action.all) { - toAdd = context.lastShownProducts; - } else if (action.product_index !== undefined) { - const p = context.lastShownProducts[action.product_index - 1]; - if (p) toAdd = [p]; - } else if (action.productIndex !== undefined) { - const p = context.lastShownProducts[action.productIndex - 1]; - if (p) toAdd = [p]; - } else if (action.productIds) { - toAdd = context.lastShownProducts.filter(p => action.productIds.includes(p.id)); - } else if (context.lastShownProducts.length > 0) { - toAdd = context.lastShownProducts.slice(0, 1); - } - - if (toAdd.length === 0) { - return { success: false, message: 'Which product would you like to add?' }; - } - - let added = 0, total = 0; - for (const p of toAdd) { - const r = await Cart.addToCart(p.id, qty); - if (r.success) { added++; total += (p.price || 0) * qty; } - } - - return { - success: true, - message: `Added ${added} item(s) to cart${qty > 1 ? ` (${qty}x each)` : ''} - Total: ₦${total.toLocaleString()}` - }; - } - - if (type === 'remove_from_cart') { - // HF Space sends product_index (number from cart list), also supports product_id - if (action.product_index !== undefined || action.cart_item_number !== undefined) { - const items = await Cart.getCartItems(); - const idx = action.product_index ?? action.cart_item_number; - if (items && items.length >= idx && idx >= 1) { - const item = items[idx - 1]; - const productId = item.product_id || item.products?.id; - if (productId) { - const result = await Cart.removeFromCart(productId); - if (result.success) { - return { success: true, message: 'Item removed from cart!' }; - } - } - } - return { success: false, message: 'Could not find that item in cart.' }; - } - if (action.product_id) { - const result = await Cart.removeFromCart(action.product_id); - if (result.success) { - return { success: true, message: 'Item removed from cart!' }; - } - return { success: false, message: 'Could not remove item.' }; - } - return { success: false, message: 'Which item would you like to remove?' }; - } - - if (type === 'view_cart') { - const items = await Cart.getCartItems(); - - if (!items || !items.length) { - const user = await Cart.getCurrentUser(); - if (!user) { - return { success: false, requiresAuth: true, message: 'Please login to view your cart.' }; - } - return { success: true, message: 'Your cart is empty. Would you like to browse some products?' }; - } - - let cartDetails = 'Your Cart:\n'; - let total = 0; - // Build products array with images for rendering - const cartProducts = items.map((item, i) => { - const name = item.products?.name || 'Unknown'; - const price = item.products?.price || 0; - const qty = item.quantity || 1; - const subtotal = price * qty; - total += subtotal; - cartDetails += `${i+1}. ${name} x${qty} - ₦${subtotal.toLocaleString()}\n`; - return { - id: item.product_id || item.products?.id, - name: name, - price: price, - image_url: item.products?.image_url || null, - category: item.products?.category || '' - }; - }); - cartDetails += `\nTotal: ₦${total.toLocaleString()}`; - - // Store cart products so they render with images - context.lastShownProducts = cartProducts; - - return { success: true, message: cartDetails, products: cartProducts }; - } - - if (type === 'checkout') { - window.location.href = 'checkout.html'; - return { success: true, message: 'Redirecting to checkout...' }; - } - - if (type === 'clear_cart') { - const result = await Cart.clearCart(); - if (result.success) { - context.lastShownProducts = []; - return { success: true, message: 'Your cart has been cleared! It is now empty.' }; - } - return { success: false, message: 'Could not clear cart. Please try again.' }; - } - - if (type === 'update_cart') { - const cartItems = await Cart.getCartItems(); - const cartItemNumber = action.cart_item_number || 1; - const newQuantity = action.new_quantity; - - if (cartItems && cartItems.length >= cartItemNumber && cartItemNumber >= 1 && newQuantity !== undefined) { - const item = cartItems[cartItemNumber - 1]; - const result = await Cart.updateQuantity(item.id, newQuantity); - if (result.success) { - return { success: true, message: newQuantity <= 0 ? 'Item removed from cart!' : `Quantity updated to ${newQuantity}!` }; - } - return { success: false, message: 'Could not update quantity.' }; - } - return { success: false, message: cartItems && cartItems.length > 0 ? `Choose a number between 1 and ${cartItems.length}` : 'Your cart is empty.' }; - } - - return null; - } - - async function clearConversation() { - conversationHistory = []; - context.lastShownProducts = []; - - if (isFullPage) { - const chatContainer = document.getElementById('chatContainer'); - chatContainer.innerHTML = ''; - - // Re-add welcome message - const welcomeDiv = document.createElement('div'); - welcomeDiv.className = 'flex items-start gap-2.5 mb-4 mt-4 animate-fade-in'; - welcomeDiv.innerHTML = ` -
- -
-
-

Hi! I'm your Cellex AI Assistant. I can help you find products, compare prices, track deals, and more! What are you looking for today?

-

Just now

-
`; - chatContainer.appendChild(welcomeDiv); - - // Re-add suggestion chips - const chipsDiv = document.createElement('div'); - chipsDiv.id = 'suggestionChips'; - chipsDiv.className = 'flex flex-wrap gap-2 mb-4 ml-10'; - chipsDiv.innerHTML = ` - - - - `; - chatContainer.appendChild(chipsDiv); - } else { - document.getElementById('ai-messages').innerHTML = ''; - document.getElementById('ai-quick-actions').style.display = 'block'; - showWelcomeMessage(); - } - } - - // Expose globally - window.CellexAI = { - open: toggleWidget, - close: () => { if (isOpen) toggleWidget(); }, - clearHistory: clearConversation - }; - window.sendMessage = sendMessage; -})(); diff --git a/js/cart.js b/js/cart.js deleted file mode 100755 index c5985175803f258c7ef91d607b39d3b2069c16c0..0000000000000000000000000000000000000000 --- a/js/cart.js +++ /dev/null @@ -1,203 +0,0 @@ -/** - * Cellex Cart Module (Cookie-Based Auth Edition) - * ---------------------------------------------- - * All cart operations go through the /api/cart proxy → Supabase Edge Function. - * No Supabase SDK, no localStorage, no tokens in JS. - * Auth is handled via HTTP-only cookies set by the server. - * - * Usage: - * - * - * window.Cart.addToCart(productId); - */ - -(function() { - 'use strict'; - - /** - * Get current user (async — calls checkSession if needed). - * Replaces supabase.auth.getSession(). - */ - async function getCurrentUser() { - return await window.EdgeFunctions.auth.getCurrentUserAsync(); - } - - /** - * Get total cart items count - */ - async function getCartCount() { - const user = await getCurrentUser(); - if (!user) return 0; - - const result = await window.EdgeFunctions.cart.count(); - if (!result.success) { - console.error('[Cart] Error fetching cart count:', result.error); - return 0; - } - return result.count || 0; - } - - /** - * Update all cart count elements on the page - */ - async function updateCartCountUI() { - const count = await getCartCount(); - - const cartCountEl = document.getElementById('cartCount'); - const mobileCartCountEl = document.getElementById('mobileCartCount'); - - if (cartCountEl) { - cartCountEl.textContent = count; - cartCountEl.style.display = count > 0 ? 'flex' : 'none'; - } - - if (mobileCartCountEl) { - mobileCartCountEl.textContent = count; - mobileCartCountEl.style.display = count > 0 ? 'flex' : 'none'; - } - - return count; - } - - /** - * Get all cart items with product details - */ - async function getCartItems() { - const user = await getCurrentUser(); - if (!user) { - return []; - } - - const result = await window.EdgeFunctions.cart.get(); - if (!result.success) { - console.error('[Cart] Error fetching cart items:', result.error); - return []; - } - - return result.items || []; - } - - /** - * Add item to cart - */ - async function addToCart(productId, quantity = 1) { - const user = await getCurrentUser(); - if (!user) { - return { - success: false, - requiresAuth: true, - message: 'Please login to add items to cart' - }; - } - - const result = await window.EdgeFunctions.cart.add(productId, quantity); - - if (result.success) { - await updateCartCountUI(); - return { success: true, message: 'Added to cart!' }; - } - - return { success: false, message: result.error || 'Failed to add to cart' }; - } - - /** - * Remove item from cart - */ - async function removeFromCart(cartItemId) { - const user = await getCurrentUser(); - if (!user) { - return { success: false, message: 'Please login' }; - } - - const result = await window.EdgeFunctions.cart.remove(cartItemId); - - if (result.success) { - await updateCartCountUI(); - return { success: true, message: 'Item removed' }; - } - - return { success: false, message: result.error || 'Failed to remove item' }; - } - - /** - * Update item quantity - */ - async function updateQuantity(cartItemId, newQuantity) { - const user = await getCurrentUser(); - if (!user) { - return { success: false, message: 'Please login' }; - } - - if (newQuantity < 1) { - return await removeFromCart(cartItemId); - } - - const result = await window.EdgeFunctions.cart.update(cartItemId, newQuantity); - - if (result.success) { - await updateCartCountUI(); - return { success: true, message: 'Quantity updated' }; - } - - return { success: false, message: result.error || 'Failed to update quantity' }; - } - - /** - * Clear entire cart - */ - async function clearCart() { - const user = await getCurrentUser(); - if (!user) { - return { success: false, message: 'Please login' }; - } - - const result = await window.EdgeFunctions.cart.clear(); - - if (result.success) { - await updateCartCountUI(); - return { success: true, message: 'Cart cleared' }; - } - - return { success: false, message: result.error || 'Failed to clear cart' }; - } - - /** - * Get cart subtotal - */ - async function getCartSubtotal() { - const cartItems = await getCartItems(); - return cartItems.reduce((sum, item) => { - const price = item.products?.price || 0; - return sum + (price * (item.quantity || 0)); - }, 0); - } - - /** - * Initialize cart on page load - */ - async function initCart() { - await updateCartCountUI(); - } - - // Expose Cart module globally - window.Cart = { - getCartCount, - updateCartCountUI, - getCartItems, - addToCart, - removeFromCart, - updateQuantity, - clearCart, - getCartSubtotal, - initCart, - getCurrentUser - }; - - // Auto-initialize on DOMContentLoaded - document.addEventListener('DOMContentLoaded', async () => { - setTimeout(async () => { - await initCart(); - }, 100); - }); - -})(); diff --git a/js/config/edge-functions.js b/js/config/edge-functions.js deleted file mode 100755 index a87254810e49106e5e758b47c8cc707a5cb0113c..0000000000000000000000000000000000000000 --- a/js/config/edge-functions.js +++ /dev/null @@ -1,354 +0,0 @@ -/** - * Cellex Edge Function Client (HTTP-Only Cookie Auth — Production Standard) - * -------------------------------------------------------------------------- - * NO localStorage. NO sessionStorage. NO cookies in JavaScript. NO tokens. - * - * This is the same approach used by AliExpress, Temu, Alibaba, Amazon, - * Gmail, and Netflix — HTTP-only cookies that JavaScript CANNOT read. - * - * How it works: - * - Login: POST /api/auth → server creates session in Supabase → sets - * HTTP-only cookie with session_id → returns { user } (no session_id in JS) - * - All requests: browser AUTOMATICALLY sends the HTTP-only cookie → - * server reads it → forwards as Authorization: Bearer - * - checkSession(): POST /api/auth { op: 'session' } → server reads cookie - * → edge function verifies → returns { user } - * - Logout: POST /api/auth { op: 'logout' } → server clears cookie - * - * Security: - * - HTTP-only cookie: JavaScript CANNOT read it (document.cookie returns nothing) - * - Secure: only sent over HTTPS - * - SameSite=Lax: CSRF protection - * - 7-day expiry: persists across tabs, browser restarts, and 7 days - * - The cookie only contains a random UUID (session_id), NOT a JWT token - * - The actual JWT tokens live in Supabase web_sessions table - * - NO localStorage. NO sessionStorage. NO tokens in JavaScript. - * - * The frontend has ZERO knowledge of the session_id. It just calls API - * endpoints and the browser handles the cookie automatically. - */ - -(function() { - 'use strict'; - - // User cached in memory (NOT in localStorage/sessionStorage) - // This is just a cache so we don't call checkSession() on every render. - // The actual auth state is determined by the HTTP-only cookie. - let currentUser = null; - let sessionVerified = false; - - /** - * Call an API endpoint. The browser automatically sends the HTTP-only - * cookie with every request — we don't need to attach anything. - */ - async function call(path, body = {}) { - const headers = { - 'Content-Type': 'application/json', - }; - - try { - const resp = await fetch(`/api/${path}`, { - method: 'POST', - headers, - body: JSON.stringify(body), - credentials: 'same-origin', // Send cookies for same-origin - }); - - const data = await resp.json(); - - if (!resp.ok) { - console.error(`[EdgeFunctions] /api/${path} failed:`, resp.status, data); - return { success: false, error: data.error || 'Request failed', status: resp.status }; - } - - return data; - } catch (error) { - console.error(`[EdgeFunctions] /api/${path} network error:`, error); - return { success: false, error: error.message || 'Network error' }; - } - } - - // ---- Auth operations ---- - - async function login(email, password) { - const result = await call('auth', { op: 'login', email, password }); - - // Server sets HTTP-only cookie. We just cache the user. - if (result.success && result.user) { - currentUser = result.user; - sessionVerified = true; - } - - return result; - } - - async function signup(email, password) { - const result = await call('auth', { op: 'signup', email, password }); - - if (result.success && result.user) { - currentUser = result.user; - sessionVerified = true; - } - - return result; - } - - async function logout() { - const result = await call('auth', { op: 'logout' }); - // Server clears the HTTP-only cookie. - currentUser = null; - sessionVerified = false; - return result; - } - - /** - * Check if user is logged in by asking the server. - * The server reads the HTTP-only cookie (which JS can't see) and - * verifies the session with the edge function. - * - * Call this on EVERY page load to restore the user session. - * The browser auto-sends the cookie, so this works across tabs and - * browser restarts. - */ - async function checkSession() { - // If we already verified this session and have a user, return cached - if (sessionVerified && currentUser) { - return { success: true, user: currentUser }; - } - - // Ask the server to check the HTTP-only cookie - const result = await call('auth', { op: 'session' }); - sessionVerified = true; - - if (result.success && result.user) { - currentUser = result.user; - return { success: true, user: currentUser }; - } - - currentUser = null; - return { success: true, user: null }; - } - - function getCurrentUser() { - return currentUser; - } - - async function getCurrentUserAsync() { - if (currentUser) return currentUser; - await checkSession(); - return currentUser; - } - - function isLoggedIn() { - return !!currentUser; - } - - // Expose the EdgeFunctions module globally - window.EdgeFunctions = { - auth: { - login, - signup, - logout, - checkSession, - getCurrentUser, - getCurrentUserAsync, - isLoggedIn, - }, - - aiChat: (message, context = {}) => call('ai-chat', { message, context }), - - cart: { - get: () => call('cart', { op: 'get' }), - count: () => call('cart', { op: 'count' }), - add: (productId, quantity = 1) => call('cart', { op: 'add', productId, quantity }), - remove: (cartItemId) => call('cart', { op: 'remove', cartItemId }), - update: (cartItemId, quantity) => call('cart', { op: 'update', cartItemId, quantity }), - clear: () => call('cart', { op: 'clear' }), - }, - - products: { - home: () => call('products', { op: 'home' }), - search: (query, maxPrice = null) => call('products', { op: 'search', query, maxPrice }), - category: (category, sort = 'newest', page = 1) => call('products', { op: 'category', category, sort, page }), - byId: (id) => call('products', { op: 'by_id', id }), - all: (limit = 100) => call('products', { op: 'all', limit }), - }, - - orders: { - list: () => call('orders', { op: 'list' }), - details: (orderId) => call('orders', { op: 'details', orderId }), - }, - - profile: { - get: () => call('profile', { op: 'get' }), - update: (data) => call('profile', { op: 'update', ...data }), - }, - - wishlist: { - get: () => call('wishlist', { op: 'get' }), - add: (productId) => call('wishlist', { op: 'add', productId }), - remove: (wishlistItemId) => call('wishlist', { op: 'remove', wishlistItemId }), - }, - - checkout: { - prepare: () => call('checkout', { op: 'prepare' }), - placeOrder: (shippingAddress) => call('checkout', { op: 'place_order', shippingAddress }), - }, - - // ---- Seller dashboard (Phase 0 — migrated from "Eesha selling folder") ---- - sellerDashboard: { - stats: () => call('seller-dashboard', { op: 'stats' }), - recent: () => call('seller-dashboard', { op: 'recent' }), - notifications: () => call('seller-dashboard', { op: 'notifications' }), - }, - - sellerProducts: { - list: () => call('seller-products', { op: 'list' }), - create: (data) => call('seller-products', { op: 'create', ...data }), - update: (id, data) => call('seller-products', { op: 'update', id, ...data }), - delete: (id) => call('seller-products', { op: 'delete', id }), - }, - - sellerOrders: { - list: () => call('seller-orders', { op: 'list' }), - details: (orderId) => call('seller-orders', { op: 'details', orderId }), - }, - - sellerProfile: { - get: () => call('seller-profile', { op: 'get' }), - update: (data) => call('seller-profile', { op: 'update', ...data }), - }, - - // ---- Social (Phase 1) ---- - social: { - // Public — no auth required - publicProfile: (sellerId, viewerId = null) => call('social', { op: 'public_profile', sellerId, viewerId }), - sellerFeed: (sellerId, limit = 20) => call('social', { op: 'seller_feed', sellerId, limit }), - discover: (limit = 12) => call('social', { op: 'discover', limit }), - - // Auth required - follow: (sellerId) => call('social', { op: 'follow', sellerId }), - unfollow: (sellerId) => call('social', { op: 'unfollow', sellerId }), - following: () => call('social', { op: 'following' }), - feed: (limit = 20, offset = 0) => call('social', { op: 'feed', limit, offset }), - }, - - // ---- Phase 2: Reviews & Ratings ---- - reviews: { - byProduct: (productId) => call('reviews', { op: 'by_product', productId }), - bySeller: (sellerId) => call('reviews', { op: 'by_seller', sellerId }), - create: (data) => call('reviews', { op: 'create', ...data }), - helpful: (reviewId) => call('reviews', { op: 'helpful', reviewId }), - delete: (reviewId) => call('reviews', { op: 'delete', reviewId }), - }, - - // ---- Phase 2: Group Buying (Pinduoduo) ---- - groupBuy: { - create: (productId, targetCount = 3, discountPct = 20) => - call('group-buy', { op: 'create', productId, targetCount, discountPct }), - join: (groupBuyId) => call('group-buy', { op: 'join', groupBuyId }), - status: (groupBuyId) => call('group-buy', { op: 'status', groupBuyId }), - active: (productId) => call('group-buy', { op: 'active', productId }), - mine: () => call('group-buy', { op: 'mine' }), - cancel: (groupBuyId) => call('group-buy', { op: 'cancel', groupBuyId }), - }, - - // ---- Phase 2: Wishlist Sharing ---- - wishlistShare: { - share: (title = null) => call('wishlist-share', { op: 'share', title }), - getShared: (token) => call('wishlist-share', { op: 'get_shared', token }), - myShares: () => call('wishlist-share', { op: 'my_shares' }), - revoke: (token) => call('wishlist-share', { op: 'revoke', token }), - }, - - // ---- Phase 2: Live Shopping (Whatnot) ---- - live: { - // Public - list: (status = 'live') => call('live', { op: 'list', status }), - get: (sessionId) => call('live', { op: 'get', sessionId }), - messages: (sessionId, afterId = 0) => call('live', { op: 'messages', sessionId, afterId }), - - // Auth - start: (data) => call('live', { op: 'start', ...data }), - end: (sessionId) => call('live', { op: 'end', sessionId }), - join: (sessionId, name = null) => call('live', { op: 'join', sessionId, name }), - leave: (sessionId) => call('live', { op: 'leave', sessionId }), - message: (sessionId, message) => call('live', { op: 'message', sessionId, message }), - myNext: () => call('live', { op: 'mynext' }), - }, - - // ---- Phase 3: Short Product Videos (TikTok Shop) ---- - videos: { - // Public - feed: (limit = 20) => call('videos', { op: 'feed', limit }), - byProduct: (productId) => call('videos', { op: 'by_product', productId }), - bySeller: (sellerId) => call('videos', { op: 'by_seller', sellerId }), - get: (videoId) => call('videos', { op: 'get', videoId }), - - // Auth (seller) - uploadUrl: (productId, filename, mime = 'video/mp4') => call('videos', { op: 'upload_url', productId, filename, mime }), - create: (data) => call('videos', { op: 'create', ...data }), - delete: (videoId) => call('videos', { op: 'delete', videoId }), - mine: () => call('videos', { op: 'mine' }), - - // Auth (buyer) - like: (videoId) => call('videos', { op: 'like', videoId }), - unlike: (videoId) => call('videos', { op: 'unlike', videoId }), - }, - - // ---- Phase 3: Trending Feed ---- - trending: { - list: (limit = 20, hours = 24) => call('trending', { op: 'list', limit, hours }), - logView: (productId, source = 'product_page') => call('trending', { op: 'log_view', productId, source }), - logShare: (productId, platform = 'whatsapp') => call('trending', { op: 'log_share', productId, platform }), - }, - - // ---- Phase 3: Seller Stories (Instagram-style) ---- - stories: { - // Public - activeBar: () => call('stories', { op: 'active_bar' }), - bySeller: (sellerId) => call('stories', { op: 'by_seller', sellerId }), - get: (storyId) => call('stories', { op: 'get', storyId }), - - // Auth - markSeen: (storyIds) => call('stories', { op: 'mark_seen', storyIds }), - create: (data) => call('stories', { op: 'create', ...data }), - mine: () => call('stories', { op: 'mine' }), - delete: (storyId) => call('stories', { op: 'delete', storyId }), - }, - - // ---- Phase 3: AI-Powered Discovery ---- - discover: { - recommend: (limit = 10) => call('discover', { op: 'recommend', limit }), - logView: (productId) => call('discover', { op: 'log_view', productId }), - }, - - // ---- Phase 4: Cross-platform integration ---- - crossPlatform: { - // Web-side (cookie auth) - generateLinkCode: (phone) => call('cross-platform', { op: 'generate_link_code', phone }), - myPhoneLinks: () => call('cross-platform', { op: 'my_phone_links' }), - unlinkPhone: (phone) => call('cross-platform', { op: 'unlink_phone', phone }), - }, - - // ---- Payment Gateway (PalmPay verification) ---- - payment: { - createOrder: (data) => call('payment', { op: 'create_order', ...data }), - confirmSent: (orderId) => call('payment', { op: 'confirm_sent', orderId }), - checkStatus: (orderId) => call('payment', { op: 'check_status', orderId }), - }, - - telegram: { - channelInfo: () => call('telegram', { op: 'channel_info' }), - recent: () => call('telegram', { op: 'recent' }), - subscribe: (chatId, username = null, userId = null) => - call('telegram', { op: 'subscribe', chatId, username, userId }), - unsubscribe: (chatId) => call('telegram', { op: 'unsubscribe', chatId }), - setWebhook: (url) => call('telegram', { op: 'set_webhook', url }), - }, - - call, - }; - - console.log('[EdgeFunctions] HTTP-only cookie auth initialized (no localStorage, no sessionStorage, no tokens in JS)'); -})(); diff --git a/js/load-navbar.js b/js/load-navbar.js deleted file mode 100755 index 2d6207ab7d8bb36afe9c4a6784a71283dd6e1ddb..0000000000000000000000000000000000000000 --- a/js/load-navbar.js +++ /dev/null @@ -1,23 +0,0 @@ -// Cellex Navbar Loader — properly executes scripts inside injected HTML -// Usage: -// -(function() { - fetch('shared/navbar.html') - .then(r => r.text()) - .then(html => { - const mount = document.getElementById('nav-mount'); - if (!mount) return; - mount.innerHTML = html; - // Extract and execute all - - - - - - - - -
-

- Link WhatsApp -

-

Connect your WhatsApp to your Cellex account so you can manage your cart, join group buys, and checkout — all from WhatsApp.

- - -
-
-
- - -

Include country code (e.g. +234 for Nigeria).

-
- -
-
- - - - - -
-

Linked phones

- -
-
- - - - diff --git a/live-watch.html b/live-watch.html deleted file mode 100755 index 44c3b502e36516a42c1d9fee723b7814a29d5903..0000000000000000000000000000000000000000 --- a/live-watch.html +++ /dev/null @@ -1,274 +0,0 @@ - - - - - - Live · Cellex - - - - - - - - - - - - -
- -
-
-
- -
Loading live session…
-
-
- -
-
- LIVE - 👁 0 viewers -
-

Loading…

-
-

-
- - - -
- - -
-
- Live chat - 0 -
-
-
Connecting to chat…
-
-
- - -
-
-
- - - - diff --git a/live.html b/live.html deleted file mode 100755 index 54caeef92fc59ff9110b596e677d07f9ab252691..0000000000000000000000000000000000000000 --- a/live.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - Live Shopping · Cellex - - - - - - - - - - - -
-
-
- Live Shopping -
-

Shop in real-time with sellers

-

Watch live demos, ask questions in chat, and buy the featured product with one click.

- - Go live as a seller - -
-
- -
-

- Live now -

-
-
- -
Loading live sessions…
-
-
- -

Recent sessions

-
-
- - - - diff --git a/login.html b/login.html deleted file mode 100755 index 1e0ecb7b0dea4389ffb2f37ea194268c05315c96..0000000000000000000000000000000000000000 --- a/login.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - Login · Cellex - - - - - - -
- -
- -

Cellex

-
-

Nigeria's #1 Marketplace

-
- - - -
- - - - - diff --git a/next.config.ts b/next.config.ts new file mode 100644 index 0000000000000000000000000000000000000000..a078179dc1505da1ca217944be9778e4193233fc --- /dev/null +++ b/next.config.ts @@ -0,0 +1,25 @@ +import type { NextConfig } from "next"; + +const nextConfig: NextConfig = { + output: "standalone", + typescript: { + ignoreBuildErrors: true, + }, + eslint: { + ignoreDuringBuilds: true, + }, + reactStrictMode: false, + // HF Spaces reverse proxy terminates TLS — trust the upstream so cookies and absolute URLs work + experimental: { + // Allow running behind Hugging Face Spaces reverse proxy + serverActions: { + allowedOrigins: ['*.hf.space', '*.space-z.ai'], + }, + }, + // Compress responses (HF Space reverse proxy may or may not gzip) + compress: true, + // HF Space sets PORT env; respect it + poweredByHeader: false, +}; + +export default nextConfig; diff --git a/no_connection.html b/no_connection.html deleted file mode 100755 index 247b65c2fbe2cc651385975a644481a0a8aa3c1e..0000000000000000000000000000000000000000 --- a/no_connection.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - {NO_CONNECTION} - - - -
-
-
{WHOOPS}
-
{MESSAGE}
-
- - \ No newline at end of file diff --git a/order-confirmation.html b/order-confirmation.html deleted file mode 100755 index f02a726fa4aefa4c795d68cd050b7937c8d07c45..0000000000000000000000000000000000000000 --- a/order-confirmation.html +++ /dev/null @@ -1,452 +0,0 @@ - - - - - - Order Confirmation - Cellex | Nigeria's #1 Marketplace - - - - - - - - - - - - - - -
-
-
-

Loading order details...

-
-
- - - - - - - diff --git a/orders.html b/orders.html deleted file mode 100755 index 61947a3367de5ae6a391ec5f8963ff6c5a309f71..0000000000000000000000000000000000000000 --- a/orders.html +++ /dev/null @@ -1,424 +0,0 @@ - - - - - - My Orders - Cellex | Nigeria's #1 Marketplace - - - - - - - - - - - - - - -
- -
- - -
- - - Back to Home - - -
- -
-

My Orders

-
- -
-
- - -
-
-
0
-
Pending
-
-
-
0
-
Processing
-
-
-
0
-
Shipped
-
-
-
0
-
Delivered
-
-
-
0
-
Cancelled
-
-
- - -
- -
- -

Loading your orders...

-
-
-
-
- - - - - - - - - - diff --git a/package.json b/package.json new file mode 100644 index 0000000000000000000000000000000000000000..124cd24a67110d60f531998c49a65ae9d68698ff --- /dev/null +++ b/package.json @@ -0,0 +1,95 @@ +{ + "name": "nextjs_tailwind_shadcn_ts", + "version": "0.2.0", + "private": true, + "scripts": { + "dev": "next dev -p 3000 2>&1 | tee dev.log", + "build": "next build && cp -r .next/static .next/standalone/.next/ && cp -r public .next/standalone/", + "start": "NODE_ENV=production node .next/standalone/server.js", + "start:bun": "NODE_ENV=production bun .next/standalone/server.js", + "lint": "eslint .", + "db:push": "prisma db push", + "db:generate": "prisma generate", + "db:migrate": "prisma migrate dev", + "db:reset": "prisma migrate reset" + }, + "dependencies": { + "@dnd-kit/core": "^6.3.1", + "@dnd-kit/sortable": "^10.0.0", + "@dnd-kit/utilities": "^3.2.2", + "@hookform/resolvers": "^5.1.1", + "@mdxeditor/editor": "^3.39.1", + "@prisma/client": "^6.11.1", + "@radix-ui/react-accordion": "^1.2.11", + "@radix-ui/react-alert-dialog": "^1.1.14", + "@radix-ui/react-aspect-ratio": "^1.1.7", + "@radix-ui/react-avatar": "^1.1.10", + "@radix-ui/react-checkbox": "^1.3.2", + "@radix-ui/react-collapsible": "^1.1.11", + "@radix-ui/react-context-menu": "^2.2.15", + "@radix-ui/react-dialog": "^1.1.14", + "@radix-ui/react-dropdown-menu": "^2.1.15", + "@radix-ui/react-hover-card": "^1.1.14", + "@radix-ui/react-label": "^2.1.7", + "@radix-ui/react-menubar": "^1.1.15", + "@radix-ui/react-navigation-menu": "^1.2.13", + "@radix-ui/react-popover": "^1.1.14", + "@radix-ui/react-progress": "^1.1.7", + "@radix-ui/react-radio-group": "^1.3.7", + "@radix-ui/react-scroll-area": "^1.2.9", + "@radix-ui/react-select": "^2.2.5", + "@radix-ui/react-separator": "^1.1.7", + "@radix-ui/react-slider": "^1.3.5", + "@radix-ui/react-slot": "^1.2.3", + "@radix-ui/react-switch": "^1.2.5", + "@radix-ui/react-tabs": "^1.1.12", + "@radix-ui/react-toast": "^1.2.14", + "@radix-ui/react-toggle": "^1.1.9", + "@radix-ui/react-toggle-group": "^1.1.10", + "@radix-ui/react-tooltip": "^1.2.7", + "@reactuses/core": "^6.0.5", + "@tanstack/react-query": "^5.82.0", + "@tanstack/react-table": "^8.21.3", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "cmdk": "^1.1.1", + "date-fns": "^4.1.0", + "embla-carousel-react": "^8.6.0", + "framer-motion": "^12.23.2", + "input-otp": "^1.4.2", + "lucide-react": "^0.525.0", + "next": "^16.1.1", + "next-auth": "^4.24.11", + "next-intl": "^4.3.4", + "next-themes": "^0.4.6", + "prisma": "^6.11.1", + "react": "^19.0.0", + "react-day-picker": "^9.8.0", + "react-dom": "^19.0.0", + "react-hook-form": "^7.60.0", + "react-markdown": "^10.1.0", + "react-resizable-panels": "^3.0.3", + "react-syntax-highlighter": "^15.6.1", + "recharts": "^2.15.4", + "sharp": "^0.34.3", + "sonner": "^2.0.6", + "tailwind-merge": "^3.3.1", + "tailwindcss-animate": "^1.0.7", + "uuid": "^11.1.0", + "vaul": "^1.1.2", + "z-ai-web-dev-sdk": "^0.0.18", + "zod": "^4.0.2", + "zustand": "^5.0.6" + }, + "devDependencies": { + "@tailwindcss/postcss": "^4", + "@types/react": "^19", + "@types/react-dom": "^19", + "bun-types": "^1.3.4", + "eslint": "^9", + "eslint-config-next": "^16.1.1", + "tailwindcss": "^4", + "tw-animate-css": "^1.3.5", + "typescript": "^5" + } +} diff --git a/payment.html b/payment.html deleted file mode 100755 index 8f3699a762d1755fde2458cd854a9287936e874b..0000000000000000000000000000000000000000 --- a/payment.html +++ /dev/null @@ -1,354 +0,0 @@ - - - - - - Payment · Cellex - - - - - - - - - - -
- -
-
1
-
-
2
-
-
3
-
- - -
-

Complete your payment

-

Enter your details to generate a payment order

- -
-
- - -
-
- - -
-
- - -
-
- - -

Enter the name of the bank you're transferring from (as it appears on your receipt)

-
-
- - -
-
Order Summary
-
—
-
- Total - ₦— -
-
- - -
- - - - - - - - - -
- - - - diff --git a/postcss.config.mjs b/postcss.config.mjs new file mode 100644 index 0000000000000000000000000000000000000000..c7bcb4b1ee14cd5e25078c2c934529afdd2a7df9 --- /dev/null +++ b/postcss.config.mjs @@ -0,0 +1,5 @@ +const config = { + plugins: ["@tailwindcss/postcss"], +}; + +export default config; diff --git a/prisma/schema.prisma b/prisma/schema.prisma new file mode 100644 index 0000000000000000000000000000000000000000..f72ac32db1c1c2b30208ae2399197f9743654576 --- /dev/null +++ b/prisma/schema.prisma @@ -0,0 +1,32 @@ +// This is your Prisma schema file, +// learn more about it in the docs: https://pris.ly/d/prisma-schema + +// Looking for ways to speed up your queries, or scale easily with your serverless or edge functions? +// Try Prisma Accelerate: https://pris.ly/cli/accelerate-init + +generator client { + provider = "prisma-client-js" +} + +datasource db { + provider = "sqlite" + url = env("DATABASE_URL") +} + +model User { + id String @id @default(cuid()) + email String @unique + name String? + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt +} + +model Post { + id String @id @default(cuid()) + title String + content String? + published Boolean @default(false) + authorId String + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt +} \ No newline at end of file diff --git a/product.html b/product.html deleted file mode 100755 index ceec23d79f4b174d4bb995f05accee22c7435e09..0000000000000000000000000000000000000000 --- a/product.html +++ /dev/null @@ -1,360 +0,0 @@ - - - - - - Product Details - Cellex | Nigeria's #1 Marketplace - - - - - - - - - - - - - - - - - -
- -
- - -
-
- -
-
-
-
-
-
-
-
-
-
- - - - - -
- -
-
-
-
- - - - -
-
- -
- - - - - - - - -
- Quantity: -
- - 1 - -
-
- - -
- - -
- - -
- - - - -
- - - - - -
-
- -
-

Free Shipping

-

Estimated delivery: 3-5 business days

-
-
-
- -
-

Secure Payment

-

Safe & secure checkout

-
-
-
-
-
- - -
-
-

Ratings & Reviews

- -
- - - -
-
Loading reviews…
-
-
-
- - - - - -
- - -
- - - - - diff --git a/profile.html b/profile.html deleted file mode 100755 index 326fa184e2df18069fd98d125154bccda5fcf199..0000000000000000000000000000000000000000 --- a/profile.html +++ /dev/null @@ -1,374 +0,0 @@ - - - - - - My Profile - Cellex | Nigeria's #1 Marketplace - - - - - - - - - - - - - - -
- -
- - -
- - - Back to Home - - - - - - - -
- - - - - - - diff --git a/public/public/logo.svg b/public/public/logo.svg new file mode 100644 index 0000000000000000000000000000000000000000..d93ac8f66e41897acac0185396d5b91c32856c9a --- /dev/null +++ b/public/public/logo.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + diff --git a/public/public/robots.txt b/public/public/robots.txt new file mode 100644 index 0000000000000000000000000000000000000000..6018e701fc7dd0317cda9eceea390524322e8a05 --- /dev/null +++ b/public/public/robots.txt @@ -0,0 +1,14 @@ +User-agent: Googlebot +Allow: / + +User-agent: Bingbot +Allow: / + +User-agent: Twitterbot +Allow: / + +User-agent: facebookexternalhit +Allow: / + +User-agent: * +Allow: / diff --git a/qr.html b/qr.html deleted file mode 100755 index 5c68c07f9e271ef8eb66d65c164018328b3ebc11..0000000000000000000000000000000000000000 --- a/qr.html +++ /dev/null @@ -1,98 +0,0 @@ - - - -Cellex WhatsApp QR Code - - - - -
-

📱 WhatsApp QR Code

-

Scan to connect your WhatsApp number to Cellex

-
⏳ Generating QR code...
-
-WhatsApp QR Code -
- How to connect:
- 1. Open WhatsApp on your phone
- 2. Tap Settings → Linked Devices
- 3. Tap "Link a Device"
- 4. Scan the QR code above -
-

⏰ QR expires in 60 seconds. Click refresh if it expires.

- -
- - - diff --git a/search-result.html b/search-result.html deleted file mode 100755 index db9d51a661407c5d6439ddfd376ecb2e80b349a3..0000000000000000000000000000000000000000 --- a/search-result.html +++ /dev/null @@ -1,1066 +0,0 @@ - - - - - - Search Results — Cellex - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - - -
- - - - - - - - - - - - - 0 - -
-
- - - -
-
- - -
- -
-
-
-
-

Search Results

-

Showing results for your search

-
- - -
- - - - - - -
-
- - -
- 0 products found -
-
-
- - -
-
- -
-
-

Searching products...

-
- - - - - -
- -
- - - -
-
- - - -
- - - - - - - - - - diff --git a/seller-profile.html b/seller-profile.html deleted file mode 100755 index f412dc349067d4a0ebd0e8ce08080693b86ce453..0000000000000000000000000000000000000000 --- a/seller-profile.html +++ /dev/null @@ -1,311 +0,0 @@ - - - - - - Seller · Cellex - - - - - - - - - - - - -
- -
-
- -
?
- - -
-
Loading…
-
- - -
-
-
0
-
Followers
-
-
-
0
-
Products
-
-
-
—
-
Rating
-
-
-
- - -
- - -
-
- - -

-
- - -
-
All
-
Videos
-
Products
-
- - -
-
-
Loading…
-
-
- - - - - - -
- - - - diff --git a/seller/academy.html b/seller/academy.html deleted file mode 100755 index 1ebbe7673696afaeafb83e9c08872959b65c8c7f..0000000000000000000000000000000000000000 --- a/seller/academy.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - Academy · Cellex Seller - - - - - - - - - -
-

Academy

Learn to grow your store
-
-
- -

Coming soon

-

- The Cellex Seller Academy will offer bite-sized courses on product photography, - pricing, customer service, and growing your social following. - Stay tuned — we're building it now. -

-
-
-
- - - diff --git a/seller/css/dashboard.css b/seller/css/dashboard.css deleted file mode 100755 index de931ba485786f0eff6bcc237623d430f4438bbe..0000000000000000000000000000000000000000 --- a/seller/css/dashboard.css +++ /dev/null @@ -1,298 +0,0 @@ -/* Cellex Seller Dashboard Styles — Phase 4 - ------------------------------------------ - Cyan + white futuristic theme. Sidebar layout, responsive. */ - -:root { - --seller-primary: #00d4ff; - --seller-primary-dark: #0891b2; - --seller-bg: #f8fafc; - --seller-card-bg: #ffffff; - --seller-text: #0f172a; - --seller-text-muted: #64748b; - --seller-border: #e2e8f0; - --seller-success: #0891b2; - --seller-danger: #ef4444; - --seller-sidebar-w: 260px; -} - -* { box-sizing: border-box; } - -body.seller-page { - margin: 0; - padding: 0; - background: var(--seller-bg); - color: var(--seller-text); - font-family: 'Segoe UI', system-ui, -apple-system, sans-serif; - min-height: 100vh; -} - -/* =================== SIDEBAR =================== */ -.seller-sidebar { - position: fixed; - top: 0; left: 0; bottom: 0; - width: var(--seller-sidebar-w); - background: linear-gradient(180deg, #0f172a 0%, #1e293b 100%); - color: #e2e8f0; - padding: 1.5rem 1rem; - overflow-y: auto; - z-index: 100; - transition: transform 0.25s ease; -} - -.seller-brand { - display: flex; align-items: center; gap: 0.6rem; - padding: 0.5rem 0.5rem 1.5rem 0.5rem; - border-bottom: 1px solid rgba(255,255,255,0.08); - margin-bottom: 1rem; -} -.seller-brand-logo { - width: 36px; height: 36px; border-radius: 8px; - background: linear-gradient(135deg, #00d4ff, #0891b2); - display: flex; align-items: center; justify-content: center; - font-weight: 800; color: #0f172a; font-size: 1.2rem; -} -.seller-brand-name { font-weight: 700; font-size: 1.15rem; color: #00d4ff; } -.seller-brand-tag { font-size: 0.7rem; color: #94a3b8; text-transform: uppercase; letter-spacing: 0.1em; } - -.seller-nav { display: flex; flex-direction: column; gap: 0.25rem; } -.seller-nav-item { - display: flex; align-items: center; gap: 0.75rem; - padding: 0.75rem 1rem; - color: #cbd5e1; - text-decoration: none; - border-radius: 8px; - font-size: 0.95rem; - transition: background 0.15s, color 0.15s; -} -.seller-nav-item i { width: 18px; text-align: center; } -.seller-nav-item:hover { background: rgba(255,255,255,0.06); color: #fff; } -.seller-nav-item.active { - background: linear-gradient(135deg, #00d4ff, #0891b2); - color: #0f172a; font-weight: 600; -} - -.seller-sidebar-footer { - position: absolute; bottom: 1rem; left: 1rem; right: 1rem; - padding-top: 1rem; border-top: 1px solid rgba(255,255,255,0.08); - font-size: 0.8rem; color: #94a3b8; -} - -/* =================== MAIN =================== */ -.seller-main { - margin-left: var(--seller-sidebar-w); - padding: 1.5rem 2rem; - min-height: 100vh; -} - -.seller-topbar { - display: flex; justify-content: space-between; align-items: center; - margin-bottom: 1.5rem; -} -.seller-topbar h1 { font-size: 1.5rem; margin: 0; color: var(--seller-text); } -.seller-topbar .subtitle { font-size: 0.85rem; color: var(--seller-text-muted); margin-top: 0.15rem; } - -.seller-user-pill { - display: flex; align-items: center; gap: 0.6rem; - background: var(--seller-card-bg); - padding: 0.4rem 0.8rem 0.4rem 0.4rem; - border-radius: 999px; - border: 1px solid var(--seller-border); - font-size: 0.9rem; -} -.seller-user-pill .avatar { - width: 32px; height: 32px; border-radius: 50%; - background: linear-gradient(135deg, #00d4ff, #0891b2); - color: #0f172a; font-weight: 700; - display: flex; align-items: center; justify-content: center; -} - -/* =================== STAT CARDS =================== */ -.stat-grid { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); - gap: 1rem; - margin-bottom: 2rem; -} -.stat-card { - background: var(--seller-card-bg); - border-radius: 12px; - padding: 1.25rem; - border: 1px solid var(--seller-border); - box-shadow: 0 1px 3px rgba(0,0,0,0.04); - transition: transform 0.15s, box-shadow 0.15s; -} -.stat-card:hover { transform: translateY(-2px); box-shadow: 0 4px 12px rgba(0,0,0,0.08); } -.stat-card .stat-icon { - width: 40px; height: 40px; border-radius: 10px; - display: flex; align-items: center; justify-content: center; - font-size: 1.1rem; - background: #cffafe; color: #0891b2; - margin-bottom: 0.75rem; -} -.stat-card .stat-icon.green { background: #d1fae5; color: #059669; } -.stat-card .stat-icon.blue { background: #dbeafe; color: #2563eb; } -.stat-card .stat-icon.purple { background: #ede9fe; color: #7c3aed; } -.stat-card .stat-icon.pink { background: #fce7f3; color: #db2777; } -.stat-card .stat-label { font-size: 0.8rem; color: var(--seller-text-muted); text-transform: uppercase; letter-spacing: 0.05em; } -.stat-card .stat-value { font-size: 1.8rem; font-weight: 700; color: var(--seller-text); margin: 0.25rem 0; } -.stat-card .stat-sub { font-size: 0.78rem; color: var(--seller-text-muted); } - -/* =================== PANELS =================== */ -.seller-panel { - background: var(--seller-card-bg); - border-radius: 12px; - border: 1px solid var(--seller-border); - padding: 1.5rem; - margin-bottom: 1.5rem; - box-shadow: 0 1px 3px rgba(0,0,0,0.04); -} -.seller-panel-header { - display: flex; justify-content: space-between; align-items: center; - margin-bottom: 1rem; -} -.seller-panel-header h2 { font-size: 1.1rem; margin: 0; color: var(--seller-text); } -.seller-panel-header .link { font-size: 0.85rem; color: var(--seller-primary-dark); text-decoration: none; } -.seller-panel-header .link:hover { text-decoration: underline; } - -/* =================== TABLES =================== */ -.seller-table { - width: 100%; border-collapse: collapse; font-size: 0.9rem; -} -.seller-table th { - text-align: left; padding: 0.65rem 0.5rem; - border-bottom: 1px solid var(--seller-border); - font-weight: 600; color: var(--seller-text-muted); - font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.05em; -} -.seller-table td { padding: 0.75rem 0.5rem; border-bottom: 1px solid var(--seller-border); } -.seller-table tr:last-child td { border-bottom: none; } -.seller-table tr:hover td { background: #fafafa; } - -/* =================== BUTTONS =================== */ -.btn-seller { - display: inline-flex; align-items: center; gap: 0.4rem; - padding: 0.55rem 1rem; - background: linear-gradient(135deg, #00d4ff, #0891b2); - color: #0f172a; font-weight: 600; - border: none; border-radius: 8px; - cursor: pointer; text-decoration: none; font-size: 0.9rem; - transition: transform 0.1s, box-shadow 0.15s; -} -.btn-seller:hover { transform: translateY(-1px); box-shadow: 0 4px 10px rgba(245,158,11,0.35); } -.btn-seller.secondary { background: #fff; color: var(--seller-text); border: 1px solid var(--seller-border); } -.btn-seller.secondary:hover { background: #f8fafc; } -.btn-seller.danger { background: #ef4444; color: #fff; } -.btn-seller.danger:hover { background: #dc2626; } -.btn-seller.small { padding: 0.35rem 0.75rem; font-size: 0.8rem; } - -/* =================== FORM =================== */ -.seller-form .form-group { margin-bottom: 1rem; } -.seller-form label { display: block; font-size: 0.85rem; color: var(--seller-text); margin-bottom: 0.3rem; font-weight: 500; } -.seller-form input, .seller-form textarea, .seller-form select { - width: 100%; padding: 0.6rem 0.8rem; - border: 1px solid var(--seller-border); border-radius: 8px; - font-size: 0.95rem; font-family: inherit; - background: #fff; -} -.seller-form input:focus, .seller-form textarea:focus, .seller-form select:focus { - outline: none; border-color: var(--seller-primary); box-shadow: 0 0 0 3px rgba(245,158,11,0.15); -} - -/* =================== PRODUCT GRID =================== */ -.product-row { - display: flex; align-items: center; gap: 0.75rem; -} -.product-thumb { - width: 44px; height: 44px; border-radius: 8px; - background: #f1f5f9; object-fit: cover; flex-shrink: 0; -} -.product-thumb.placeholder { - display: flex; align-items: center; justify-content: center; - color: #94a3b8; font-size: 1.1rem; -} -.product-row .name { font-weight: 500; color: var(--seller-text); } -.product-row .meta { font-size: 0.78rem; color: var(--seller-text-muted); } - -/* =================== BADGES =================== */ -.badge { - display: inline-block; padding: 0.2rem 0.6rem; - border-radius: 999px; font-size: 0.75rem; font-weight: 600; -} -.badge.green { background: #d1fae5; color: #065f46; } -.badge.amber { background: #cffafe; color: #0e7490; } -.badge.red { background: #fee2e2; color: #991b1b; } -.badge.gray { background: #f1f5f9; color: #475569; } -.badge.blue { background: #dbeafe; color: #1e40af; } - -/* =================== LOADING / EMPTY =================== */ -.seller-loading { - display: flex; align-items: center; justify-content: center; - padding: 3rem 1rem; color: var(--seller-text-muted); -} -.seller-loading .spinner { - width: 24px; height: 24px; border-radius: 50%; - border: 3px solid #e2e8f0; border-top-color: var(--seller-primary); - animation: spin 0.8s linear infinite; margin-right: 0.6rem; -} -@keyframes spin { to { transform: rotate(360deg); } } - -.seller-empty { - text-align: center; padding: 2rem 1rem; color: var(--seller-text-muted); -} -.seller-empty i { font-size: 2rem; margin-bottom: 0.5rem; display: block; color: #cbd5e1; } - -/* =================== TOAST =================== */ -.toast { - position: fixed; bottom: 1.5rem; right: 1.5rem; - background: var(--seller-text); color: #fff; - padding: 0.8rem 1.2rem; border-radius: 8px; - font-size: 0.9rem; opacity: 0; transform: translateY(10px); - transition: opacity 0.2s, transform 0.2s; - z-index: 1000; max-width: 360px; - box-shadow: 0 8px 24px rgba(0,0,0,0.18); -} -.toast.show { opacity: 1; transform: translateY(0); } -.toast.success { background: #059669; } -.toast.error { background: #dc2626; } - -/* =================== MODAL =================== */ -.modal-overlay { - position: fixed; inset: 0; - background: rgba(15,23,42,0.5); - display: flex; align-items: center; justify-content: center; - z-index: 200; padding: 1rem; -} -.modal-card { - background: #fff; border-radius: 12px; - padding: 1.5rem; max-width: 500px; width: 100%; - max-height: 90vh; overflow-y: auto; - box-shadow: 0 24px 60px rgba(0,0,0,0.25); -} -.modal-card h3 { margin: 0 0 1rem; font-size: 1.15rem; } -.modal-card .modal-actions { - display: flex; justify-content: flex-end; gap: 0.5rem; margin-top: 1.5rem; -} - -/* =================== MOBILE =================== */ -.seller-mobile-toggle { - display: none; - position: fixed; top: 1rem; left: 1rem; z-index: 110; - background: #0f172a; color: #00d4ff; - border: none; border-radius: 8px; - width: 40px; height: 40px; - font-size: 1.2rem; cursor: pointer; -} - -@media (max-width: 900px) { - .seller-sidebar { transform: translateX(-100%); } - .seller-sidebar.open { transform: translateX(0); } - .seller-main { margin-left: 0; padding: 1rem; padding-top: 4rem; } - .seller-mobile-toggle { display: block; } - .stat-grid { grid-template-columns: repeat(2, 1fr); } - .seller-table { font-size: 0.82rem; } - .seller-table th, .seller-table td { padding: 0.5rem 0.35rem; } -} - -@media (max-width: 480px) { - .stat-grid { grid-template-columns: 1fr; } -} diff --git a/seller/go-live.html b/seller/go-live.html deleted file mode 100755 index ac9711a21a6fb35f5f69417ecfee94dc57e08bd6..0000000000000000000000000000000000000000 --- a/seller/go-live.html +++ /dev/null @@ -1,207 +0,0 @@ - - - - - - Go Live · Cellex Seller - - - - - - - - - -
-
-
-

Go Live

-
Start a live shopping session
-
- - Watch others - -
- -
-

Start a new session

-
-
- - -
-
- - -
-
- - -
-
- - -
- - -
-
- - -
- - - - diff --git a/seller/index.html b/seller/index.html deleted file mode 100755 index ef900a26769ef5b3c788f5ae099184ce5d554a9e..0000000000000000000000000000000000000000 --- a/seller/index.html +++ /dev/null @@ -1,240 +0,0 @@ - - - - - - Seller Dashboard · Cellex - - - - - - - - - - -
-
-
-

Dashboard

-
Welcome back
-
-
-
?
- Loading… -
-
- - -
-
-
-
Products
-
–
-
Total in catalog
-
-
-
-
Active Orders
-
–
-
0 pending
-
-
-
-
Revenue (30d)
-
–
-
0 sales this month
-
-
-
-
Followers
-
–
-
0 posts
-
-
- - -
-
-
-

Recent products

- View all → -
-
-
Loading products…
-
-
-
-
-

Recent orders

- View all → -
-
-
Loading orders…
-
-
-
- - -
-
-

Your activity feed

- Public profile → -
-
-
Loading activity…
-
-
- - -
-
-

Cross-platform reach

- Telegram → -
-
-
-
-
Telegram subs
-
—
-
Across all users
-
-
-
-
WhatsApp links
- -
Total confirmed
-
-
-
-
Broadcasts sent
-
—
-
All-time
-
-
-
- - Link WhatsApp - - - Telegram channel - - - WhatsApp commands - -
-
-
- - - - diff --git a/seller/js/shared.js b/seller/js/shared.js deleted file mode 100755 index 8f77f57afb5ae9e27287ebc2d226f11bd678cc0f..0000000000000000000000000000000000000000 --- a/seller/js/shared.js +++ /dev/null @@ -1,143 +0,0 @@ -/* Cellex Seller Shared Helpers — Phase 1 - ---------------------------------------- - - Auth gate: redirect to /login.html if not logged in - - Sidebar render (single source of truth) - - Toast + small DOM utilities - - ZERO direct Supabase calls — everything goes through EdgeFunctions */ - -(function () { - 'use strict'; - - // -------- Auth gate -------- - async function requireSeller() { - // Make sure EdgeFunctions has checked the session - const { success, user } = await window.EdgeFunctions.auth.checkSession(); - if (!success || !user) { - window.location.href = '../login.html?next=' + encodeURIComponent(window.location.pathname); - return null; - } - return user; - } - - // -------- Sidebar -------- - function renderSidebar(activeKey) { - const items = [ - { key: 'dashboard', href: 'index.html', icon: 'fa-gauge-high', label: 'Dashboard' }, - { key: 'products', href: 'products.html', icon: 'fa-box', label: 'Products' }, - { key: 'videos', href: 'videos.html', icon: 'fa-film', label: 'Product Videos' }, - { key: 'stories', href: 'stories.html', icon: 'fa-clock', label: 'Stories' }, - { key: 'orders', href: 'orders.html', icon: 'fa-receipt', label: 'Orders' }, - { key: 'live', href: 'go-live.html', icon: 'fa-broadcast-tower',label: 'Go Live' }, - { key: 'profile', href: 'profile.html', icon: 'fa-store', label: 'Seller Profile' }, - { key: 'academy', href: 'academy.html', icon: 'fa-graduation-cap', label: 'Academy' }, - { key: 'settings', href: 'settings.html', icon: 'fa-gear', label: 'Settings' }, - ]; - const nav = items.map(it => ` - - ${it.label} - `).join(''); - return ` -
- -
-
Cellex
-
Seller Center
-
-
- - - `; - } - - function mountSidebar(activeKey) { - const el = document.querySelector('.seller-sidebar'); - if (el) el.innerHTML = renderSidebar(activeKey); - - const toggle = document.querySelector('.seller-mobile-toggle'); - if (toggle) { - toggle.addEventListener('click', () => { - document.querySelector('.seller-sidebar').classList.toggle('open'); - }); - } - // Close sidebar when clicking a nav link on mobile - document.querySelectorAll('.seller-nav-item').forEach(a => { - a.addEventListener('click', () => { - if (window.innerWidth <= 900) { - document.querySelector('.seller-sidebar').classList.remove('open'); - } - }); - }); - - // Logout link - const logoutLink = document.getElementById('seller-logout-link'); - if (logoutLink) { - logoutLink.addEventListener('click', async (e) => { - e.preventDefault(); - await window.EdgeFunctions.auth.logout(); - window.location.href = '../index.html'; - }); - } - } - - // -------- Toast -------- - function toast(msg, kind = 'success') { - let el = document.querySelector('.toast'); - if (!el) { - el = document.createElement('div'); - el.className = 'toast'; - document.body.appendChild(el); - } - el.className = 'toast ' + kind; - el.textContent = msg; - requestAnimationFrame(() => el.classList.add('show')); - clearTimeout(el._t); - el._t = setTimeout(() => el.classList.remove('show'), 2800); - } - - // -------- Format helpers -------- - function money(n) { - const v = Number(n) || 0; - return '$' + v.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 }); - } - function timeAgo(iso) { - if (!iso) return ''; - const d = new Date(iso); - const diff = (Date.now() - d.getTime()) / 1000; - if (diff < 60) return 'just now'; - if (diff < 3600) return Math.floor(diff / 60) + 'm ago'; - if (diff < 86400) return Math.floor(diff / 3600) + 'h ago'; - if (diff < 604800) return Math.floor(diff / 86400) + 'd ago'; - return d.toLocaleDateString(); - } - function escapeHtml(s) { - return String(s ?? '').replace(/[&<>"']/g, c => ({ - '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' - }[c])); - } - - // -------- Avatar initials -------- - function initials(name) { - const s = (name || '').trim(); - if (!s) return '?'; - return s.split(/\s+/).map(w => w[0]).join('').slice(0, 2).toUpperCase(); - } - - window.SellerUI = { - requireSeller, - mountSidebar, - toast, - money, - timeAgo, - escapeHtml, - initials, - }; - - console.log('[SellerUI] ready'); -})(); diff --git a/seller/login.html b/seller/login.html deleted file mode 100755 index 3ad6ab7c97d204f33d15b3a18f0b6f0c012e2ac7..0000000000000000000000000000000000000000 --- a/seller/login.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - Seller Login · Cellex - - - - - - -
- -
- -

Cellex

-
-

Seller Center

-
- - - -
- - - - - diff --git a/seller/orders.html b/seller/orders.html deleted file mode 100755 index 0ce67804efd154bf05560c462616f8c4742ba2b8..0000000000000000000000000000000000000000 --- a/seller/orders.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - Orders · Cellex Seller - - - - - - - - - -
-
-
-

Orders

-
Customer orders that include your products
-
-
- -
-
-
Loading orders…
-
-
-
- - - - diff --git a/seller/products.html b/seller/products.html deleted file mode 100755 index 3db279dcdf1625d44d162fa004e51b5c0c0e447a..0000000000000000000000000000000000000000 --- a/seller/products.html +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - Products · Cellex Seller - - - - - - - - - -
-
-
-

Products

-
Manage your catalog
-
- -
- -
-
-

All products

- -
-
-
Loading products…
-
-
-
- - - - - - - diff --git a/seller/profile.html b/seller/profile.html deleted file mode 100755 index 2dc042b3a66aabc9f2f48a3c2df31888793b4454..0000000000000000000000000000000000000000 --- a/seller/profile.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - Seller Profile · Cellex - - - - - - - - - -
-
-
-

Seller profile

-
This is how buyers see your store
-
- - View public profile - -
- -
-

Store details

-
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- -
-
-
- -
-

Social stats

-
-
-
-
Followers
-
0
-
-
-
-
Posts
-
0
-
-
-
-
Products
-
0
-
-
-
-
- - - - diff --git a/seller/settings.html b/seller/settings.html deleted file mode 100755 index 49af7a925774a254ccc5b4dd548efd775a9aba70..0000000000000000000000000000000000000000 --- a/seller/settings.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - Settings · Cellex Seller - - - - - - - - - -
-

Settings

Account preferences
- -
-

Account

-

Signed in as

-

- - Edit buyer profile - - -

-
- -
-

Danger zone

-

Need to delete your seller account? Contact support — this action cannot be undone.

- -
-
- - - - diff --git a/seller/stories.html b/seller/stories.html deleted file mode 100755 index 2f2ae3db7256bbfea7f3c1ae5a4fe039ebcef832..0000000000000000000000000000000000000000 --- a/seller/stories.html +++ /dev/null @@ -1,196 +0,0 @@ - - - - - - Seller Stories · Cellex - - - - - - - - - - -
-
-
-

Seller Stories

-
24-hour updates — Instagram-style
-
-
- -
-

Post a new story

-
-
- -
- 📢 Announcement - 🔥 Deal - 📦 Product spotlight - 🎬 Behind the scenes -
- -
-
- - -
-
- - -
-
- - -
-
- - -
- -
-
- -
-

Your active & recent stories

-
Loading…
-
-
- - - - diff --git a/seller/videos.html b/seller/videos.html deleted file mode 100755 index e155115689a385575027e33c989e35ae12e847b8..0000000000000000000000000000000000000000 --- a/seller/videos.html +++ /dev/null @@ -1,262 +0,0 @@ - - - - - - Product Videos · Cellex Seller - - - - - - - - - - -
-
-
-

Product Videos

-
15-second showcase clips (TikTok-style)
-
- - View public feed - -
- -
-

Upload a new video

-
-
- - -
-
- - -
-
- -
- -
Click to choose or drag & drop
-
MP4 / WebM / MOV
- -
- -
- - -
-
- -
-

Your videos

-
Loading…
-
-
- - - - diff --git a/settings.html b/settings.html deleted file mode 100755 index 2d28ca45dc8fd63762478849c76bfa03e79b871a..0000000000000000000000000000000000000000 --- a/settings.html +++ /dev/null @@ -1,526 +0,0 @@ - - - - - - Account Settings - Cellex | Nigeria's #1 Marketplace - - - - - - - - - - - - - - -
- -
- - -
- - - Back to Home - - -
- -
-
-
- - - - -
-
- - -
-

Account Settings

- -
- -
-
- U -
-
-

Loading...

-

Loading...

- - Edit Profile - -
-
- - -
-

Account Information

-
-
-

Email

-

-

-
-
-

Member Since

-

-

-
-
-

Account Type

-

- Buyer Account -

-
-
-

Last Login

-

-

-
-
-
- - -
-
-
- -
-
-

Start Selling on Eesha

-

Turn your passion into profit. Create a seller account and start selling today!

- - Create Seller Account - -
-
-
-
-
- - - - - - - - - -
- - - -
-
- - - - - - - diff --git a/shared-wishlist.html b/shared-wishlist.html deleted file mode 100755 index 9d1964245ea440f1f03f271e884d6db41bb977b9..0000000000000000000000000000000000000000 --- a/shared-wishlist.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - Shared Wishlist · Cellex - - - - - - - - - - -
-
-
- Shared Wishlist -
-

Loading…

-
-
-
- -
-
- -
Loading wishlist…
-
-
- - - - diff --git a/shared/footer.html b/shared/footer.html deleted file mode 100755 index b3307b7262894306b62e5d824b7e511266697e39..0000000000000000000000000000000000000000 --- a/shared/footer.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - diff --git a/shared/header.html b/shared/header.html deleted file mode 100755 index 952e896522f68d3a0a742155d8feb9506dcb48ae..0000000000000000000000000000000000000000 --- a/shared/header.html +++ /dev/null @@ -1,102 +0,0 @@ - -
- -
- - diff --git a/shared/navbar.html b/shared/navbar.html deleted file mode 100755 index bcf56fbda16078ef6e9f1dfad9850aabf49625ba..0000000000000000000000000000000000000000 --- a/shared/navbar.html +++ /dev/null @@ -1,217 +0,0 @@ - - - - - - - - - diff --git a/signup.html b/signup.html deleted file mode 100755 index 1af04e7bcd31a0948009df5d2598b162c6faa9eb..0000000000000000000000000000000000000000 --- a/signup.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - Sign Up - Cellex - - - - - - -
- -
- -

Cellex

-
-

Create your account

-

Get started with Cellex

-
- - -
- -
-
- - -
- -
- - -
- - - - - -
- - -

- Already have an account? - Sign in -

-
-
- - - - - - diff --git a/splash.html b/splash.html deleted file mode 100755 index a562ab894add7ce219a4dc93cef0172beab45156..0000000000000000000000000000000000000000 --- a/splash.html +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - Cellex - Loading - - - - - -
- Loading... -
-
Your marketplace for infinite possibilities
- - - - - diff --git a/src/src/app/ai-chat/page.tsx b/src/src/app/ai-chat/page.tsx new file mode 100644 index 0000000000000000000000000000000000000000..c177b580a2f8f9d82f751b130415300b2ce92ab1 --- /dev/null +++ b/src/src/app/ai-chat/page.tsx @@ -0,0 +1,226 @@ +'use client'; + +import { useEffect, useState, useRef } from 'react'; +import { api, formatPrice, type Product } from '@/lib/api'; +import { Card } from '@/components/ui/card'; +import { Button } from '@/components/ui/button'; +import { Sparkles, Send, Bot, User, Store, RotateCcw } from 'lucide-react'; +import Link from 'next/link'; +import { useAuth } from '@/components/auth-provider'; + +interface Message { + role: 'user' | 'assistant'; + content: string; + products?: Product[]; +} + +const SUGGESTIONS = [ + 'I need a phone under ₦100,000', + 'Show me trending products', + 'Find farm-fresh produce', + 'Best electronics deals', + 'What\'s good for gifts under ₦20,000?', +]; + +export default function AiChatPage() { + const { user } = useAuth(); + const [messages, setMessages] = useState([]); + const [input, setInput] = useState(''); + const [loading, setLoading] = useState(false); + const endRef = useRef(null); + + useEffect(() => { + endRef.current?.scrollIntoView({ behavior: 'smooth' }); + }, [messages]); + + useEffect(() => { + setMessages([ + { + role: 'assistant', + content: user + ? `Hi! I'm your AI shopping assistant. Tell me what you're looking for — I can search across thousands of products, recommend based on budget, and help you find the best deals. What are you shopping for today?` + : `Hi! I'm your AI shopping assistant. I can help you find products, recommend gifts, and discover deals. Login to get personalized recommendations based on your shopping history.`, + }, + ]); + }, [user]); + + const send = async (text?: string) => { + const content = (text ?? input).trim(); + if (!content || loading) return; + setInput(''); + + const newUserMsg: Message = { role: 'user', content }; + setMessages((prev) => [...prev, newUserMsg]); + setLoading(true); + + try { + // First, try to search products to give grounded recommendations + const searchResp = await api.products.search(content, null); + let products: Product[] = []; + if (searchResp.success) { + products = (searchResp.results || searchResp.products || []).slice(0, 4); + } + + // Call AI chat endpoint + const aiResp = await fetch('/api/ai-chat', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + message: content, + context: products.length + ? `Found ${products.length} relevant products: ${products.map(p => `${p.name} (${formatPrice(p.price)})`).join(', ')}` + : 'No specific products found, give general shopping advice.', + history: messages.slice(-6).map((m) => ({ role: m.role, content: m.content })), + }), + }); + + let reply = ''; + if (aiResp.ok) { + const data = await aiResp.json(); + reply = data.reply || data.message || data.content || "I'd be happy to help you shop! Could you tell me more about what you're looking for?"; + } else { + // Fallback if AI endpoint not configured + if (products.length > 0) { + reply = `Based on your request, I found ${products.length} products that might interest you. Here are my top picks:`; + } else { + reply = `Great question! Let me help you with that. Try browsing our categories — we have Electronics, Fashion, Home, Beauty, Farm Fresh, and more. You can also check our Flash Deals and Trending sections for the best offers.`; + } + } + + setMessages((prev) => [...prev, { role: 'assistant', content: reply, products: products.length ? products : undefined }]); + } catch (err) { + setMessages((prev) => [...prev, { + role: 'assistant', + content: 'Sorry, I had trouble processing your request. Please try again or browse our categories directly.', + }]); + } finally { + setLoading(false); + } + }; + + const reset = () => { + setMessages([{ + role: 'assistant', + content: 'Sure! What else can I help you find today?', + }]); + }; + + return ( +
+ {/* Header */} +
+
+
+ +
+
+

AI Shopping Assistant

+

Powered by Qwen2.5-72B

+
+
+ +
+ + {/* Messages */} +
+ {messages.map((msg, i) => ( +
+
+ {msg.role === 'user' + ? + : } +
+
+ +

{msg.content}

+
+ + {/* Product recommendations */} + {msg.products && msg.products.length > 0 && ( +
+ {msg.products.map((p) => ( + + +
+ {p.image_url ? ( + {p.name} + ) : ( +
+ +
+ )} +
+
+
{p.name}
+
{formatPrice(p.price)}
+
+
+ + ))} +
+ )} +
+
+ ))} + + {loading && ( +
+
+ +
+ +
+ + + +
+
+
+ )} + +
+
+ + {/* Suggestions */} + {messages.length <= 1 && ( +
+ {SUGGESTIONS.map((s) => ( + + ))} +
+ )} + + {/* Input */} +
+ setInput(e.target.value)} + onKeyDown={(e) => e.key === 'Enter' && send()} + placeholder="Ask me anything about shopping..." + className="flex-1 px-3 py-2 border border-slate-200 rounded-xl text-sm focus:border-primary focus:ring-2 focus:ring-primary/15 outline-none" + /> + +
+
+ ); +} diff --git a/src/src/app/api/ai-chat/route.ts b/src/src/app/api/ai-chat/route.ts new file mode 100644 index 0000000000000000000000000000000000000000..5649c88b0a7978e377bc8010c0e5c39fa95954ef --- /dev/null +++ b/src/src/app/api/ai-chat/route.ts @@ -0,0 +1,41 @@ +import { NextRequest, NextResponse } from 'next/server'; + +const SUPABASE_URL = process.env.SUPABASE_URL || 'https://tcwdbokruvlizkxcpkzj.supabase.co'; +const SUPABASE_ANON_KEY = process.env.SUPABASE_ANON_KEY || ''; +const EDGE_FUNCTIONS_URL = `${SUPABASE_URL}/functions/v1`; +const COOKIE_NAME = 'cellex_session_id'; + +export async function POST(request: NextRequest) { + if (!SUPABASE_ANON_KEY) { + return NextResponse.json({ success: false, error: 'SUPABASE_ANON_KEY not set' }, { status: 500 }); + } + + const sessionId = request.cookies.get(COOKIE_NAME)?.value || ''; + const body = await request.text(); + + const headers: Record = { + 'apikey': SUPABASE_ANON_KEY, + 'Content-Type': 'application/json', + }; + if (sessionId) { + headers['Authorization'] = `Bearer ${sessionId}`; + } + + try { + const resp = await fetch(`${EDGE_FUNCTIONS_URL}/ai-chat`, { + method: 'POST', + headers, + body, + }); + + const text = await resp.text(); + try { + const data = JSON.parse(text); + return NextResponse.json(data, { status: resp.status }); + } catch { + return NextResponse.json({ success: false, error: `Non-JSON response: ${text.substring(0, 200)}` }, { status: 500 }); + } + } catch (error) { + return NextResponse.json({ success: false, error: String(error) }, { status: 500 }); + } +} diff --git a/src/src/app/api/auth/route.ts b/src/src/app/api/auth/route.ts new file mode 100644 index 0000000000000000000000000000000000000000..6e1312cd8342531f7d4368927e63957c82d9007a --- /dev/null +++ b/src/src/app/api/auth/route.ts @@ -0,0 +1,66 @@ +import { NextRequest, NextResponse } from 'next/server'; + +const SUPABASE_URL = process.env.SUPABASE_URL || 'https://tcwdbokruvlizkxcpkzj.supabase.co'; +const SUPABASE_ANON_KEY = process.env.SUPABASE_ANON_KEY || ''; +const EDGE_FUNCTIONS_URL = `${SUPABASE_URL}/functions/v1`; +const COOKIE_NAME = 'cellex_session_id'; + +export async function POST(request: NextRequest) { + if (!SUPABASE_ANON_KEY) { + return NextResponse.json({ success: false, error: 'SUPABASE_ANON_KEY not set' }, { status: 500 }); + } + + const sessionId = request.cookies.get(COOKIE_NAME)?.value || ''; + const body = await request.text(); + + const headers: Record = { + 'apikey': SUPABASE_ANON_KEY, + 'Content-Type': 'application/json', + }; + if (sessionId) { + headers['Authorization'] = `Bearer ${sessionId}`; + } + + const botKey = request.headers.get('X-Bot-Api-Key'); + if (botKey) headers['X-Bot-Api-Key'] = botKey; + const internalKey = request.headers.get('X-Internal-Call'); + if (internalKey) headers['X-Internal-Call'] = internalKey; + + try { + const resp = await fetch(`${EDGE_FUNCTIONS_URL}/auth`, { + method: 'POST', + headers, + body, + }); + + const data = await resp.json(); + const bodyJson = JSON.parse(body); + + if (bodyJson.op === 'login' || bodyJson.op === 'signup') { + if (data.success && data.session_id) { + const response = NextResponse.json( + { ...data, session_id: undefined }, + { status: resp.status } + ); + response.cookies.set(COOKIE_NAME, data.session_id, { + httpOnly: true, + secure: true, + sameSite: 'lax', + maxAge: 7 * 24 * 60 * 60, + path: '/', + }); + return response; + } + } + + if (bodyJson.op === 'logout') { + const response = NextResponse.json(data, { status: resp.status }); + response.cookies.delete(COOKIE_NAME); + return response; + } + + return NextResponse.json(data, { status: resp.status }); + } catch (error) { + return NextResponse.json({ success: false, error: String(error) }, { status: 500 }); + } +} diff --git a/src/src/app/api/cart/route.ts b/src/src/app/api/cart/route.ts new file mode 100644 index 0000000000000000000000000000000000000000..d251ef196da89fa227cca880cdd895b01328f1ef --- /dev/null +++ b/src/src/app/api/cart/route.ts @@ -0,0 +1,6 @@ +import { NextRequest } from 'next/server'; +import { proxyToEdgeFunction } from '@/lib/proxy'; + +export async function POST(request: NextRequest) { + return proxyToEdgeFunction('cart', request); +} diff --git a/src/src/app/api/checkout/route.ts b/src/src/app/api/checkout/route.ts new file mode 100644 index 0000000000000000000000000000000000000000..881a07f2f79b1d96d69e474d2b6d6a93cadaaf5c --- /dev/null +++ b/src/src/app/api/checkout/route.ts @@ -0,0 +1,6 @@ +import { NextRequest } from 'next/server'; +import { proxyToEdgeFunction } from '@/lib/proxy'; + +export async function POST(request: NextRequest) { + return proxyToEdgeFunction('checkout', request); +} diff --git a/src/src/app/api/cross-platform/route.ts b/src/src/app/api/cross-platform/route.ts new file mode 100644 index 0000000000000000000000000000000000000000..33bdcd49768fd3c89c7afbc5b97ce75cb352dfe1 --- /dev/null +++ b/src/src/app/api/cross-platform/route.ts @@ -0,0 +1,6 @@ +import { NextRequest } from 'next/server'; +import { proxyToEdgeFunction } from '@/lib/proxy'; + +export async function POST(request: NextRequest) { + return proxyToEdgeFunction('cross-platform', request); +} diff --git a/src/src/app/api/discover/route.ts b/src/src/app/api/discover/route.ts new file mode 100644 index 0000000000000000000000000000000000000000..b83e6911e3b168b3be338944a98a467b142c8e71 --- /dev/null +++ b/src/src/app/api/discover/route.ts @@ -0,0 +1,6 @@ +import { NextRequest } from 'next/server'; +import { proxyToEdgeFunction } from '@/lib/proxy'; + +export async function POST(request: NextRequest) { + return proxyToEdgeFunction('discover', request); +} diff --git a/src/src/app/api/group-buy/route.ts b/src/src/app/api/group-buy/route.ts new file mode 100644 index 0000000000000000000000000000000000000000..97d66aced855ca59d7731181fa19e78e8cc1aa5b --- /dev/null +++ b/src/src/app/api/group-buy/route.ts @@ -0,0 +1,6 @@ +import { NextRequest } from 'next/server'; +import { proxyToEdgeFunction } from '@/lib/proxy'; + +export async function POST(request: NextRequest) { + return proxyToEdgeFunction('group-buy', request); +} diff --git a/src/src/app/api/live/route.ts b/src/src/app/api/live/route.ts new file mode 100644 index 0000000000000000000000000000000000000000..eb2318ac29f70a67781533f5ded56eccfea45212 --- /dev/null +++ b/src/src/app/api/live/route.ts @@ -0,0 +1,6 @@ +import { NextRequest } from 'next/server'; +import { proxyToEdgeFunction } from '@/lib/proxy'; + +export async function POST(request: NextRequest) { + return proxyToEdgeFunction('live', request); +} diff --git a/src/src/app/api/orders/route.ts b/src/src/app/api/orders/route.ts new file mode 100644 index 0000000000000000000000000000000000000000..e67abbe99d105a73f9b145f61dcfd7f805fb8b09 --- /dev/null +++ b/src/src/app/api/orders/route.ts @@ -0,0 +1,6 @@ +import { NextRequest } from 'next/server'; +import { proxyToEdgeFunction } from '@/lib/proxy'; + +export async function POST(request: NextRequest) { + return proxyToEdgeFunction('orders', request); +} diff --git a/src/src/app/api/payment/route.ts b/src/src/app/api/payment/route.ts new file mode 100644 index 0000000000000000000000000000000000000000..d7c048021a538654d512e4648c594c5e21fc4937 --- /dev/null +++ b/src/src/app/api/payment/route.ts @@ -0,0 +1,6 @@ +import { NextRequest } from 'next/server'; +import { proxyToEdgeFunction } from '@/lib/proxy'; + +export async function POST(request: NextRequest) { + return proxyToEdgeFunction('payment', request); +} diff --git a/src/src/app/api/products/route.ts b/src/src/app/api/products/route.ts new file mode 100644 index 0000000000000000000000000000000000000000..7f9322466c856658c9fb4775a79bb4a57f430166 --- /dev/null +++ b/src/src/app/api/products/route.ts @@ -0,0 +1,6 @@ +import { NextRequest } from 'next/server'; +import { proxyToEdgeFunction } from '@/lib/proxy'; + +export async function POST(request: NextRequest) { + return proxyToEdgeFunction('products', request); +} diff --git a/src/src/app/api/profile/route.ts b/src/src/app/api/profile/route.ts new file mode 100644 index 0000000000000000000000000000000000000000..dd877e3f9ae915cc2f1a99f217b7d57cade0f6dc --- /dev/null +++ b/src/src/app/api/profile/route.ts @@ -0,0 +1,6 @@ +import { NextRequest } from 'next/server'; +import { proxyToEdgeFunction } from '@/lib/proxy'; + +export async function POST(request: NextRequest) { + return proxyToEdgeFunction('profile', request); +} diff --git a/src/src/app/api/reviews/route.ts b/src/src/app/api/reviews/route.ts new file mode 100644 index 0000000000000000000000000000000000000000..45860f73bdd260358f0b9d537a94b78ed08dd6dd --- /dev/null +++ b/src/src/app/api/reviews/route.ts @@ -0,0 +1,6 @@ +import { NextRequest } from 'next/server'; +import { proxyToEdgeFunction } from '@/lib/proxy'; + +export async function POST(request: NextRequest) { + return proxyToEdgeFunction('reviews', request); +} diff --git a/src/src/app/api/route.ts b/src/src/app/api/route.ts new file mode 100644 index 0000000000000000000000000000000000000000..0277710b3e8ce8861be944e9d69f62481dc57471 --- /dev/null +++ b/src/src/app/api/route.ts @@ -0,0 +1,5 @@ +import { NextResponse } from "next/server"; + +export async function GET() { + return NextResponse.json({ message: "Hello, world!" }); +} \ No newline at end of file diff --git a/src/src/app/api/seller-dashboard/route.ts b/src/src/app/api/seller-dashboard/route.ts new file mode 100644 index 0000000000000000000000000000000000000000..4d6298331ca6586b3bcc8e4cc5c265320f066911 --- /dev/null +++ b/src/src/app/api/seller-dashboard/route.ts @@ -0,0 +1,6 @@ +import { NextRequest } from 'next/server'; +import { proxyToEdgeFunction } from '@/lib/proxy'; + +export async function POST(request: NextRequest) { + return proxyToEdgeFunction('seller-dashboard', request); +} diff --git a/src/src/app/api/seller-orders/route.ts b/src/src/app/api/seller-orders/route.ts new file mode 100644 index 0000000000000000000000000000000000000000..154f42e24497bfa691403fc4bc50e5625818c39a --- /dev/null +++ b/src/src/app/api/seller-orders/route.ts @@ -0,0 +1,6 @@ +import { NextRequest } from 'next/server'; +import { proxyToEdgeFunction } from '@/lib/proxy'; + +export async function POST(request: NextRequest) { + return proxyToEdgeFunction('seller-orders', request); +} diff --git a/src/src/app/api/seller-products/route.ts b/src/src/app/api/seller-products/route.ts new file mode 100644 index 0000000000000000000000000000000000000000..b6f2b585f615d9d5918252712a5540c7767c842b --- /dev/null +++ b/src/src/app/api/seller-products/route.ts @@ -0,0 +1,6 @@ +import { NextRequest } from 'next/server'; +import { proxyToEdgeFunction } from '@/lib/proxy'; + +export async function POST(request: NextRequest) { + return proxyToEdgeFunction('seller-products', request); +} diff --git a/src/src/app/api/seller-profile/route.ts b/src/src/app/api/seller-profile/route.ts new file mode 100644 index 0000000000000000000000000000000000000000..1b895f0ee610773bd7edb235e7caa26443188472 --- /dev/null +++ b/src/src/app/api/seller-profile/route.ts @@ -0,0 +1,6 @@ +import { NextRequest } from 'next/server'; +import { proxyToEdgeFunction } from '@/lib/proxy'; + +export async function POST(request: NextRequest) { + return proxyToEdgeFunction('seller-profile', request); +} diff --git a/src/src/app/api/social/route.ts b/src/src/app/api/social/route.ts new file mode 100644 index 0000000000000000000000000000000000000000..97bc2b1a535444c093cfaf0f71a8bde5912d20a4 --- /dev/null +++ b/src/src/app/api/social/route.ts @@ -0,0 +1,6 @@ +import { NextRequest } from 'next/server'; +import { proxyToEdgeFunction } from '@/lib/proxy'; + +export async function POST(request: NextRequest) { + return proxyToEdgeFunction('social', request); +} diff --git a/src/src/app/api/stories/route.ts b/src/src/app/api/stories/route.ts new file mode 100644 index 0000000000000000000000000000000000000000..0c88ece62d2705a9c12defd83142f981a49fecea --- /dev/null +++ b/src/src/app/api/stories/route.ts @@ -0,0 +1,6 @@ +import { NextRequest } from 'next/server'; +import { proxyToEdgeFunction } from '@/lib/proxy'; + +export async function POST(request: NextRequest) { + return proxyToEdgeFunction('stories', request); +} diff --git a/src/src/app/api/telegram/route.ts b/src/src/app/api/telegram/route.ts new file mode 100644 index 0000000000000000000000000000000000000000..4f593a68c912916f67cbee048f2f7d62bb563488 --- /dev/null +++ b/src/src/app/api/telegram/route.ts @@ -0,0 +1,6 @@ +import { NextRequest } from 'next/server'; +import { proxyToEdgeFunction } from '@/lib/proxy'; + +export async function POST(request: NextRequest) { + return proxyToEdgeFunction('telegram', request); +} diff --git a/src/src/app/api/trending/route.ts b/src/src/app/api/trending/route.ts new file mode 100644 index 0000000000000000000000000000000000000000..3f1d12e3b86144c0ed67fb4aee76073a416dcbaa --- /dev/null +++ b/src/src/app/api/trending/route.ts @@ -0,0 +1,6 @@ +import { NextRequest } from 'next/server'; +import { proxyToEdgeFunction } from '@/lib/proxy'; + +export async function POST(request: NextRequest) { + return proxyToEdgeFunction('trending', request); +} diff --git a/src/src/app/api/videos/route.ts b/src/src/app/api/videos/route.ts new file mode 100644 index 0000000000000000000000000000000000000000..935a1bfee3de028f951b9b41cd615291624b9578 --- /dev/null +++ b/src/src/app/api/videos/route.ts @@ -0,0 +1,6 @@ +import { NextRequest } from 'next/server'; +import { proxyToEdgeFunction } from '@/lib/proxy'; + +export async function POST(request: NextRequest) { + return proxyToEdgeFunction('videos', request); +} diff --git a/src/src/app/api/wishlist/route.ts b/src/src/app/api/wishlist/route.ts new file mode 100644 index 0000000000000000000000000000000000000000..42006f715c97336b17c2cb8a528747097f55e9f8 --- /dev/null +++ b/src/src/app/api/wishlist/route.ts @@ -0,0 +1,6 @@ +import { NextRequest } from 'next/server'; +import { proxyToEdgeFunction } from '@/lib/proxy'; + +export async function POST(request: NextRequest) { + return proxyToEdgeFunction('wishlist', request); +} diff --git a/src/src/app/cart/page.tsx b/src/src/app/cart/page.tsx new file mode 100644 index 0000000000000000000000000000000000000000..dd81d685b627a7bb56efc3fdd584c0f8231ab849 --- /dev/null +++ b/src/src/app/cart/page.tsx @@ -0,0 +1,218 @@ +'use client'; + +import { useEffect, useState } from 'react'; +import { api, formatPrice, type CartItem } from '@/lib/api'; +import { useAuth } from '@/components/auth-provider'; +import { Button } from '@/components/ui/button'; +import { Card } from '@/components/ui/card'; +import { ShoppingCart, Trash2, Minus, Plus, Store, ArrowRight } from 'lucide-react'; +import Link from 'next/link'; +import { useRouter } from 'next/navigation'; +import { useToast } from '@/hooks/use-toast'; +import { EmptyState } from '@/components/product-card'; + +export default function CartPage() { + const { user, loading: authLoading, refreshCartCount } = useAuth(); + const router = useRouter(); + const { toast } = useToast(); + const [items, setItems] = useState([]); + const [loading, setLoading] = useState(true); + const [updating, setUpdating] = useState(null); + + const load = async () => { + setLoading(true); + const result = await api.cart.get(); + if (result.success) setItems(result.items || []); + setLoading(false); + }; + + useEffect(() => { + if (!authLoading && !user) { + router.push('/login?next=/cart'); + return; + } + if (user) load(); + }, [user, authLoading, router]); + + const updateQty = async (itemId: string, delta: number) => { + const item = items.find((i) => i.id === itemId); + if (!item) return; + const newQty = item.quantity + delta; + if (newQty < 1) return; + setUpdating(itemId); + const result = await api.cart.update(itemId, newQty); + setUpdating(null); + if (result.success) { + load(); + refreshCartCount(); + } + }; + + const removeItem = async (itemId: string) => { + setUpdating(itemId); + const result = await api.cart.remove(itemId); + setUpdating(null); + if (result.success) { + toast({ title: 'Removed from cart' }); + load(); + refreshCartCount(); + } + }; + + const clearCart = async () => { + if (!confirm('Clear all items from cart?')) return; + await api.cart.clear(); + setItems([]); + refreshCartCount(); + toast({ title: 'Cart cleared' }); + }; + + const subtotal = items.reduce((sum, i) => sum + (i.products?.price || 0) * i.quantity, 0); + const shipping = subtotal > 0 ? (subtotal > 50000 ? 0 : 1500) : 0; + const total = subtotal + shipping; + + if (authLoading || loading) { + return ( +
+
+
+ ); + } + + if (items.length === 0) { + return ( +
+ } + title="Your cart is empty" + message="Browse our marketplace and find great deals from local Nigerian sellers." + action={ + + + + } + /> +
+ ); + } + + return ( +
+
+

+ + Cart ({items.length}) +

+ +
+ +
+ {/* Items */} +
+ {items.map((item) => ( + +
+ +
+ {item.products?.image_url ? ( + + ) : ( +
+ +
+ )} +
+ +
+ +

+ {item.products?.name || 'Product'} +

+ +
{item.products?.category}
+
+
{formatPrice(item.products?.price || 0)}
+
+
+ + {item.quantity} + +
+ +
+
+
+
+
+ Subtotal: {formatPrice((item.products?.price || 0) * item.quantity)} +
+
+ ))} + + + + +
+ + {/* Summary */} +
+ +

Order Summary

+
+
+ Subtotal + {formatPrice(subtotal)} +
+
+ Shipping + + {shipping === 0 ? FREE : formatPrice(shipping)} + +
+ {shipping === 0 && ( +
+ 🎉 You qualify for free shipping! +
+ )} +
+ Total + {formatPrice(total)} +
+
+ + + +
+ Secure payment via PalmPay bank transfer +
+
+
+
+
+ ); +} diff --git a/src/src/app/categories/page.tsx b/src/src/app/categories/page.tsx new file mode 100644 index 0000000000000000000000000000000000000000..297af8fddfc9282f6681e0b7e3cb54314caa3b09 --- /dev/null +++ b/src/src/app/categories/page.tsx @@ -0,0 +1,140 @@ +'use client'; + +import { useEffect, useState, useCallback , Suspense} from 'react'; +import { useSearchParams, useRouter } from 'next/navigation'; +import { api, type Product } from '@/lib/api'; +import { ProductGrid } from '@/components/product-card'; +import { Button } from '@/components/ui/button'; +import { Card } from '@/components/ui/card'; +import { Filter, ChevronDown } from 'lucide-react'; + +const CATEGORIES = [ + { key: '', label: 'All', emoji: '🛍️' }, + { key: 'Electronics', label: 'Electronics', emoji: '📱' }, + { key: 'Fashion', label: 'Fashion', emoji: '👗' }, + { key: 'Home', label: 'Home', emoji: '🏠' }, + { key: 'Beauty', label: 'Beauty', emoji: '💄' }, + { key: 'Farm', label: 'Farm Fresh', emoji: '🌱' }, + { key: 'Sports', label: 'Sports', emoji: '⚽' }, + { key: 'Books', label: 'Books', emoji: '📚' }, + { key: 'Food', label: 'Food', emoji: '🍲' }, + { key: 'Toys', label: 'Toys', emoji: '🧸' }, +]; + +const SORTS = [ + { key: 'newest', label: 'Newest' }, + { key: 'popular', label: 'Popular' }, + { key: 'price_low', label: 'Price: Low → High' }, + { key: 'price_high', label: 'Price: High → Low' }, + { key: 'flash', label: '⚡ Flash Deals' }, + { key: 'trending', label: '🔥 Trending' }, +]; + +function CategoriesContent() { + const params = useSearchParams(); + const router = useRouter(); + const initialCategory = params.get('category') || ''; + const initialSort = params.get('sort') || 'newest'; + + const [category, setCategory] = useState(initialCategory); + const [sort, setSort] = useState(initialSort); + const [page, setPage] = useState(1); + const [products, setProducts] = useState([]); + const [loading, setLoading] = useState(true); + const [showSortMenu, setShowSortMenu] = useState(false); + + const load = useCallback(async () => { + setLoading(true); + const result = await api.products.category(category, sort, page); + if (result.success) { + setProducts(result.products || []); + } + setLoading(false); + }, [category, sort, page]); + + useEffect(() => { load(); }, [load]); + + // Update URL when filter changes + useEffect(() => { + const params = new URLSearchParams(); + if (category) params.set('category', category); + if (sort !== 'newest') params.set('sort', sort); + router.replace(`/categories${params.toString() ? '?' + params.toString() : ''}`); + setPage(1); + }, [category, sort, router]); + + const activeSort = SORTS.find((s) => s.key === sort); + + return ( +
+

Browse Products

+ + {/* Category pills */} +
+ {CATEGORIES.map((c) => ( + + ))} +
+ + {/* Sort dropdown */} +
+
+ {loading ? 'Loading...' : `${products.length} product${products.length !== 1 ? 's' : ''}`} +
+ + {showSortMenu && ( +
+ {SORTS.map((s) => ( + + ))} +
+ )} +
+ + + + {!loading && products.length >= 20 && ( +
+ +
+ )} +
+ ); +} + +export default function CategoriesPage() { + return ( +
}> + +
+ ); +} + diff --git a/src/src/app/checkout/page.tsx b/src/src/app/checkout/page.tsx new file mode 100644 index 0000000000000000000000000000000000000000..dcd5a2fc605776b631225868031b1a5a73536e0c --- /dev/null +++ b/src/src/app/checkout/page.tsx @@ -0,0 +1,220 @@ +'use client'; + +import { useEffect, useState } from 'react'; +import { api, formatPrice, type CartItem } from '@/lib/api'; +import { useAuth } from '@/components/auth-provider'; +import { Button } from '@/components/ui/button'; +import { Card } from '@/components/ui/card'; +import { Input } from '@/components/ui/input'; +import { Label } from '@/components/ui/label'; +import { Textarea } from '@/components/ui/textarea'; +import { useRouter } from 'next/navigation'; +import { useToast } from '@/hooks/use-toast'; +import { Store, MapPin, CreditCard, ChevronLeft } from 'lucide-react'; +import Link from 'next/link'; + +export default function CheckoutPage() { + const { user, loading: authLoading } = useAuth(); + const router = useRouter(); + const { toast } = useToast(); + const [items, setItems] = useState([]); + const [loading, setLoading] = useState(true); + const [placing, setPlacing] = useState(false); + const [profile, setProfile] = useState(null); + + const [fullName, setFullName] = useState(''); + const [phone, setPhone] = useState(''); + const [address, setAddress] = useState(''); + const [city, setCity] = useState(''); + const [state, setState] = useState(''); + const [notes, setNotes] = useState(''); + + useEffect(() => { + if (!authLoading && !user) { + router.push('/login?next=/checkout'); + return; + } + if (user) { + (async () => { + const [cartResp, profileResp] = await Promise.all([ + api.cart.get(), + api.profile.get(), + ]); + if (cartResp.success) { + setItems(cartResp.items || []); + if ((cartResp.items || []).length === 0) { + router.push('/cart'); + return; + } + } + if (profileResp.success && profileResp.profile) { + setProfile(profileResp.profile); + setFullName(profileResp.profile.full_name || ''); + setPhone(profileResp.profile.phone || ''); + setAddress(profileResp.profile.address || ''); + } + setLoading(false); + })(); + } + }, [user, authLoading, router]); + + const subtotal = items.reduce((sum, i) => sum + (i.products?.price || 0) * i.quantity, 0); + const shipping = subtotal > 50000 ? 0 : 1500; + const total = subtotal + shipping; + + const placeOrder = async () => { + if (!fullName || !phone || !address) { + toast({ title: 'Missing info', description: 'Please fill name, phone, and address', variant: 'destructive' }); + return; + } + setPlacing(true); + + // Build shipping address object + const shippingAddress = { + full_name: fullName, + phone, + address, + city, + state, + notes, + }; + + const result = await api.checkout.placeOrder(shippingAddress); + setPlacing(false); + + if (result.success && result.orderId) { + // Save profile updates + await api.profile.update({ fullName, phone, address }); + toast({ title: 'Order placed!', description: 'Redirecting to payment...' }); + router.push(`/payment?order=${result.orderId}`); + } else { + toast({ title: 'Error', description: result.error || 'Failed to place order', variant: 'destructive' }); + } + }; + + if (authLoading || loading) { + return ( +
+
+
+ ); + } + + return ( +
+ + Back to cart + + +

Checkout

+ +
+ {/* Shipping form */} +
+ +
+ +

Shipping Address

+
+
+
+ + setFullName(e.target.value)} placeholder="John Doe" /> +
+
+ + setPhone(e.target.value)} placeholder="08012345678" /> +
+
+ + setState(e.target.value)} placeholder="Lagos" /> +
+
+ +