diff --git a/components/dashboard/metric-cards.tsx b/components/dashboard/metric-cards.tsx index 74cde4f..dfc07f9 100644 --- a/components/dashboard/metric-cards.tsx +++ b/components/dashboard/metric-cards.tsx @@ -8,8 +8,10 @@ import { TrendingUp, TrendingDown, Activity, + Euro, } from "lucide-react"; import { cn } from "@/lib/utils"; +import { convertCreditsToEuros } from "@/lib/utils/currency"; interface MetricCardProps { title: string; @@ -77,6 +79,9 @@ interface MetricCardsProps { } export function MetricCards({ metrics }: MetricCardsProps) { + // Conversion des crédits en euros + const creditsConversion = convertCreditsToEuros(metrics.totalCreditsUsed); + return (
Crédits totaux - +
+ + +
@@ -114,7 +122,22 @@ export function MetricCards({ metrics }: MetricCardsProps) {

crédits disponibles

-
+ + {/* Conversion en euros */} +
+
+ Valeur en EUR: + + {creditsConversion.formatted.eur} + +
+
+ USD: {creditsConversion.formatted.usd} + Taux: 1 USD = 0.92 EUR +
+
+ +
+23% par rapport au mois dernier diff --git a/components/dashboard/overview-metrics.tsx b/components/dashboard/overview-metrics.tsx index 6519701..a7a963b 100644 --- a/components/dashboard/overview-metrics.tsx +++ b/components/dashboard/overview-metrics.tsx @@ -2,7 +2,8 @@ import { useMetrics } from "@/hooks/useMetrics"; import { MetricCard } from "@/components/ui/metric-card"; -import { Users, UserCheck, Shield, Coins, MessageSquare, FileText } from "lucide-react"; +import { Users, UserCheck, Shield, Coins, MessageSquare, FileText, Euro } from "lucide-react"; +import { convertCreditsToEuros } from "@/lib/utils/currency"; export function OverviewMetrics() { const { metrics, loading, error } = useMetrics(); @@ -25,6 +26,9 @@ export function OverviewMetrics() { ); } + // Conversion des crédits en euros + const creditsInEuros = convertCreditsToEuros(metrics.totalCredits); + return (
- +
+
+

Crédits totaux

+
+ + +
+
+
+ {metrics.totalCredits.toLocaleString()} +
+
crédits disponibles
+
+
+ {creditsInEuros.formatted.eur} +
+
+ {creditsInEuros.formatted.usd} USD +
+
+
Crédits totaux - +
+ + +
{stats.totalCreditsUsed.toLocaleString()}

crédits disponibles

+ + {/* Conversion en euros */} +
+
+ Valeur: {convertCreditsToEuros(stats.totalCreditsUsed).formatted.eur} +
+
+ ({convertCreditsToEuros(stats.totalCreditsUsed).formatted.usd} USD) +
+
diff --git a/lib/utils/currency.ts b/lib/utils/currency.ts new file mode 100644 index 0000000..7ce2249 --- /dev/null +++ b/lib/utils/currency.ts @@ -0,0 +1,46 @@ +// Fonction de conversion des crédits en euros +export function convertCreditsToEuros(credits: number): { + usd: number; + eur: number; + formatted: { + usd: string; + eur: string; + }; +} { + // Votre règle : 5 millions de crédits = 5 USD + // Donc : 1 million de crédits = 1 USD + const usdAmount = credits / 1_000_000; + + // Taux de change USD → EUR (vous pouvez ajuster ce taux) + // Taux approximatif actuel : 1 USD ≈ 0.92 EUR + const USD_TO_EUR_RATE = 0.92; + const eurAmount = usdAmount * USD_TO_EUR_RATE; + + return { + usd: usdAmount, + eur: eurAmount, + formatted: { + usd: `$${usdAmount.toFixed(2)}`, + eur: `€${eurAmount.toFixed(2)}` + } + }; +} + +// Fonction pour formater les crédits avec conversion +export function formatCreditsWithCurrency(credits: number): string { + const conversion = convertCreditsToEuros(credits); + return `${credits.toLocaleString()} crédits (${conversion.formatted.eur})`; +} + +// Fonction pour obtenir le taux de change en temps réel (optionnel) +export async function getCurrentExchangeRate(): Promise { + try { + // Vous pouvez utiliser une API gratuite comme exchangerate-api.com + const response = await fetch('https://api.exchangerate-api.com/v4/latest/USD'); + const data = await response.json(); + return data.rates.EUR || 0.92; // Fallback au taux fixe + } catch (error) { + console.warn('Impossible de récupérer le taux de change, utilisation du taux fixe'); + return 0.92; // Taux fixe de fallback + } +} \ No newline at end of file