From 60791e687d331826a364153dcde02bd6132093b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?He=CC=81ctor=20Palma=20Te=CC=81llez?= Date: Sun, 29 Mar 2026 01:35:54 -0300 Subject: [PATCH 01/10] feat(template): update styles, texts and base configurations --- .env.example | 16 +- .env.secure | 14 +- .gitignore | 6 +- README.md | 49 ++-- actions/createPayment.ts | 43 +++- actions/loadProducts.ts | 8 +- app/app.tsx | 196 +++++---------- app/productsMock.ts | 52 ++++ components/InfoModal.tsx | 63 +++-- components/ProductCard.tsx | 26 +- components/ProductImageModal.tsx | 24 +- images/devschile2026.png | Bin 0 -> 27153 bytes index.html | 4 +- netlify/functions/create-payment.js | 18 +- netlify/functions/package.json | 6 +- package-lock.json | 232 +----------------- package.json | 4 +- failure.html => public/failure.html | 12 +- pending.html => public/pending.html | 10 +- success.html => public/success.html | 12 +- rscs/.gitkeep | 1 - rscs/1.jpg | Bin 404624 -> 0 bytes "rscs/ANEXO N\302\2601.pdf" | Bin 459408 -> 0 bytes ...ChatGPT Image Nov 5, 2025, 06_18_02 PM.png | Bin 1932639 -> 0 bytes ...ChatGPT Image Nov 5, 2025, 06_24_05 PM.png | Bin 2191859 -> 0 bytes rscs/IMG_6674.jpg | Bin 1422944 -> 0 bytes rscs/IMG_6797.jpg | Bin 1000658 -> 0 bytes rscs/IMG_6802.jpg | Bin 1073248 -> 0 bytes rscs/IMG_6803.jpg | Bin 957629 -> 0 bytes rscs/IMG_6804.jpg | Bin 915747 -> 0 bytes rscs/IMG_6809.jpg | Bin 1188530 -> 0 bytes rscs/IMG_6810.jpg | Bin 1383286 -> 0 bytes rscs/IMG_6811.jpg | Bin 1311848 -> 0 bytes src/index.css | 1 + src/vite-env.d.ts | 6 +- tailwind.config.js | 12 +- types/products.ts | 12 +- 37 files changed, 308 insertions(+), 519 deletions(-) create mode 100644 app/productsMock.ts create mode 100644 images/devschile2026.png rename failure.html => public/failure.html (90%) rename pending.html => public/pending.html (91%) rename success.html => public/success.html (87%) delete mode 100644 rscs/.gitkeep delete mode 100644 rscs/1.jpg delete mode 100644 "rscs/ANEXO N\302\2601.pdf" delete mode 100644 rscs/ChatGPT Image Nov 5, 2025, 06_18_02 PM.png delete mode 100644 rscs/ChatGPT Image Nov 5, 2025, 06_24_05 PM.png delete mode 100644 rscs/IMG_6674.jpg delete mode 100644 rscs/IMG_6797.jpg delete mode 100644 rscs/IMG_6802.jpg delete mode 100644 rscs/IMG_6803.jpg delete mode 100644 rscs/IMG_6804.jpg delete mode 100644 rscs/IMG_6809.jpg delete mode 100644 rscs/IMG_6810.jpg delete mode 100644 rscs/IMG_6811.jpg diff --git a/.env.example b/.env.example index 1517569..74fdb0a 100644 --- a/.env.example +++ b/.env.example @@ -1,12 +1,10 @@ -# Airtable Configuration -# Get these from your Airtable account settings -VITE_AIRTABLE_API_KEY=your_airtable_api_key_here -VITE_AIRTABLE_BASE_ID=your_base_id_here -VITE_AIRTABLE_TABLE_NAME=Productos +# API Configuration +VITE_API_URL=https://api.example.com/v1 -# MercadoPago Configuration (Frontend) +# MercadoPago Configuration VITE_MERCADOPAGO_PUBLIC_KEY=your_mercadopago_public_key_here +MERCADOPAGO_ACCESS_TOKEN=your_mercadopago_access_token_here -# Server-side MercadoPago Configuration (Netlify Functions) -# Add this in Netlify Dashboard > Functions > Environment -MERCADOPAGO_ACCESS_TOKEN=your_mercadopago_access_token_here \ No newline at end of file +# Netlify Functions Environment +ALLOWED_ORIGINS=https://your-domain.netlify.app,http://localhost:3000 +SITE_URL=http://localhost:3000 diff --git a/.env.secure b/.env.secure index db528c0..f74af99 100644 --- a/.env.secure +++ b/.env.secure @@ -2,22 +2,20 @@ # This file contains template values. DO NOT use these in production! # Replace with your actual values and set them in Netlify environment variables -# Airtable Configuration -VITE_AIRTABLE_API_KEY=your_actual_airtable_personal_access_token_here -VITE_AIRTABLE_BASE_ID=your_actual_base_id_here -VITE_AIRTABLE_TABLE_NAME=Productos +# API Configuration +VITE_API_URL=https://api.example.com/v1 # MercadoPago Configuration (Frontend) -VITE_MERCADOPAGO_PUBLIC_KEY=your_actual_mercadopago_public_key_here +VITE_MERCADOPAGO_PUBLIC_KEY=APP_USR-96e2904e-29ec-4a15-a8a0-a0bb4f7a4c77 # Server-side MercadoPago Configuration (Netlify Functions) # ⚠️ CRITICAL: Set this in Netlify Dashboard > Functions > Environment Variables # DO NOT commit this to version control -MERCADOPAGO_ACCESS_TOKEN=your_actual_mercadopago_access_token_here +MERCADOPAGO_ACCESS_TOKEN=APP_USR-3029551280817930-032822-e1812b84fcda1ed9d6e8be499edafe4b-3297988697 # Security Configuration (Netlify Functions Environment) # Comma-separated list of allowed origins -ALLOWED_ORIGINS=https://amigurumi-de-ines.netlify.app,https://localhost:3000 +ALLOWED_ORIGINS=https://tienda-devschile.netlify.app,http://localhost:5173 # Node Environment (Production) NODE_ENV=production @@ -26,4 +24,4 @@ NODE_ENV=production # 1. NEVER commit real API keys to version control # 2. Set sensitive values in Netlify environment variables # 3. Rotate all exposed credentials immediately -# 4. See SECURITY.md for detailed security analysis \ No newline at end of file +# 4. See SECURITY.md for detailed security analysis diff --git a/.gitignore b/.gitignore index 734f51e..a592caf 100644 --- a/.gitignore +++ b/.gitignore @@ -174,4 +174,8 @@ bundle-report.html SECURITY.md *.pem *.key -*.crt \ No newline at end of file +*.crt + +# Local environment variables source +.env +.env.local diff --git a/README.md b/README.md index bef3e5f..2245b20 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -# Amigurumis de Inés - Ecommerce con MercadoPago +# Tienda devsChile - Ecommerce con MercadoPago -Sitio web para la venta de amigurumis tejidos a mano por Inés. Construido con React, TypeScript, Tailwind CSS y Vite. **Ahora con integración completa de MercadoPago para pagos reales**. +Sitio web para la venta de productos tejidos a mano por Inés. Construido con React, TypeScript, Tailwind CSS y Vite. **Ahora con integración completa de MercadoPago para pagos reales**. ## 🚨 AVISO DE SEGURIDAD IMPORTANTE @@ -10,20 +10,21 @@ Sitio web para la venta de amigurumis tejidos a mano por Inés. Construido con R - 🎨 Diseño responsivo y atractivo con gradientes cálidos - 📱 Interfaz moderna optimizada para móviles -- 🛍️ Catálogo de productos dinámico desde Airtable +- 🛍️ Catálogo de productos dinámico desde API Genérica - 💳 **Pagos reales con MercadoPago** (¡NUEVO!) - 🔒 Pago seguro con redirección a MercadoPago - ✅ Páginas de confirmación: éxito, falla y pendiente - 📊 Gestión de estados de pago completa - 🎯 Sin carrito de compras - compra directa por producto - 🛡️ **Auditoría de seguridad completa implementada** +- 🧪 **Modo desarrollo con Mock Data** ## 🛠️ Tecnologías - **Frontend**: React 18 + TypeScript + Vite - **Estilos**: Tailwind CSS + Gradientes personalizados - **UI Components**: Radix UI + shadcn/ui -- **Datos**: Airtable API +- **Datos**: API Genérica / Mock Data - **Pagos**: MercadoPago SDK + Netlify Functions - **Despliegue**: Netlify (Frontend + Functions) - **Seguridad**: CORS whitelist, validación de entrada, headers de seguridad @@ -48,11 +49,9 @@ cp .env.secure .env **Variables requeridas:** -#### Airtable (para productos) +#### API Configuration (para productos) ```env -VITE_AIRTABLE_API_KEY=tu_airtable_api_key_aqui -VITE_AIRTABLE_BASE_ID=tu_base_id_aqui -VITE_AIRTABLE_TABLE_NAME=Productos +VITE_API_URL=https://tu-api.com/v1 ``` #### MercadoPago (para pagos) @@ -67,7 +66,7 @@ MERCADOPAGO_ACCESS_TOKEN=tu_access_token_aqui #### Seguridad (Netlify Functions) ```env # Orígenes permitidos (comas separadas) -ALLOWED_ORIGINS=https://amigurumi-de-ines.netlify.app,https://localhost:3000 +ALLOWED_ORIGINS=https://tienda-devschile.netlify.app,http://localhost:5173 NODE_ENV=production ``` @@ -80,9 +79,9 @@ NODE_ENV=production - `Public Key`: Para el frontend (VITE_MERCADOPAGO_PUBLIC_KEY) - `Access Token`: Para el backend (MERCADOPAGO_ACCESS_TOKEN) -### 4. Configurar Airtable +### 4. Configuración de API de Productos -La aplicación espera una tabla llamada "Productos" con estos campos: +La aplicación espera un endpoint `GET /products` que retorne una estructura compatible con `ProductResponse` conteniendo estos campos: | Campo | Tipo | Requerido | Descripción | |-------|------|-----------|-------------| @@ -133,6 +132,8 @@ npm run lint │ └── functions/ │ ├── create-payment.js # Netlify Function para MercadoPago (segura) │ └── package.json # Dependencias de Functions +├── public/ +│ └── images/ # Imágenes estáticas (accesibles vía /images/*) ├── app/ │ └── app.tsx # Componente principal con pago ├── components/ @@ -189,7 +190,11 @@ Esto asegura que las dependencias se instalen antes del build. ### Modificar Productos: -Edita directamente en tu tabla de Airtable. Los cambios se reflejan automáticamente. +Edita tus datos en el archivo `app/productsMock.ts` o configura tu API Genérica. Los cambios se reflejan automáticamente. + +#### Imágenes Locales: +Puedes guardar imágenes estáticas en la carpeta `public/images/`. Para usarlas en tus productos, utiliza la ruta relativa comenzando con `/images/`. +Ejemplo: Si guardas `mi-producto.jpg` en `public/images/`, la URL en tu JSON/Mock será `/images/mi-producto.jpg`. ### Cambiar Precios: @@ -197,14 +202,15 @@ Los precios se muestran en CLP (Pesos Chilenos) y se formatean automáticamente. ### Personalizar Estilos: -- Colores principales: `rose-500` y `orange-500` -- Gradientes: `from-rose-500 to-orange-500` +- Colores principales: `brand-primary` (#85422b) y `brand-secondary` (#b45b38) +- Texto principal: `brand-text` (#1d1d1d) +- Gradientes: `from-brand-primary to-brand-secondary` - Tipografía: Sistema fonts optimizados ## 📋 Checklist de Configuración - [ ] ✅ Instalar dependencias -- [ ] ✅ Configurar variables de Airtable +- [ ] ✅ Configurar URL de API (VITE_API_URL) - [ ] ✅ Crear cuenta en MercadoPago - [ ] ✅ Obtener credenciales de MercadoPago - [ ] ✅ **ROTAR credenciales expuestas** (Ver sección Seguridad) @@ -231,15 +237,12 @@ Se realizó una auditoría completa de seguridad que identificó y corrigió vul **Las siguientes credenciales están expuestas y deben rotarse INMEDIATAMENTE:** -1. **Airtable API Key**: `patDvA7InUnb2X449.*` (PAT completa expuesta) -2. **Airtable Base ID**: `apprLGWcETltWUXpn` -3. **MercadoPago Public Key**: `APP_USR-0ce0eeab-*` (Key completa expuesta) -4. **MercadoPago Access Token**: `APP_USR-2637451468197049-*` (Token completo expuesto) +1. **MercadoPago Public Key**: `APP_USR-0ce0eeab-*` (Key completa expuesta) +2. **MercadoPago Access Token**: `APP_USR-2637451468197049-*` (Token completo expuesto) #### Pasos de Rotación CRÍTICOS: 1. **🔄 Rotar credenciales inmediatamente:** - - Airtable: [Personal Access Tokens](https://airtable.com/developers/web/api/personal-access-tokens) - MercadoPago: [Developer Panel](https://www.mercadopago.com.ar/developers/panel/credentials) 2. **🗑️ Eliminar archivo .env actual** después de la rotación @@ -249,7 +252,7 @@ Se realizó una auditoría completa de seguridad que identificó y corrigió vul 4. **⚙️ Configurar en Netlify Dashboard:** ``` MERCADOPAGO_ACCESS_TOKEN=nueva_token_rotado - ALLOWED_ORIGINS=https://amigurumi-de-ines.netlify.app,https://localhost:3000 + ALLOWED_ORIGINS=https://tienda-devschile.netlify.app,http://localhost:5173 NODE_ENV=production ``` @@ -281,10 +284,10 @@ Si tienes problemas con la integración de MercadoPago: ## 📄 Licencia -Proyecto privado - © 2025 Amigurumis de Inés. Todos los derechos reservados. +Proyecto privado - © 2025 Tienda devsChile. Todos los derechos reservados. --- **🎉 ¡Listo para recibir pagos reales con MercadoPago!** 💳 -**⚠️ RECORDATORIO**: Rotar credenciales expuestas antes del despliegue en producción. \ No newline at end of file +**⚠️ RECORDATORIO**: Rotar credenciales expuestas antes del despliegue en producción. diff --git a/actions/createPayment.ts b/actions/createPayment.ts index 62dd0ed..071a519 100644 --- a/actions/createPayment.ts +++ b/actions/createPayment.ts @@ -1,19 +1,36 @@ // Acción para crear pago en la pasarela -import { action } from '@uibakery/data'; -function createPayment() { - return action('createPayment', 'HTTP', { - datasourceName: 'httpApi', - options: { - method: 'POST', - url: '{{params?.paymentGatewayUrl}}', - headers: { - 'Content-Type': 'application/json', - }, - bodyType: 'object', - body: '{ amount: {{params?.amount}}, productName: {{params?.productName}}, currency: "CLP" }', +export const createPayment = async (amount: number, productName: string, productId: string) => { + // En desarrollo, usamos un mock según los requerimientos + if (import.meta.env.DEV) { + console.log('Utilizando mock de pago para desarrollo'); + // Simulamos un pequeño retraso de red + await new Promise(resolve => setTimeout(resolve, 800)); + + return { + success: true, + checkout_url: '/success.html' + }; + } + + // En producción, llamamos a la Netlify Function + const response = await fetch('/.netlify/functions/create-payment', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', }, + body: JSON.stringify({ + amount, + productName, + productId + }), }); -} + + if (!response.ok) { + throw new Error('Error al crear el pago en el servidor'); + } + + return response.json(); +}; export default createPayment; diff --git a/actions/loadProducts.ts b/actions/loadProducts.ts index 6d3c0e0..85810bf 100644 --- a/actions/loadProducts.ts +++ b/actions/loadProducts.ts @@ -1,4 +1,4 @@ -// Acción para cargar todos los productos activos desde Airtable +// Acción para cargar todos los productos activos desde la API import { action } from '@uibakery/data'; function loadProducts() { @@ -6,12 +6,12 @@ function loadProducts() { datasourceName: 'httpApi', options: { method: 'GET', - url: 'https://api.airtable.com/v0/{{params?.baseId}}/{{params?.tableName}}', + url: '{{params?.apiUrl}}/products', queryParams: { - filterByFormula: '{activo} = TRUE()', + activo: 'true', }, headers: { - Authorization: 'Bearer {{params?.apiKey}}', + 'Content-Type': 'application/json', }, }, }); diff --git a/app/app.tsx b/app/app.tsx index e327451..a37e410 100644 --- a/app/app.tsx +++ b/app/app.tsx @@ -6,24 +6,26 @@ import { ProductImageModal } from '@/components/ProductImageModal'; import { InfoModal } from '@/components/InfoModal'; import { Toaster } from '@/components/ui/toaster'; import { useToast } from '@/hooks/use-toast'; -import type { AirtableRecord, AirtableResponse } from '@/types/products'; -import { Info, Loader2, Heart, ShoppingBag, Sparkles } from 'lucide-react'; +import type { ProductRecord, ProductResponse } from '@/types/products'; +import { Info, Loader2, ShoppingBag, Sparkles } from 'lucide-react'; -const AIRTABLE_CONFIG = { - apiKey: import.meta.env.VITE_AIRTABLE_API_KEY, - baseId: import.meta.env.VITE_AIRTABLE_BASE_ID, - tableName: import.meta.env.VITE_AIRTABLE_TABLE_NAME, +import {productsMock as records} from "@/app/productsMock.ts"; +import logo from '@/images/devschile2026.png' +import createPayment from '@/actions/createPayment'; + +const API_CONFIG = { + apiUrl: import.meta.env.VITE_API_URL || 'https://api.example.com/v1', }; function App() { const { toast } = useToast(); - const [selectedProduct, setSelectedProduct] = useState(null); + const [selectedProduct, setSelectedProduct] = useState(null); const [imageModalOpen, setImageModalOpen] = useState(false); const [infoModalOpen, setInfoModalOpen] = useState(false); // Replace UIBakery hooks with standard React state - const [productsData, setProductsData] = useState(null); + const [productsData, setProductsData] = useState(null); const [loadingProducts, setLoadingProducts] = useState(true); const [errorProducts, setErrorProducts] = useState(null); const [loadingPayment, setLoadingPayment] = useState(false); @@ -35,80 +37,26 @@ function App() { setLoadingProducts(true); setErrorProducts(null); - // Simulate API call - replace with actual Airtable API call - const response = await fetch( - `https://api.airtable.com/v0/${AIRTABLE_CONFIG.baseId}/${AIRTABLE_CONFIG.tableName}`, - { - headers: { - 'Authorization': `Bearer ${AIRTABLE_CONFIG.apiKey}`, - }, - } - ); + // In development, use mock data + if (import.meta.env.DEV) { + console.log('Using mock products data for development'); + setProductsData({ records }); + return; + } + + const response = await fetch(`${API_CONFIG.apiUrl}/products`); if (!response.ok) { throw new Error('Failed to fetch products'); } - const data: AirtableResponse = await response.json(); + const data: ProductResponse = await response.json(); setProductsData(data); } catch (error) { console.error('Error loading products:', error); setErrorProducts('Error loading products'); - // For demo purposes, set some mock data - setProductsData({ - records: [ - { - id: 'rec1', - fields: { - id: 'rec1', - nombre: 'Amigurumi Osito', - precio: 25000, - descripcion: 'Adorable osito tejido a mano', - imagen_miniatura: [{ - id: 'img1', - url: 'https://via.placeholder.com/300x300?text=Osito', - filename: 'osito.jpg', - size: 12345, - type: 'image/jpeg' - }], - imagenes_grandes: [{ - id: 'img1', - url: 'https://via.placeholder.com/600x600?text=Osito+Grande', - filename: 'osito_grande.jpg', - size: 54321, - type: 'image/jpeg' - }], - activo: true - }, - createdTime: '2025-01-01T00:00:00.000Z' - }, - { - id: 'rec2', - fields: { - id: 'rec2', - nombre: 'Amigurumi Unicornio', - precio: 30000, - descripcion: 'Mágico unicornio multicolor', - imagen_miniatura: [{ - id: 'img2', - url: 'https://via.placeholder.com/300x300?text=Unicornio', - filename: 'unicornio.jpg', - size: 12345, - type: 'image/jpeg' - }], - imagenes_grandes: [{ - id: 'img2', - url: 'https://via.placeholder.com/600x600?text=Unicornio+Grande', - filename: 'unicornio_grande.jpg', - size: 54321, - type: 'image/jpeg' - }], - activo: false - }, - createdTime: '2025-01-01T00:00:00.000Z' - } - ] - }); + // Fallback to mock data + setProductsData({ records }); setErrorProducts(null); } finally { setLoadingProducts(false); @@ -118,12 +66,12 @@ function App() { loadProductsData(); }, []); - const handleImageClick = (product: AirtableRecord) => { + const handleImageClick = (product: ProductRecord) => { setSelectedProduct(product); setImageModalOpen(true); }; - const handleBuyClick = async (product: AirtableRecord) => { + const handleBuyClick = async (product: ProductRecord) => { try { setLoadingPayment(true); @@ -132,27 +80,15 @@ function App() { description: `Creando preferencia de pago para ${product.fields.nombre}...`, }); - // Call Netlify function to create MercadoPago payment - const response = await fetch('/.netlify/functions/create-payment', { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ - amount: product.fields.precio, - productName: product.fields.nombre, - productId: product.id - }), - }); - - if (!response.ok) { - throw new Error('Failed to create payment'); - } - - const data = await response.json(); + // Llamamos a la función referenciada para crear el pago + const data = await createPayment( + product.fields.precio, + product.fields.nombre, + product.id + ); if (!data.success || !data.checkout_url) { - throw new Error(data.error || 'Failed to get checkout URL'); + throw new Error(data.error || 'No se pudo obtener la URL de pago'); } toast({ @@ -181,31 +117,31 @@ function App() { const availableCount = availableProducts.length; return ( -
+
{/* Decorative elements */}
-
-
+
+
{/* Header */} -
+
-
- +
+
-

- Amigurumis de Inés +

+ Tienda devsChile

-

Hechos con amor y dedicación

+

[text]

)} {!loadingProducts && !errorProducts && allProducts.length === 0 && ( -
-
- +
+
+
-

- No hay amigurumis disponibles +

+ No hay productos disponibles

-

+

Pronto tendré nuevas creaciones disponibles. ¡Vuelve pronto!

@@ -273,15 +196,15 @@ function App() { {!loadingProducts && allProducts.length > 0 && ( <>
-

+

Mis Creaciones

-

- {availableCount} {availableCount === 1 ? 'amigurumi' : 'amigurumis'} disponibles +

+ {availableCount} {availableCount === 1 ? 'producto' : 'productos'} disponible{availableCount === 1 ? '' : 's'}

-

- {totalCount} {totalCount === 1 ? 'amigurumi hecho' : 'amigurumis hechos'} en total +

+ {totalCount} {totalCount === 1 ? 'producto hecho' : 'productos hechos'} en total

@@ -300,14 +223,13 @@ function App() { {/* Footer */} -
+
-

- © 2025 Amigurumis de Inés. Todos los derechos reservados. +

+ © {new Date().getFullYear()} Tienda devsChile. Todos los derechos reservados.

-

- Hecho con ❤️ y mucho cariño +

diff --git a/app/productsMock.ts b/app/productsMock.ts new file mode 100644 index 0000000..1c1eae8 --- /dev/null +++ b/app/productsMock.ts @@ -0,0 +1,52 @@ +export const productsMock = [ + { + id: 'rec1', + fields: { + id: 'rec1', + nombre: 'Producto Osito', + precio: 25000, + descripcion: 'Adorable osito tejido a mano', + imagen_miniatura: [{ + id: 'img1', + url: 'https://via.placeholder.com/300x300?text=Osito', + filename: 'osito.jpg', + size: 12345, + type: 'image/jpeg' + }], + imagenes_grandes: [{ + id: 'img1', + url: 'https://via.placeholder.com/600x600?text=Osito+Grande', + filename: 'osito_grande.jpg', + size: 54321, + type: 'image/jpeg' + }], + activo: true + }, + createdTime: '2025-01-01T00:00:00.000Z' + }, + { + id: 'rec2', + fields: { + id: 'rec2', + nombre: 'Producto Unicornio', + precio: 30000, + descripcion: 'Mágico unicornio multicolor', + imagen_miniatura: [{ + id: 'img2', + url: 'https://via.placeholder.com/300x300?text=Unicornio', + filename: 'unicornio.jpg', + size: 12345, + type: 'image/jpeg' + }], + imagenes_grandes: [{ + id: 'img2', + url: 'https://via.placeholder.com/600x600?text=Unicornio+Grande', + filename: 'unicornio_grande.jpg', + size: 54321, + type: 'image/jpeg' + }], + activo: false + }, + createdTime: '2025-01-01T00:00:00.000Z' + } +] diff --git a/components/InfoModal.tsx b/components/InfoModal.tsx index 72b1a87..cd565ba 100644 --- a/components/InfoModal.tsx +++ b/components/InfoModal.tsx @@ -15,44 +15,43 @@ interface InfoModalProps { export function InfoModal({ open, onOpenChange }: InfoModalProps) { return ( - + - - Sobre Amigurumis de Inés + + Sobre Tienda devsChile {/* Mobile layout - stacked */}
-
+
Amigurumis de Inés
-
+
-

Hecho con Amor

-

- Cada pieza es creada con amor y dedicación. Mis amigurumis son únicos y especiales, - perfectos para regalar o decorar tu hogar con calidez. +

Hecho con Amor

+

+ [xxx]

-
+
-

Técnica Artesanal

-

+

Técnica Artesanal

+

Utilizo técnicas tradicionales de crochet con materiales de alta calidad para garantizar productos duraderos y hermosos que perdurarán en el tiempo.

@@ -60,20 +59,20 @@ export function InfoModal({ open, onOpenChange }: InfoModalProps) {
-
+
-

Piezas Únicas

-

+

Piezas Únicas

+

Cada creación tiene pequeñas variaciones que la hacen única. - No encontrarás dos amigurumis exactamente iguales, ¡eso es parte de su magia! + No encontrarás dos productos exactamente iguales, ¡eso es parte de su magia!

-
+

¡Gracias por apoyar el arte hecho a mano! 💕

@@ -85,25 +84,25 @@ export function InfoModal({ open, onOpenChange }: InfoModalProps) { {/* Left column - Text content */}
-
+
-

Hecho con Amor

-

- Cada pieza es creada con amor y dedicación. Mis amigurumis son únicos y especiales, +

Hecho con Amor

+

+ Cada pieza es creada con amor y dedicación. Mis productos son únicos y especiales, perfectos para regalar o decorar tu hogar con calidez.

-
+
-

Técnica Artesanal

-

+

Técnica Artesanal

+

Utilizo técnicas tradicionales de crochet con materiales de alta calidad para garantizar productos duraderos y hermosos que perdurarán en el tiempo.

@@ -111,19 +110,19 @@ export function InfoModal({ open, onOpenChange }: InfoModalProps) {
-
+
-

Piezas Únicas

-

+

Piezas Únicas

+

Cada creación tiene pequeñas variaciones que la hacen única. - No encontrarás dos amigurumis exactamente iguales, ¡eso es parte de su magia! + No encontrarás dos productos exactamente iguales, ¡eso es parte de su magia!

-
+

¡Gracias por apoyar el arte hecho a mano! 💕

@@ -132,10 +131,10 @@ export function InfoModal({ open, onOpenChange }: InfoModalProps) { {/* Right column - Image */}
-
+
Amigurumis de Inés
diff --git a/components/ProductCard.tsx b/components/ProductCard.tsx index cbe8464..36f0705 100644 --- a/components/ProductCard.tsx +++ b/components/ProductCard.tsx @@ -1,14 +1,14 @@ // Componente mejorado para mostrar productos import { Card, CardContent, CardFooter } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; -import type { AirtableRecord } from '@/types/products'; +import type { ProductRecord } from '@/types/products'; import { ShoppingCart, Eye, Sparkles } from 'lucide-react'; import { useState } from 'react'; interface ProductCardProps { - product: AirtableRecord; - onImageClick: (product: AirtableRecord) => void; - onBuyClick: (product: AirtableRecord) => void; + product: ProductRecord; + onImageClick: (product: ProductRecord) => void; + onBuyClick: (product: ProductRecord) => void; } export function ProductCard({ product, onImageClick, onBuyClick }: ProductCardProps) { @@ -28,13 +28,13 @@ export function ProductCard({ product, onImageClick, onBuyClick }: ProductCardPr return ( setIsHovered(true)} onMouseLeave={() => setIsHovered(false)} >
onImageClick(product)} > { e.stopPropagation(); onImageClick(product); @@ -73,16 +73,16 @@ export function ProductCard({ product, onImageClick, onBuyClick }: ProductCardPr
-

+

{nombre}

-

+

{descripcion}

-

Precio

-

+

Precio

+

{formatPrice(precio)}

@@ -94,8 +94,8 @@ export function ProductCard({ product, onImageClick, onBuyClick }: ProductCardPr
)} {images.length > 1 && ( -
+
{currentIndex + 1} / {images.length}
)}
-
-

{product.fields.descripcion}

+
+

{product.fields.descripcion}

diff --git a/images/devschile2026.png b/images/devschile2026.png new file mode 100644 index 0000000000000000000000000000000000000000..fef910d6db3ce1fc63cc3c9dd1975d185a8236f4 GIT binary patch literal 27153 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 D9+?cg literal 0 HcmV?d00001 diff --git a/index.html b/index.html index 02ef4a0..d34620d 100644 --- a/index.html +++ b/index.html @@ -4,10 +4,10 @@ - Amigurumis de Inés - Creaciones Únicas + Tienda devsChile - Creaciones Únicas
- \ No newline at end of file + diff --git a/netlify/functions/create-payment.js b/netlify/functions/create-payment.js index e2f6612..e196b2b 100644 --- a/netlify/functions/create-payment.js +++ b/netlify/functions/create-payment.js @@ -5,7 +5,7 @@ exports.handler = async (event, context) => { // Get allowed origins from environment (should be set in Netlify) const allowedOrigins = process.env.ALLOWED_ORIGINS ? process.env.ALLOWED_ORIGINS.split(',') - : ['https://amigurumi-de-ines.netlify.app']; + : ['https://tienda-devschile.netlify.app']; const origin = event.headers.origin || event.headers.Origin || ''; const isAllowedOrigin = allowedOrigins.includes(origin) || allowedOrigins.includes('*'); @@ -116,16 +116,16 @@ exports.handler = async (event, context) => { const sanitizedProductId = productId ? String(productId).substring(0, 50).replace(/[<>]/g, '') : null; // Get site URL from environment - const siteUrl = process.env.URL || process.env.SITE_URL || 'https://amigurumi-de-ines.netlify.app'; + const siteUrl = process.env.URL || process.env.SITE_URL || 'https://tienda-devschile.netlify.app'; // Create payment preference with enhanced security const preference = { items: [ { - id: sanitizedProductId || `amigurumi-${Date.now()}`, + id: sanitizedProductId || `producto-${Date.now()}`, title: sanitizedProductName, - description: `Amigurumi: ${sanitizedProductName}`, - unit_price: numericAmount, + description: `Producto: ${sanitizedProductName}`, + unit_price: Math.round(numericAmount), currency_id: 'CLP', quantity: 1, category_id: 'handmade' @@ -140,9 +140,9 @@ exports.handler = async (event, context) => { installments: 1 // Limit to single payment for simplicity }, back_urls: { - success: `${siteUrl}/success`, - failure: `${siteUrl}/failure`, - pending: `${siteUrl}/pending` + success: `${siteUrl}/success.html`, + failure: `${siteUrl}/failure.html`, + pending: `${siteUrl}/pending.html` }, auto_return: 'approved', expires: false, @@ -190,4 +190,4 @@ exports.handler = async (event, context) => { }) }; } -}; \ No newline at end of file +}; diff --git a/netlify/functions/package.json b/netlify/functions/package.json index 94a573d..54fc7c2 100644 --- a/netlify/functions/package.json +++ b/netlify/functions/package.json @@ -1,9 +1,9 @@ { - "name": "amigurumis-functions", + "name": "productos-functions", "version": "1.0.0", - "description": "Netlify Functions for Amigurumis de Inés", + "description": "Netlify Functions for Tienda devsChile", "main": "create-payment.js", "dependencies": { "mercadopago": "^1.5.17" } -} \ No newline at end of file +} diff --git a/package-lock.json b/package-lock.json index f238fd5..ebc1e04 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,11 +1,11 @@ { - "name": "amigurumis-ines", + "name": "tienda-devschile", "version": "1.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "amigurumis-ines", + "name": "tienda-devschile", "version": "1.0.0", "dependencies": { "@mercadopago/sdk-react": "^0.0.18", @@ -14,40 +14,39 @@ "@radix-ui/react-slot": "^1.2.3", "@radix-ui/react-toast": "^1.2.15", "@uibakery/data": "0.0.8", + "@vitejs/plugin-react": "^4.3.3", + "autoprefixer": "10.4.20", "canvas-confetti": "1.9.3", "class-variance-authority": "0.7.0", "clsx": "2.1.1", "lucide-react": "0.446.0", "mercadopago": "^1.5.17", + "postcss": "8.4.47", "react": "18.3.1", "react-day-picker": "^9.7.0", "react-dom": "18.3.1", "react-icons": "~5.5.0", - "tailwind-merge": "2.5.2" + "tailwind-merge": "2.5.2", + "tailwindcss": "3.4.13", + "vite": "^5.4.8" }, "devDependencies": { "@eslint/js": "9.11.1", "@types/node": "22.7.3", "@types/react": "18.3.9", "@types/react-dom": "18.3.0", - "@vitejs/plugin-react": "^4.3.3", - "autoprefixer": "10.4.20", "eslint": "9.11.1", "eslint-plugin-react-hooks": "5.1.0-rc.0", "eslint-plugin-react-refresh": "0.4.12", "globals": "15.9.0", - "postcss": "8.4.47", - "tailwindcss": "3.4.13", "typescript": "5.5.3", - "typescript-eslint": "8.7.0", - "vite": "^5.4.8" + "typescript-eslint": "8.7.0" } }, "node_modules/@alloc/quick-lru": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -60,7 +59,6 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", @@ -75,7 +73,6 @@ "version": "7.28.4", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.4.tgz", "integrity": "sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -85,7 +82,6 @@ "version": "7.28.4", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz", "integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==", - "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.27.1", @@ -116,7 +112,6 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -126,7 +121,6 @@ "version": "7.28.3", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz", "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==", - "dev": true, "license": "MIT", "dependencies": { "@babel/parser": "^7.28.3", @@ -143,7 +137,6 @@ "version": "7.27.2", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", - "dev": true, "license": "MIT", "dependencies": { "@babel/compat-data": "^7.27.2", @@ -160,7 +153,6 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, "license": "ISC", "dependencies": { "yallist": "^3.0.2" @@ -170,7 +162,6 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -180,7 +171,6 @@ "version": "7.28.0", "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -190,7 +180,6 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", - "dev": true, "license": "MIT", "dependencies": { "@babel/traverse": "^7.27.1", @@ -204,7 +193,6 @@ "version": "7.28.3", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.27.1", @@ -222,7 +210,6 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -232,7 +219,6 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -242,7 +228,6 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -252,7 +237,6 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -262,7 +246,6 @@ "version": "7.28.4", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", - "dev": true, "license": "MIT", "dependencies": { "@babel/template": "^7.27.2", @@ -276,7 +259,6 @@ "version": "7.28.4", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz", "integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==", - "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.28.4" @@ -292,7 +274,6 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -308,7 +289,6 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -324,7 +304,6 @@ "version": "7.27.2", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", - "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.27.1", @@ -339,7 +318,6 @@ "version": "7.28.4", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz", "integrity": "sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==", - "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.27.1", @@ -358,7 +336,6 @@ "version": "7.28.4", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz", "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.27.1", @@ -381,7 +358,6 @@ "cpu": [ "ppc64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -398,7 +374,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -415,7 +390,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -432,7 +406,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -449,7 +422,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -466,7 +438,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -483,7 +454,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -500,7 +470,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -517,7 +486,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -534,7 +502,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -551,7 +518,6 @@ "cpu": [ "ia32" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -568,7 +534,6 @@ "cpu": [ "loong64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -585,7 +550,6 @@ "cpu": [ "mips64el" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -602,7 +566,6 @@ "cpu": [ "ppc64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -619,7 +582,6 @@ "cpu": [ "riscv64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -636,7 +598,6 @@ "cpu": [ "s390x" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -653,7 +614,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -670,7 +630,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -687,7 +646,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -704,7 +662,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -721,7 +678,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -738,7 +694,6 @@ "cpu": [ "ia32" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -755,7 +710,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -948,7 +902,6 @@ "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, "license": "ISC", "dependencies": { "string-width": "^5.1.2", @@ -966,7 +919,6 @@ "version": "6.2.2", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -979,7 +931,6 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", - "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" @@ -995,7 +946,6 @@ "version": "0.3.13", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", @@ -1006,7 +956,6 @@ "version": "2.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", @@ -1017,7 +966,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.0.0" @@ -1027,14 +975,12 @@ "version": "1.5.5", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "dev": true, "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.31", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -1064,7 +1010,6 @@ "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", @@ -1078,7 +1023,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, "license": "MIT", "engines": { "node": ">= 8" @@ -1088,7 +1032,6 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", @@ -1102,7 +1045,6 @@ "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, "license": "MIT", "optional": true, "engines": { @@ -1536,7 +1478,6 @@ "version": "1.0.0-beta.27", "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz", "integrity": "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==", - "dev": true, "license": "MIT" }, "node_modules/@rollup/rollup-android-arm-eabi": { @@ -1546,7 +1487,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1560,7 +1500,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1574,7 +1513,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1588,7 +1526,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1602,7 +1539,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1616,7 +1552,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1630,7 +1565,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1644,7 +1578,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1658,7 +1591,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1672,7 +1604,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1686,7 +1617,6 @@ "cpu": [ "loong64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1700,7 +1630,6 @@ "cpu": [ "ppc64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1714,7 +1643,6 @@ "cpu": [ "riscv64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1728,7 +1656,6 @@ "cpu": [ "riscv64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1742,7 +1669,6 @@ "cpu": [ "s390x" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1756,7 +1682,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1770,7 +1695,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1784,7 +1708,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1798,7 +1721,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1812,7 +1734,6 @@ "cpu": [ "ia32" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1826,7 +1747,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1840,7 +1760,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1851,7 +1770,6 @@ "version": "7.20.5", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dev": true, "license": "MIT", "dependencies": { "@babel/parser": "^7.20.7", @@ -1865,7 +1783,6 @@ "version": "7.27.0", "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", - "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.0.0" @@ -1875,7 +1792,6 @@ "version": "7.4.4", "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, "license": "MIT", "dependencies": { "@babel/parser": "^7.1.0", @@ -1886,7 +1802,6 @@ "version": "7.28.0", "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", - "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.28.2" @@ -1896,7 +1811,6 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", - "dev": true, "license": "MIT" }, "node_modules/@types/json-schema": { @@ -1910,7 +1824,7 @@ "version": "22.7.3", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.3.tgz", "integrity": "sha512-qXKfhXXqGTyBskvWEzJZPUxSslAiLaB6JGP1ic/XTH9ctGgzdgYguuLP1C601aRTSDNlLb0jbKqXjZ48GNraSA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "undici-types": "~6.19.2" @@ -2183,7 +2097,6 @@ "version": "4.7.0", "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz", "integrity": "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==", - "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.28.0", @@ -2243,7 +2156,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -2253,7 +2165,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -2269,14 +2180,12 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "dev": true, "license": "MIT" }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", @@ -2290,7 +2199,6 @@ "version": "5.0.2", "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "dev": true, "license": "MIT" }, "node_modules/argparse": { @@ -2340,7 +2248,6 @@ "version": "10.4.20", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", - "dev": true, "funding": [ { "type": "opencollective", @@ -2393,14 +2300,12 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, "license": "MIT" }, "node_modules/baseline-browser-mapping": { "version": "2.8.13", "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.13.tgz", "integrity": "sha512-7s16KR8io8nIBWQyCYhmFhd+ebIzb9VKTzki+wOJXHTxTnV6+mFGH3+Jwn1zoKaY9/H9T/0BcKCZnzXljPnpSQ==", - "dev": true, "license": "Apache-2.0", "bin": { "baseline-browser-mapping": "dist/cli.js" @@ -2419,7 +2324,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -2449,7 +2353,6 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, "license": "MIT", "dependencies": { "fill-range": "^7.1.1" @@ -2462,7 +2365,6 @@ "version": "4.26.3", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.26.3.tgz", "integrity": "sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w==", - "dev": true, "funding": [ { "type": "opencollective", @@ -2506,7 +2408,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "dev": true, "license": "MIT", "engines": { "node": ">= 6" @@ -2516,7 +2417,6 @@ "version": "1.0.30001749", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001749.tgz", "integrity": "sha512-0rw2fJOmLfnzCRbkm8EyHL8SvI2Apu5UbnQuTsJ0ClgrH8hcwFooJ1s5R0EP8o8aVrFu8++ae29Kt9/gZAZp/Q==", - "dev": true, "funding": [ { "type": "opencollective", @@ -2570,7 +2470,6 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, "license": "MIT", "dependencies": { "anymatch": "~3.1.2", @@ -2595,7 +2494,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, "license": "ISC", "dependencies": { "is-glob": "^4.0.1" @@ -2638,7 +2536,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -2651,7 +2548,6 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, "license": "MIT" }, "node_modules/combined-stream": { @@ -2670,7 +2566,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true, "license": "MIT", "engines": { "node": ">= 6" @@ -2687,7 +2582,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, "license": "MIT" }, "node_modules/core-util-is": { @@ -2700,7 +2594,6 @@ "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, "license": "MIT", "dependencies": { "path-key": "^3.1.0", @@ -2715,7 +2608,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, "license": "MIT", "bin": { "cssesc": "bin/cssesc" @@ -2769,7 +2661,6 @@ "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "dev": true, "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -2809,21 +2700,18 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true, "license": "Apache-2.0" }, "node_modules/dlv": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true, "license": "MIT" }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true, "license": "MIT" }, "node_modules/ecc-jsbn": { @@ -2840,21 +2728,18 @@ "version": "1.5.233", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.233.tgz", "integrity": "sha512-iUdTQSf7EFXsDdQsp8MwJz5SVk4APEFqXU/S47OtQ0YLqacSwPXdZ5vRlMX3neb07Cy2vgioNuRnWUXFwuslkg==", - "dev": true, "license": "ISC" }, "node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, "license": "MIT" }, "node_modules/esbuild": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", - "dev": true, "hasInstallScript": true, "license": "MIT", "bin": { @@ -2893,7 +2778,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -3117,7 +3001,6 @@ "version": "3.3.3", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", - "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -3134,7 +3017,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, "license": "ISC", "dependencies": { "is-glob": "^4.0.1" @@ -3160,7 +3042,6 @@ "version": "1.19.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", - "dev": true, "license": "ISC", "dependencies": { "reusify": "^1.0.4" @@ -3183,7 +3064,6 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" @@ -3234,7 +3114,6 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", - "dev": true, "license": "ISC", "dependencies": { "cross-spawn": "^7.0.6", @@ -3274,7 +3153,6 @@ "version": "4.3.7", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", - "dev": true, "license": "MIT", "engines": { "node": "*" @@ -3288,7 +3166,6 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, "hasInstallScript": true, "license": "MIT", "optional": true, @@ -3303,7 +3180,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3313,7 +3189,6 @@ "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -3341,7 +3216,6 @@ "version": "10.4.5", "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "dev": true, "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", @@ -3362,7 +3236,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, "license": "ISC", "dependencies": { "is-glob": "^4.0.3" @@ -3375,7 +3248,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" @@ -3385,7 +3257,6 @@ "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" @@ -3454,7 +3325,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, "license": "MIT", "dependencies": { "function-bind": "^1.1.2" @@ -3519,7 +3389,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" @@ -3532,7 +3401,6 @@ "version": "2.16.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "dev": true, "license": "MIT", "dependencies": { "hasown": "^2.0.2" @@ -3548,7 +3416,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -3558,7 +3425,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3568,7 +3434,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" @@ -3581,7 +3446,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.12.0" @@ -3607,7 +3471,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, "license": "ISC" }, "node_modules/isstream": { @@ -3620,7 +3483,6 @@ "version": "3.4.3", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" @@ -3636,7 +3498,6 @@ "version": "1.21.7", "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", - "dev": true, "license": "MIT", "bin": { "jiti": "bin/jiti.js" @@ -3671,7 +3532,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "dev": true, "license": "MIT", "bin": { "jsesc": "bin/jsesc" @@ -3716,7 +3576,6 @@ "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, "license": "MIT", "bin": { "json5": "lib/cli.js" @@ -3768,7 +3627,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -3778,7 +3636,6 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true, "license": "MIT" }, "node_modules/locate-path": { @@ -3832,7 +3689,6 @@ "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, "license": "ISC" }, "node_modules/lucide-react": { @@ -3861,7 +3717,6 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, "license": "MIT", "engines": { "node": ">= 8" @@ -3871,7 +3726,6 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, "license": "MIT", "dependencies": { "braces": "^3.0.3", @@ -3919,7 +3773,6 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" @@ -3929,14 +3782,12 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, "license": "MIT" }, "node_modules/mz": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dev": true, "license": "MIT", "dependencies": { "any-promise": "^1.0.0", @@ -3948,7 +3799,6 @@ "version": "3.3.11", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", - "dev": true, "funding": [ { "type": "github", @@ -3974,14 +3824,12 @@ "version": "2.0.23", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.23.tgz", "integrity": "sha512-cCmFDMSm26S6tQSDpBCg/NR8NENrVPhAJSf+XbxBG4rPFaaonlEoE9wHQmun+cls499TQGSb7ZyPBRlzgKfpeg==", - "dev": true, "license": "MIT" }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -3991,7 +3839,6 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -4010,7 +3857,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -4020,7 +3866,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "dev": true, "license": "MIT", "engines": { "node": ">= 6" @@ -4080,7 +3925,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "dev": true, "license": "BlueOak-1.0.0" }, "node_modules/parent-module": { @@ -4110,7 +3954,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -4120,14 +3963,12 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true, "license": "MIT" }, "node_modules/path-scurry": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^10.2.0", @@ -4150,14 +3991,12 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true, "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, "license": "MIT", "engines": { "node": ">=8.6" @@ -4170,7 +4009,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -4180,7 +4018,6 @@ "version": "4.0.7", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", - "dev": true, "license": "MIT", "engines": { "node": ">= 6" @@ -4190,7 +4027,6 @@ "version": "8.4.47", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", - "dev": true, "funding": [ { "type": "opencollective", @@ -4219,7 +4055,6 @@ "version": "15.1.0", "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", - "dev": true, "license": "MIT", "dependencies": { "postcss-value-parser": "^4.0.0", @@ -4237,7 +4072,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.1.0.tgz", "integrity": "sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==", - "dev": true, "funding": [ { "type": "opencollective", @@ -4263,7 +4097,6 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", - "dev": true, "funding": [ { "type": "opencollective", @@ -4299,7 +4132,6 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", - "dev": true, "license": "MIT", "engines": { "node": ">=14" @@ -4312,7 +4144,6 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", - "dev": true, "funding": [ { "type": "opencollective", @@ -4338,7 +4169,6 @@ "version": "6.1.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", - "dev": true, "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -4352,7 +4182,6 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true, "license": "MIT" }, "node_modules/prelude-ls": { @@ -4405,7 +4234,6 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, "funding": [ { "type": "github", @@ -4481,7 +4309,6 @@ "version": "0.17.0", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz", "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -4560,7 +4387,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "dev": true, "license": "MIT", "dependencies": { "pify": "^2.3.0" @@ -4570,7 +4396,6 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, "license": "MIT", "dependencies": { "picomatch": "^2.2.1" @@ -4653,7 +4478,6 @@ "version": "1.22.10", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", - "dev": true, "license": "MIT", "dependencies": { "is-core-module": "^2.16.0", @@ -4684,7 +4508,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", - "dev": true, "license": "MIT", "engines": { "iojs": ">=1.0.0", @@ -4695,7 +4518,6 @@ "version": "4.52.4", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.52.4.tgz", "integrity": "sha512-CLEVl+MnPAiKh5pl4dEWSyMTpuflgNQiLGhMv8ezD5W/qP8AKvmYpCOKRRNOh7oRKnauBZ4SyeYkMS+1VSyKwQ==", - "dev": true, "license": "MIT", "dependencies": { "@types/estree": "1.0.8" @@ -4737,7 +4559,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, "funding": [ { "type": "github", @@ -4809,7 +4630,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" @@ -4822,7 +4642,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -4832,7 +4651,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, "license": "ISC", "engines": { "node": ">=14" @@ -4845,7 +4663,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -4880,7 +4697,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", @@ -4899,7 +4715,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", @@ -4914,14 +4729,12 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, "license": "MIT" }, "node_modules/string-width/node_modules/ansi-regex": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -4934,7 +4747,6 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", - "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" @@ -4950,7 +4762,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" @@ -4964,7 +4775,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" @@ -4990,7 +4800,6 @@ "version": "3.35.0", "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.2", @@ -5026,7 +4835,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -5049,7 +4857,6 @@ "version": "3.4.13", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.13.tgz", "integrity": "sha512-KqjHOJKogOUt5Bs752ykCeiwvi0fKVkr5oqsFNt/8px/tA8scFPIlkygsf6jXrfCqGHz7VflA6+yytWuM+XhFw==", - "dev": true, "license": "MIT", "dependencies": { "@alloc/quick-lru": "^5.2.0", @@ -5094,7 +4901,6 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "dev": true, "license": "MIT", "dependencies": { "any-promise": "^1.0.0" @@ -5104,7 +4910,6 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", - "dev": true, "license": "MIT", "dependencies": { "thenify": ">= 3.1.0 < 4" @@ -5117,7 +4922,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, "license": "MIT", "dependencies": { "is-number": "^7.0.0" @@ -5156,7 +4960,6 @@ "version": "0.1.13", "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", - "dev": true, "license": "Apache-2.0" }, "node_modules/tslib": { @@ -5238,14 +5041,13 @@ "version": "6.19.8", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/update-browserslist-db": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", - "dev": true, "funding": [ { "type": "opencollective", @@ -5328,7 +5130,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true, "license": "MIT" }, "node_modules/uuid": { @@ -5359,7 +5160,6 @@ "version": "5.4.20", "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.20.tgz", "integrity": "sha512-j3lYzGC3P+B5Yfy/pfKNgVEg4+UtcIJcVRt2cDjIOmhLourAqPqf8P7acgxeiSgUB7E3p2P8/3gNIgDLpwzs4g==", - "dev": true, "license": "MIT", "dependencies": { "esbuild": "^0.21.3", @@ -5419,7 +5219,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, "license": "ISC", "dependencies": { "isexe": "^2.0.0" @@ -5445,7 +5244,6 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^6.1.0", @@ -5464,7 +5262,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -5482,14 +5279,12 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, "license": "MIT" }, "node_modules/wrap-ansi-cjs/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", @@ -5504,7 +5299,6 @@ "version": "6.2.2", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -5517,7 +5311,6 @@ "version": "6.2.3", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", - "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -5530,7 +5323,6 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", - "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" @@ -5546,14 +5338,12 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, "license": "ISC" }, "node_modules/yaml": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.1.tgz", "integrity": "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==", - "dev": true, "license": "ISC", "bin": { "yaml": "bin.mjs" diff --git a/package.json b/package.json index 8764f8a..c9b5763 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { - "name": "amigurumis-ines", - "packageManager": "npm", + "name": "tienda-devschile", + "packageManager": "npm@11.11.1", "private": true, "version": "1.0.0", "type": "module", diff --git a/failure.html b/public/failure.html similarity index 90% rename from failure.html rename to public/failure.html index 19c8bb1..4050f73 100644 --- a/failure.html +++ b/public/failure.html @@ -3,7 +3,7 @@ - Pago Fallido - Amigurumis de Inés + Pago Fallido - Tienda devsChile @@ -72,4 +72,4 @@

Pago No Completado

- \ No newline at end of file + diff --git a/pending.html b/public/pending.html similarity index 91% rename from pending.html rename to public/pending.html index f0e927a..d38cc2a 100644 --- a/pending.html +++ b/public/pending.html @@ -3,7 +3,7 @@ - Pago Pendiente - Amigurumis de Inés + Pago Pendiente - Tienda devsChile