From 2ae94a679f5826b35df764860b74a4d1d45e5d56 Mon Sep 17 00:00:00 2001 From: rckrdmrd Date: Sat, 17 Jan 2026 05:21:30 -0600 Subject: [PATCH] fix: Corregir errores TypeScript y agregar dependencias i18n - Agregar dependencias: i18next, react-i18next, i18next-browser-languagedetector - Eliminar imports no utilizados (Search, Filter) - Eliminar variables no utilizadas (refetch, generateCodeMutation) - Renombrar params no usados con underscore (_supplier, _onRemove) Build ahora pasa sin errores. Co-Authored-By: Claude Opus 4.5 --- package-lock.json | 175 ++++++++++++++++++++++++++++- package.json | 5 +- src/components/payments/CodiQR.tsx | 2 +- src/pages/Invoices.tsx | 1 - src/pages/Marketplace.tsx | 5 +- src/pages/Referrals.tsx | 10 +- 6 files changed, 181 insertions(+), 17 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3a41f7d..b8f19c0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,13 +11,17 @@ "@tanstack/react-query": "^5.90.16", "axios": "^1.13.2", "clsx": "^2.1.1", + "i18next": "^25.7.4", + "i18next-browser-languagedetector": "^8.2.0", "lucide-react": "^0.562.0", "react": "^19.2.0", "react-dom": "^19.2.0", + "react-i18next": "^16.5.3", "react-router-dom": "^7.11.0" }, "devDependencies": { "@eslint/js": "^9.39.1", + "@playwright/test": "^1.50.1", "@tailwindcss/forms": "^0.5.11", "@tailwindcss/postcss": "^4.1.18", "@types/node": "^24.10.1", @@ -284,6 +288,15 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/runtime": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.6.tgz", + "integrity": "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/template": { "version": "7.27.2", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", @@ -1033,6 +1046,22 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@playwright/test": { + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.57.0.tgz", + "integrity": "sha512-6TyEnHgd6SArQO8UO2OMTxshln3QMWBtPGrOCgs3wVEmQmwyuNtB10IZMfmYDE0riwNR1cu4q+pPcxMVtaG3TA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright": "1.57.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/@rolldown/pluginutils": { "version": "1.0.0-beta.53", "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.53.tgz", @@ -3068,6 +3097,56 @@ "hermes-estree": "0.25.1" } }, + "node_modules/html-parse-stringify": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz", + "integrity": "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==", + "license": "MIT", + "dependencies": { + "void-elements": "3.1.0" + } + }, + "node_modules/i18next": { + "version": "25.7.4", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-25.7.4.tgz", + "integrity": "sha512-hRkpEblXXcXSNbw8mBNq9042OEetgyB/ahc/X17uV/khPwzV+uB8RHceHh3qavyrkPJvmXFKXME2Sy1E0KjAfw==", + "funding": [ + { + "type": "individual", + "url": "https://locize.com" + }, + { + "type": "individual", + "url": "https://locize.com/i18next.html" + }, + { + "type": "individual", + "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.28.4" + }, + "peerDependencies": { + "typescript": "^5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/i18next-browser-languagedetector": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-8.2.0.tgz", + "integrity": "sha512-P+3zEKLnOF0qmiesW383vsLdtQVyKtCNA9cjSoKCppTKPQVfKd2W8hbVo5ZhNJKDqeM7BOcvNoKJOjpHh4Js9g==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.23.2" + } + }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -3141,7 +3220,6 @@ "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", "dev": true, "license": "MIT", - "peer": true, "bin": { "jiti": "lib/jiti-cli.mjs" } @@ -3243,7 +3321,6 @@ "integrity": "sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==", "dev": true, "license": "MPL-2.0", - "peer": true, "dependencies": { "detect-libc": "^2.0.3" }, @@ -3748,6 +3825,53 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/playwright": { + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.57.0.tgz", + "integrity": "sha512-ilYQj1s8sr2ppEJ2YVadYBN0Mb3mdo9J0wQ+UuDhzYqURwSoW4n1Xs5vs7ORwgDGmyEh33tRMeS8KhdkMoLXQw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.57.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.57.0.tgz", + "integrity": "sha512-agTcKlMw/mjBWOnD6kFZttAAGHgi/Nw0CZ2o6JqWSbMlI219lAFLZZCyqByTsvVAJq5XA5H8cA6PrvBRpBWEuQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/playwright/node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/postcss": { "version": "8.5.6", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", @@ -3834,6 +3958,33 @@ "react": "^19.2.3" } }, + "node_modules/react-i18next": { + "version": "16.5.3", + "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-16.5.3.tgz", + "integrity": "sha512-fo+/NNch37zqxOzlBYrWMx0uy/yInPkRfjSuy4lqKdaecR17nvCHnEUt3QyzA8XjQ2B/0iW/5BhaHR3ZmukpGw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.4", + "html-parse-stringify": "^3.0.1", + "use-sync-external-store": "^1.6.0" + }, + "peerDependencies": { + "i18next": ">= 25.6.2", + "react": ">= 16.8.0", + "typescript": "^5" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, "node_modules/react-refresh": { "version": "0.18.0", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.18.0.tgz", @@ -4084,7 +4235,7 @@ "version": "5.9.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", - "dev": true, + "devOptional": true, "license": "Apache-2.0", "peer": true, "bin": { @@ -4167,6 +4318,15 @@ "punycode": "^2.1.0" } }, + "node_modules/use-sync-external-store": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", + "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/vite": { "version": "7.3.0", "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.0.tgz", @@ -4243,6 +4403,15 @@ } } }, + "node_modules/void-elements": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", + "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", diff --git a/package.json b/package.json index b76509f..a4eb309 100644 --- a/package.json +++ b/package.json @@ -17,14 +17,17 @@ "@tanstack/react-query": "^5.90.16", "axios": "^1.13.2", "clsx": "^2.1.1", + "i18next": "^25.7.4", + "i18next-browser-languagedetector": "^8.2.0", "lucide-react": "^0.562.0", "react": "^19.2.0", "react-dom": "^19.2.0", + "react-i18next": "^16.5.3", "react-router-dom": "^7.11.0" }, "devDependencies": { - "@playwright/test": "^1.50.1", "@eslint/js": "^9.39.1", + "@playwright/test": "^1.50.1", "@tailwindcss/forms": "^0.5.11", "@tailwindcss/postcss": "^4.1.18", "@types/node": "^24.10.1", diff --git a/src/components/payments/CodiQR.tsx b/src/components/payments/CodiQR.tsx index 7416066..7fa5df7 100644 --- a/src/components/payments/CodiQR.tsx +++ b/src/components/payments/CodiQR.tsx @@ -23,7 +23,7 @@ export function CodiQR({ amount, description, saleId, onSuccess, onCancel }: Cod }, }); - const { data: status, refetch } = useQuery({ + const { data: status } = useQuery({ queryKey: ['codi-status', transactionId], queryFn: async () => { if (!transactionId) return null; diff --git a/src/pages/Invoices.tsx b/src/pages/Invoices.tsx index a30e90b..5f783fa 100644 --- a/src/pages/Invoices.tsx +++ b/src/pages/Invoices.tsx @@ -7,7 +7,6 @@ import { CheckCircle, Clock, Download, - Search, Plus, Settings, AlertCircle, diff --git a/src/pages/Marketplace.tsx b/src/pages/Marketplace.tsx index 84d6c61..def0df9 100644 --- a/src/pages/Marketplace.tsx +++ b/src/pages/Marketplace.tsx @@ -14,7 +14,6 @@ import { MapPin, Phone, ChevronRight, - Filter, } from 'lucide-react'; import clsx from 'clsx'; import { marketplaceApi } from '../lib/api'; @@ -571,10 +570,10 @@ function SupplierDetailModal({ function CartModal({ cart, - supplier, + supplier: _supplier, onClose, onUpdateQuantity, - onRemove, + onRemove: _onRemove, onOrderSuccess, }: { cart: { product: any; quantity: number }[]; diff --git a/src/pages/Referrals.tsx b/src/pages/Referrals.tsx index 883449c..0a5b2c2 100644 --- a/src/pages/Referrals.tsx +++ b/src/pages/Referrals.tsx @@ -1,5 +1,5 @@ import { useState } from 'react'; -import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'; +import { useQuery } from '@tanstack/react-query'; import { Gift, Users, Copy, Share2, Check, Clock, X } from 'lucide-react'; import { referralsApi } from '../lib/api'; @@ -24,7 +24,6 @@ interface Referral { export function Referrals() { const [copied, setCopied] = useState(false); - const queryClient = useQueryClient(); const { data: stats, isLoading } = useQuery({ queryKey: ['referral-stats'], @@ -42,12 +41,7 @@ export function Referrals() { }, }); - const generateCodeMutation = useMutation({ - mutationFn: () => referralsApi.generateCode(), - onSuccess: () => { - queryClient.invalidateQueries({ queryKey: ['referral-stats'] }); - }, - }); + // Note: generateCode mutation is available via referralsApi.generateCode() when needed const copyCode = async () => { if (stats?.code) {