diff --git a/src/components/pricing/simulator/ProductSearch.tsx b/src/components/pricing/simulator/ProductSearch.tsx
index 87ecca95b..5ccfab394 100644
--- a/src/components/pricing/simulator/ProductSearch.tsx
+++ b/src/components/pricing/simulator/ProductSearch.tsx
@@ -60,7 +60,7 @@ export function ProductSearch({ onSelect, selectedProduct }: ProductSearchProps)
SKU: {selectedProduct.sku}
-
•
+
•
{formatCurrency(selectedProduct.price)}
@@ -132,7 +132,7 @@ export function ProductSearch({ onSelect, selectedProduct }: ProductSearchProps)
{product.name}
- {product.sku} • {formatCurrency(product.price)}
+ {product.sku} • {formatCurrency(product.price)}
diff --git a/src/components/pricing/simulator/QuantityAndResult.tsx b/src/components/pricing/simulator/QuantityAndResult.tsx
index b127bff24..670b8935d 100644
--- a/src/components/pricing/simulator/QuantityAndResult.tsx
+++ b/src/components/pricing/simulator/QuantityAndResult.tsx
@@ -186,7 +186,7 @@ export function QuantityAndResult({
{/* Produto */}
- Produtos ({formatNumber(quantity)} × {formatCurrency(product.price)})
+ Produtos ({formatNumber(quantity)} × {formatCurrency(product.price)})
{formatCurrency(productTotal)}
@@ -203,7 +203,7 @@ export function QuantityAndResult({
- {formatNumber(quantity)} × {formatCurrency(priceData.unit_price)}
+ {formatNumber(quantity)} × {formatCurrency(priceData.unit_price)}
(Faixa {priceData.tier_used})
{formatCurrency(priceData.subtotal_pecas)}
@@ -283,7 +283,7 @@ export function QuantityAndResult({
{/* Info box sobre a lógica v5.1 */}
{priceData && (
-
📊 Sistema de Preços v5.1
+
📊 Sistema de Preços v5.1
O setup é aplicado como faturamento mínimo , não é somado ao total.
Se o subtotal das peças for menor que o mínimo, o total será igual ao faturamento
diff --git a/src/components/pricing/simulator/TechniqueSelector.tsx b/src/components/pricing/simulator/TechniqueSelector.tsx
index 9980b25c9..113f99f84 100644
--- a/src/components/pricing/simulator/TechniqueSelector.tsx
+++ b/src/components/pricing/simulator/TechniqueSelector.tsx
@@ -222,7 +222,7 @@ export function TechniqueSelector({
{loc.name}
{maxWidth && maxHeight ? `${maxWidth}x${maxHeight}mm` : 'Área variável'}
- {' • '}
+ {' • '}
{loc.techniques.length}{' '}
{loc.techniques.length === 1 ? 'técnica' : 'técnicas'}
@@ -260,8 +260,8 @@ export function TechniqueSelector({
{tech.areaName || tech.techniqueCode}
{tech.techniqueCode && `Código: ${tech.techniqueCode}`}
- {tech.maxColors && ` • Até ${tech.maxColors} cores`}
- {tech.areaCm2 && ` • ${tech.areaCm2}cm²`}
+ {tech.maxColors && ` • Até ${tech.maxColors} cores`}
+ {tech.areaCm2 && ` • ${tech.areaCm2}cm²`}
diff --git a/src/hooks/voice/logVoiceCommand.ts b/src/hooks/voice/logVoiceCommand.ts
index 8554cc850..12cdf0d0c 100644
--- a/src/hooks/voice/logVoiceCommand.ts
+++ b/src/hooks/voice/logVoiceCommand.ts
@@ -1,6 +1,6 @@
/**
- * logVoiceCommand — Logs a voice command to the database for analytics.
- * Fire-and-forget — does not throw or block the UI.
+ * logVoiceCommand — Logs a voice command to the database for analytics.
+ * Fire-and-forget — does not throw or block the UI.
*/
import { supabase } from '@/integrations/supabase/client';
import type { VoiceAgentAction } from './types';
@@ -9,7 +9,7 @@ export function logVoiceCommand(
action: VoiceAgentAction,
meta: { transcript: string; durationMs?: number; success?: boolean },
) {
- // Fire and forget — don't await, don't block
+ // Fire and forget — don't await, don't block
(async () => {
try {
const {
@@ -27,7 +27,7 @@ export function logVoiceCommand(
success: meta.success ?? true,
});
} catch {
- // Silent — analytics should never break UX
+ // Silent — analytics should never break UX
}
})();
}
diff --git a/src/hooks/voice/processTranscript.ts b/src/hooks/voice/processTranscript.ts
index bd353eaa9..3646e48f0 100644
--- a/src/hooks/voice/processTranscript.ts
+++ b/src/hooks/voice/processTranscript.ts
@@ -2,7 +2,7 @@
import type { VoiceAgentAction } from './types';
/**
- * processVoiceTranscript — Sends transcript to AI and returns structured action.
+ * processVoiceTranscript — Sends transcript to AI and returns structured action.
* Uses fetch with AbortController for proper timeout support (15s).
*/
export async function processVoiceTranscript(transcript: string): Promise
{
diff --git a/src/lib/kit-builder/price-calculator.ts b/src/lib/kit-builder/price-calculator.ts
index cd2eae2c5..b51e7902a 100644
--- a/src/lib/kit-builder/price-calculator.ts
+++ b/src/lib/kit-builder/price-calculator.ts
@@ -6,7 +6,7 @@
import type { KitItem, KitBox, KitPersonalization } from './types';
// ============================================
-// CÁLCULOS DE PREÇO
+// CÁLCULOS DE PREÇO
// ============================================
/**
@@ -107,7 +107,7 @@ export function calculateSavings(
}
// ============================================
-// FORMATAÇÃO
+// FORMATAÇÃO
// ============================================
// Import + re-export from centralized format module
@@ -123,7 +123,7 @@ export function formatUnitPrice(total: number, quantity: number): string {
}
// ============================================
-// BREAKDOWN DO PREÇO
+// BREAKDOWN DO PREÇO
// ============================================
export interface PriceBreakdownItem {
@@ -157,7 +157,7 @@ export function generatePriceBreakdown(
// Personalização da caixa
if (personalization.box.enabled && personalization.box.estimatedPrice) {
breakdown.push({
- label: `↳ Gravação: ${personalization.box.techniqueName || 'Personalização'}`,
+ label: `↳ Gravação: ${personalization.box.techniqueName || 'Personalização'}`,
quantity: kitQuantity,
unitPrice: personalization.box.estimatedPrice,
totalPrice: personalization.box.estimatedPrice * kitQuantity,
@@ -180,7 +180,7 @@ export function generatePriceBreakdown(
const itemPersonalization = personalization.items[item.id];
if (itemPersonalization?.enabled && itemPersonalization.estimatedPrice) {
breakdown.push({
- label: `↳ Gravação: ${itemPersonalization.techniqueName || 'Personalização'}`,
+ label: `↳ Gravação: ${itemPersonalization.techniqueName || 'Personalização'}`,
quantity: totalQty,
unitPrice: itemPersonalization.estimatedPrice,
totalPrice: itemPersonalization.estimatedPrice * totalQty,
diff --git a/src/lib/kit-builder/volume-calculator.ts b/src/lib/kit-builder/volume-calculator.ts
index 7baf411d6..341c8a650 100644
--- a/src/lib/kit-builder/volume-calculator.ts
+++ b/src/lib/kit-builder/volume-calculator.ts
@@ -50,7 +50,7 @@ export function calculateVolumeUsagePercent(itemsVolume: number, boxVolume: numb
}
// ============================================
-// VALIDAÇÕES
+// VALIDAÇÕES
// ============================================
/**
@@ -116,7 +116,7 @@ export function isAtCapacity(usagePercent: number): boolean {
}
// ============================================
-// FORMATAÇÃO
+// FORMATAÇÃO
// ============================================
/**
@@ -157,12 +157,12 @@ export function getVolumeStatusLabel(percent: number): string {
}
// ============================================
-// PARSING DE DIMENSÕES
+// PARSING DE DIMENSÕES
// ============================================
/**
* Tenta extrair dimensões de uma string de dimensões
- * Formatos suportados: "10x20x5", "10 x 20 x 5", "10×20×5"
+ * Formatos suportados: "10x20x5", "10 x 20 x 5", "10×20×5"
*/
export function parseDimensionsString(
dimensionsStr: string | null | undefined,
@@ -174,7 +174,7 @@ export function parseDimensionsString(
.toLowerCase()
.replace(/\s+/g, '')
.replace(/\u00d7/g, 'x')
- .replace(/×/g, 'x')
+ .replace(/×/g, 'x')
.replace(/cm/g, '');
// Tenta match com padrão NxNxN
diff --git a/src/lib/personalization/transformers.ts b/src/lib/personalization/transformers.ts
index d4d2b9ae5..8f1b8b6e1 100644
--- a/src/lib/personalization/transformers.ts
+++ b/src/lib/personalization/transformers.ts
@@ -19,7 +19,7 @@ import type {
} from '@/types/tecnica-unificada';
// ============================================
-// RAW DB → PORTUGUESE DOMAIN TYPES (para hooks)
+// RAW DB → PORTUGUESE DOMAIN TYPES (para hooks)
// ============================================
/**
diff --git a/src/pages/auth/Auth.tsx b/src/pages/auth/Auth.tsx
index 199fbd111..69b8c32bf 100644
--- a/src/pages/auth/Auth.tsx
+++ b/src/pages/auth/Auth.tsx
@@ -87,7 +87,7 @@ export default function Auth() {
const [blockedIP, setBlockedIP] = useState(null);
const [currentIP, setCurrentIP] = useState(null);
const [geoLocation, setGeoLocation] = useState(null);
- // Fallback social → email/senha: mensagem amigável quando OAuth falha.
+ // Fallback social → email/senha: mensagem amigável quando OAuth falha.
const [socialError, setSocialError] = useState(null);
// External Database Check State
@@ -138,7 +138,7 @@ export default function Auth() {
const copy = resolveOAuthError(message);
setSocialError(copy);
// Fallback automático em falhas recuperáveis (timeout/silencioso):
- // o usuário não precisa clicar — o foco vai direto pro e-mail.
+ // o usuário não precisa clicar — o foco vai direto pro e-mail.
if (opts?.autoFallback && !copy.isConfig) {
toast({
title: 'Login com Google indisponível',
@@ -336,14 +336,14 @@ export default function Auth() {
{description}
- DIAGNÓSTICO: {diagnosis}
+ DIAGNÓSTICO: {diagnosis}
navigate('/admin/status')}
>
- Verificar status do sistema →
+ Verificar status do sistema →
),
@@ -746,7 +746,7 @@ export default function Auth() {
id="login-password"
data-testid="login-password-input"
type={showPassword ? 'text' : 'password'}
- placeholder="••••••••"
+ placeholder="••••••••"
autoComplete="current-password"
className="border-white/10 bg-white/5 pl-10 pr-10 transition-all duration-300 placeholder:text-white/20 focus:border-primary/50 focus:ring-primary/20"
{...loginForm.register('password')}
@@ -849,7 +849,7 @@ export default function Auth() {
)}
- {/* Backend Status Widget — apenas visível para devs (gate via useDevGate) */}
+ {/* Backend Status Widget — apenas visível para devs (gate via useDevGate) */}
{isDevAllowed && (