import React from 'react'; import { View, Text } from 'react-native'; import { useTheme } from '../theme/ThemeProvider'; import { useCredits } from '~/features/credits/CreditContext'; import { useTranslation } from 'react-i18next'; import colors from '~/tailwind.config.js'; export interface UsageDataProps { total: number; lastWeek: number; lastMonth: number; currentMana: number; maxMana: number; history?: Array<{ date: string; amount: number; }>; } interface UsageCardProps { title?: string; usageData: UsageDataProps; currentPlan?: string; } export const UsageCard: React.FC = ({ title, usageData, currentPlan }) => { const { isDark, themeVariant, tw } = useTheme(); const { credits: contextCredits, isLoading: contextLoading } = useCredits(); const { t } = useTranslation(); // Use real credits from context instead of static data const currentMana = contextCredits ?? usageData.currentMana; // Berechnung für verfügbare vs. verbrauchte Mana const usedMana = usageData.maxMana - currentMana; // On subscription page, always show full numbers regardless of settings const formattedCurrentMana = currentMana.toString(); const formattedUsedMana = usedMana.toString(); const usedPercentage = Math.min(100, Math.round((usedMana / usageData.maxMana) * 100)); const calculatedPercentage = Math.round((currentMana / usageData.maxMana) * 100); // Mindestens 1% für Zahlen bis 5, damit immer ein kleiner blauer Balken sichtbar ist const availablePercentage = currentMana <= 5 && currentMana > 0 ? Math.max(1, calculatedPercentage) : calculatedPercentage; const availableMana = currentMana; // Theme-aware colors using the same system as MemoPreview and SettingsToggle const themeColors = (colors as any).theme?.extend?.colors; const textColor = isDark ? '#FFFFFF' : '#000000'; const secondaryTextColor = isDark ? 'rgba(255,255,255,0.7)' : 'rgba(0,0,0,0.7)'; const bgColor = isDark ? themeColors?.dark?.[themeVariant]?.contentBackground || '#1E1E1E' : themeColors?.[themeVariant]?.contentBackground || '#FFFFFF'; const borderColor = isDark ? themeColors?.dark?.[themeVariant]?.border || '#424242' : themeColors?.[themeVariant]?.border || '#e6e6e6'; const accentColor = '#4287f5'; // Konsistente Mana-Farbe const progressBgColor = isDark ? 'rgba(255,255,255,0.1)' : 'rgba(0,0,0,0.1)'; return ( {/* Mana-Fortschrittsbalken */} {t('subscription.your_mana', 'Dein Mana')} {contextLoading ? '...' : formattedCurrentMana} {/* Coolerer Fortschrittsbalken */} {/* Prozentwert */} {t('subscription.percentage_available', '{{percentage}}% available', { percentage: availablePercentage, })} {t('subscription.mana_used', '{{amount}} used', { amount: formattedUsedMana })} {/* Aktueller Plan */} {currentPlan && ( {t('subscription.current_plan', 'Current Plan')}: {currentPlan} )} {/* Nutzungsstatistiken - Vorerst auskommentiert (statische Demo-Daten) */} {/* Heute {usageData.total} Mana 7 Tage {usageData.lastWeek} Mana 30 Tage {usageData.lastMonth} Mana */} ); }; export default UsageCard;