diff --git a/.vscode/settings.json b/.vscode/settings.json index ac92eb5e..c3c08eba 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -5,5 +5,6 @@ "source.sortMembers": "explicit" }, "chat.mcp.gallery.enabled": true, - "java.compile.nullAnalysis.mode": "automatic" + "java.compile.nullAnalysis.mode": "automatic", + "java.configuration.updateBuildConfiguration": "interactive" } \ No newline at end of file diff --git a/app/(tabs)/index.tsx b/app/(tabs)/index.tsx index 3677034b..46d125cb 100644 --- a/app/(tabs)/index.tsx +++ b/app/(tabs)/index.tsx @@ -13,21 +13,21 @@ import { isIOS18OrHigher } from '@/utils/platform'; import { LinearGradient } from 'expo-linear-gradient'; import { Stack, router } from 'expo-router'; import { ArrowDownLeft, ArrowUpRight, Check, Eye, EyeOff, Plus, TrendingUp, WifiOff, X } from 'lucide-react-native'; -import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'; +import { useCallback, useEffect, useMemo, useRef, useState } from 'react'; import { - Alert, - Animated, - FlatList, - Modal, - Platform, - RefreshControl, - SafeAreaView, - ScrollView, - StyleSheet, - Text, - TextInput, - TouchableOpacity, - View, + Alert, + Animated, + FlatList, + Modal, + Platform, + RefreshControl, + SafeAreaView, + ScrollView, + StyleSheet, + Text, + TextInput, + TouchableOpacity, + View, } from 'react-native'; type TimePeriod = '1D' | '1W' | '1M' | '1Y' | 'All'; @@ -744,26 +744,31 @@ const styles = StyleSheet.create({ }, scrollContent: { // Add sufficient bottom padding to prevent content from going under tab bar - // iOS tab bar height (~49pt) + safe area (~34pt) + spacing = ~100pt paddingBottom: platformStyles.tabBarBottomPadding, + // Add top padding for content breathing room + paddingTop: platformStyles.spacing.md, }, header: { flexDirection: 'row', justifyContent: 'space-between', alignItems: 'flex-start', paddingHorizontal: platformStyles.spacing.xl, - paddingTop: platformStyles.spacing.xxl, // Increased breathing room - paddingBottom: platformStyles.spacing.lg, // Increased from md + paddingTop: platformStyles.spacing.xl, // Balanced top padding + paddingBottom: platformStyles.spacing.xl, + marginBottom: platformStyles.spacing.md, }, greeting: { - fontSize: 30, // Increased from 26 for better hierarchy - fontWeight: '800', // Increased weight - letterSpacing: -0.3, // Improved readability + fontSize: platformStyles.typography.heading.fontSize, // Use uniform typography + fontWeight: platformStyles.typography.heading.fontWeight, + letterSpacing: platformStyles.typography.heading.letterSpacing, + lineHeight: platformStyles.typography.heading.lineHeight, }, subtitle: { - fontSize: 16, // Increased from 15 - marginTop: 6, // Increased from 4 - letterSpacing: 0.2, + fontSize: platformStyles.typography.bodyLarge.fontSize, + lineHeight: platformStyles.typography.bodyLarge.lineHeight, + letterSpacing: platformStyles.typography.bodyLarge.letterSpacing, + marginTop: 4, + opacity: 0.8, // Subtle fade for subtitle }, priceContainer: { alignItems: 'flex-end', @@ -788,8 +793,9 @@ const styles = StyleSheet.create({ fontWeight: '700', // More specific weight }, bitcoinLabel: { - fontSize: 14, // Increased from 13 + fontSize: 15, letterSpacing: 0.2, + fontWeight: '500', }, priceRow: { flexDirection: 'row', @@ -808,32 +814,39 @@ const styles = StyleSheet.create({ }, balanceSection: { marginHorizontal: platformStyles.spacing.xl, - marginTop: platformStyles.spacing.xxl, // Increased from xl + marginTop: platformStyles.spacing.xl, + marginBottom: platformStyles.spacing.xxl, // Add space below balance }, balanceContainer: { position: 'relative', - marginBottom: 14, // Increased from 10 + marginBottom: platformStyles.spacing.md, + justifyContent: 'center', + alignItems: 'center', // Center align balance }, mainBalance: { - fontSize: 42, // Increased from 36 for better prominence - fontWeight: '800', + fontSize: platformStyles.typography.display.fontSize, + fontWeight: platformStyles.typography.display.fontWeight, textAlign: 'center', - paddingRight: 50, - letterSpacing: -0.5, // Improved readability for large numbers + letterSpacing: platformStyles.typography.display.letterSpacing, + lineHeight: platformStyles.typography.display.lineHeight, + paddingHorizontal: 20, // Add padding instead of fixed paddingRight }, eyeButton: { position: 'absolute', - top: 0, right: 0, - padding: 12, // Increased from 10 for better touch target - borderRadius: platformStyles.borderRadius.xl, + top: '50%', // Center vertically relative to balance + transform: [{ translateY: -20 }], // Adjust for icon size/padding + padding: 12, + borderRadius: platformStyles.borderRadius.round, // Fully rounded zIndex: 1, }, btcBalance: { - fontSize: 18, // Increased from 17 - fontWeight: '600', // Increased from 500 - marginBottom: 16, // Increased from 12 - letterSpacing: 0.2, + fontSize: platformStyles.typography.bodyLarge.fontSize, + fontWeight: platformStyles.typography.bodyLarge.fontWeight, + marginBottom: platformStyles.spacing.lg, + letterSpacing: platformStyles.typography.bodyLarge.letterSpacing, + textAlign: 'center', // Center align + opacity: 0.9, }, changeContainer: { flexDirection: 'row', @@ -903,12 +916,12 @@ const styles = StyleSheet.create({ letterSpacing: 0.2, }, transactionsSection: { - marginTop: platformStyles.spacing.huge, // Increased from xxxl for more space - paddingBottom: platformStyles.spacing.xl, + marginTop: platformStyles.spacing.xl, marginHorizontal: platformStyles.spacing.xl, - padding: platformStyles.spacing.xxl, // Increased from xl - borderRadius: platformStyles.borderRadius.xxxl, // Increased from xxl - ...platformStyles.cardShadow, + padding: platformStyles.spacing.xl, + borderRadius: platformStyles.borderRadius.xxl, + ...platformStyles.cardShadow, // Consistent shadow + overflow: 'hidden', // Ensure glass effect is contained }, transactionsHeader: { flexDirection: 'row', diff --git a/constants/themes.ts b/constants/themes.ts index e9df2428..a5aa2359 100644 --- a/constants/themes.ts +++ b/constants/themes.ts @@ -101,45 +101,45 @@ export const platformStyles = { // Typography scale - Enhanced for better readability and hierarchy typography: { caption: { - fontSize: 12, - lineHeight: 18, // Increased from 16 for better readability - letterSpacing: 0.3, + fontSize: 13, + lineHeight: 18, + letterSpacing: 0.2, fontWeight: '500' as const, }, body: { - fontSize: 15, // Increased from 14 for better readability - lineHeight: 22, // Increased from 20 - letterSpacing: 0.2, + fontSize: 16, // Premium standard body size + lineHeight: 24, + letterSpacing: 0.1, fontWeight: '400' as const, }, bodyLarge: { - fontSize: 17, // Increased from 16 - lineHeight: 26, // Increased from 24 + fontSize: 18, + lineHeight: 28, letterSpacing: 0.1, - fontWeight: '400' as const, + fontWeight: '500' as const, }, subtitle: { - fontSize: 19, // Increased from 18 - lineHeight: 26, // Increased from 24 + fontSize: 20, + lineHeight: 28, letterSpacing: 0.15, fontWeight: '600' as const, }, title: { - fontSize: 22, // Increased from 20 - lineHeight: 30, // Increased from 28 - letterSpacing: 0.1, - fontWeight: 'bold' as const, + fontSize: 24, + lineHeight: 32, + letterSpacing: -0.2, // Tighter for headers + fontWeight: '700' as const, }, heading: { - fontSize: 28, // Increased from 24 - lineHeight: 36, // Increased from 32 - letterSpacing: -0.2, // Negative for large text + fontSize: 34, + lineHeight: 40, + letterSpacing: -0.4, fontWeight: '700' as const, }, display: { - fontSize: 36, // Increased from 32 - lineHeight: 44, // Increased from 40 - letterSpacing: -0.5, // Negative for large text + fontSize: 48, // Hero size + lineHeight: 56, + letterSpacing: -1, fontWeight: '800' as const, }, }, @@ -148,78 +148,78 @@ export const platformStyles = { export const lightTheme: Theme = { isDark: false, colors: { - // Base colors with gradient-inspired tones - Enhanced for better contrast - background: '#FFFFFF', - surface: '#F9FAFB', // Slightly warmer from #FAFAFA - primary: '#FF8A65', // Coral orange inspired by gradient - secondary: '#FF6B6B', // Warm red-orange - accent: '#FFB74D', // Golden orange + // Premium Light Theme - Inspired by High-End Finance Apps + background: '#F2F2F7', // iOS System Gray 6 - softer than pure white + surface: '#FFFFFF', // Pure white cards for contrast + primary: '#F7931A', // Bitcoin Orange + secondary: '#FFAB40', // Warmer Secondary + accent: '#18181B', // Dark accent for high contrast elements success: '#10B981', warning: '#F59E0B', error: '#EF4444', - text: '#111827', // Darker from #1F2937 for better contrast - textSecondary: '#6B7280', - border: '#E5E7EB', // Slightly darker from #F3F4F6 for better visibility - // Gradient colors - inspired by the orange/coral gradient image - gradientStart: '#FF8A65', // Coral orange - gradientEnd: '#FF6B6B', // Warm red-orange - gradientAccent: '#FFB74D', // Golden accent - // Glow effects for light theme (subtle) - glowPrimary: 'rgba(255, 138, 101, 0.12)', - glowSecondary: 'rgba(255, 107, 107, 0.12)', - glowAccent: 'rgba(255, 183, 77, 0.12)', + text: '#18181B', // Almost black for sharpness + textSecondary: '#8E8E93', // iOS System Gray + border: '#E5E5EA', // Apple-style border + // Gradient colors + gradientStart: '#F7931A', + gradientEnd: '#FFAB40', + gradientAccent: '#FFD700', + // Glow effects (Subtle shadows in light mode) + glowPrimary: 'rgba(247, 147, 26, 0.15)', + glowSecondary: 'rgba(255, 171, 64, 0.15)', + glowAccent: 'rgba(0, 0, 0, 0.05)', // Additional colors - purple: '#FF8A65', - blue: '#3B82F6', - green: '#22C55E', - orange: '#FF8A65', - pink: '#FF6B6B', - yellow: '#FFB74D', + purple: '#F7931A', + blue: '#007AFF', // iOS Blue + green: '#34C759', // iOS Green + orange: '#FF9500', // iOS Orange + pink: '#FF2D55', // iOS Pink + yellow: '#FFCC00', // iOS Yellow // Surface variants surfaceLight: '#FFFFFF', - surfaceDark: '#F5F5F5', - // Card backgrounds with subtle gradient feel + surfaceDark: '#F2F2F7', + // Card backgrounds cardBackground: '#FFFFFF', - cardBorder: '#FFE5DB', + cardBorder: 'rgba(0, 0, 0, 0.05)', }, }; export const darkTheme: Theme = { isDark: true, colors: { - // Deep dark background with cool undertones - Enhanced contrast - background: '#0A0E1A', // Darker from #0F172A for deeper blacks - surface: '#1A2332', // Adjusted from #1E293B for better hierarchy - primary: '#26F5FE', // Bright cyan - perfect complement to coral orange - secondary: '#00BCD4', // Teal - creates beautiful gradient with cyan - accent: '#40E0D0', // Turquoise accent - bridges cyan and teal - success: '#00E676', // Bright emerald - complements the cool theme - warning: '#FFB74D', // Keep warm amber for contrast - error: '#FF5252', // Bright red - maintains energy - text: '#F8FAFC', // Brighter from #F1F5F9 for better readability - textSecondary: '#9CA3AF', // Adjusted from #94A3B8 for better contrast - border: '#2D3748', // Adjusted from #334155 for better visibility - // Gradient colors - cool cyan theme (opposite energy to warm coral) - gradientStart: '#26F5FE', // Bright cyan - gradientEnd: '#00BCD4', // Teal - gradientAccent: '#40E0D0', // Turquoise accent - // Glow effects for dark theme (cool cyan glow) - glowPrimary: 'rgba(38, 245, 254, 0.25)', // Cyan glow - glowSecondary: 'rgba(0, 188, 212, 0.25)', // Teal glow - glowAccent: 'rgba(64, 224, 208, 0.25)', // Turquoise glow - // Additional colors with cool variants - purple: '#26F5FE', // Replace purple with cyan - blue: '#26F5FE', // Cyan blue - green: '#00E676', // Bright emerald - orange: '#FFB74D', // Keep warm amber for contrast - pink: '#FF4081', // Bright pink for energy - yellow: '#FFEB3B', // Bright yellow for warmth - // Surface variants with cool undertones - surfaceLight: '#293548', - surfaceDark: '#1A2332', - // Card backgrounds with cyan glow effect - cardBackground: '#1E293B', - cardBorder: '#26F5FE', // Cyan border for accent + // Deep premium dark background + background: '#09090B', // Slightly warmer/richer black than pure #000 + surface: '#18181B', // Zinc-900 style surface + primary: '#F7931A', // Bitcoin Orange + secondary: '#FFAB40', // Lighter Amber + accent: '#FFD700', // Gold + success: '#10B981', // Emerald 500 + warning: '#F59E0B', + error: '#EF4444', + text: '#FAFAFA', // Zinc-50 + textSecondary: '#A1A1AA', // Zinc-400 + border: '#27272A', // Zinc-800 + // Gradient colors - Bitcoin Theme + gradientStart: '#F7931A', // Bitcoin Orange + gradientEnd: '#FFAB40', // Warmer Amber + gradientAccent: '#FFD700', // Gold + // Glow effects for dark theme (Warm/Orange glow) + glowPrimary: 'rgba(247, 147, 26, 0.2)', + glowSecondary: 'rgba(255, 171, 64, 0.2)', + glowAccent: 'rgba(255, 215, 0, 0.2)', + // Additional colors + purple: '#F7931A', // Remap for consistency + blue: '#3B82F6', + green: '#10B981', + orange: '#F7931A', + pink: '#EC4899', + yellow: '#EAB308', + // Surface variants + surfaceLight: '#27272A', + surfaceDark: '#09090B', + // Card backgrounds + cardBackground: '#18181B', + cardBorder: '#F7931A', // Subtle orange border hint }, }; diff --git a/ios/Podfile.lock b/ios/Podfile.lock index ffe4dba5..aba6f76e 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -2411,8 +2411,8 @@ DEPENDENCIES: - EXManifests (from `../node_modules/expo-manifests/ios`) - Expo (from `../node_modules/expo`) - expo-dev-client (from `../node_modules/expo-dev-client/ios`) - - expo-dev-launcher (from `../node_modules/expo-dev-launcher`) - - expo-dev-menu (from `../node_modules/expo-dev-menu`) + - expo-dev-launcher (from `../node_modules/expo-dev-client/node_modules/expo-dev-launcher`) + - expo-dev-menu (from `../node_modules/expo-dev-client/node_modules/expo-dev-menu`) - expo-dev-menu-interface (from `../node_modules/expo-dev-menu-interface/ios`) - ExpoAsset (from `../node_modules/expo-asset/ios`) - ExpoBlur (from `../node_modules/expo-blur/ios`) @@ -2562,9 +2562,9 @@ EXTERNAL SOURCES: expo-dev-client: :path: "../node_modules/expo-dev-client/ios" expo-dev-launcher: - :path: "../node_modules/expo-dev-launcher" + :path: "../node_modules/expo-dev-client/node_modules/expo-dev-launcher" expo-dev-menu: - :path: "../node_modules/expo-dev-menu" + :path: "../node_modules/expo-dev-client/node_modules/expo-dev-menu" expo-dev-menu-interface: :path: "../node_modules/expo-dev-menu-interface/ios" ExpoAsset: diff --git a/package-lock.json b/package-lock.json index 332337d1..df725d8e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1888,9 +1888,9 @@ } }, "node_modules/@expo/build-tools": { - "version": "1.0.260", - "resolved": "https://registry.npmjs.org/@expo/build-tools/-/build-tools-1.0.260.tgz", - "integrity": "sha512-CJhpY7DLOp76SXjtnF9iNEaqiNM4WeMgcF3YbPTbr8L/JeeYrsRl/QRKCYeGiw5dXv1PUz9WMJ2Y0LEDkPdLeg==", + "version": "1.0.261", + "resolved": "https://registry.npmjs.org/@expo/build-tools/-/build-tools-1.0.261.tgz", + "integrity": "sha512-d44kUp/bt831ia118QajbbQy7/CqoKv2uoeB2I7J3nv1yJDMTPSnQ4WLSyZAycSJ++dtFuzRKPGuwjEKcGDw4w==", "dev": true, "license": "BUSL-1.1", "dependencies": { @@ -3504,20 +3504,6 @@ } } }, - "node_modules/@firebase/auth-compat/node_modules/@react-native-async-storage/async-storage": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@react-native-async-storage/async-storage/-/async-storage-1.24.0.tgz", - "integrity": "sha512-W4/vbwUOYOjco0x3toB8QCr7EjIP6nE9G7o8PMguvvjYT5Awg09lyV4enACRx4s++PPulBiBSjL0KTFx2u0Z/g==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "merge-options": "^3.0.4" - }, - "peerDependencies": { - "react-native": "^0.0.0-0 || >=0.60 <1.0" - } - }, "node_modules/@firebase/auth-interop-types": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.2.4.tgz", @@ -5302,15 +5288,6 @@ "async-limiter": "~1.0.0" } }, - "node_modules/@react-native/gradle-plugin": { - "version": "0.81.5", - "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.81.5.tgz", - "integrity": "sha512-hORRlNBj+ReNMLo9jme3yQ6JQf4GZpVEBLxmTXGGlIL78MAezDZr5/uq9dwElSbcGmLEgeiax6e174Fie6qPLg==", - "license": "MIT", - "engines": { - "node": ">= 20.19.4" - } - }, "node_modules/@react-native/js-polyfills": { "version": "0.81.5", "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.81.5.tgz", @@ -7120,9 +7097,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.9.13", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.13.tgz", - "integrity": "sha512-WhtvB2NG2wjr04+h77sg3klAIwrgOqnjS49GGudnUPGFFgg7G17y7Qecqp+2Dr5kUDxNRBca0SK7cG8JwzkWDQ==", + "version": "2.9.14", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.14.tgz", + "integrity": "sha512-B0xUquLkiGLgHhpPBqvl7GWegWBUNuujQ6kXd/r1U38ElPT6Ok8KZ8e+FpUGEc2ZoRQUzq/aUnaKFc/svWUGSg==", "license": "Apache-2.0", "bin": { "baseline-browser-mapping": "dist/cli.js" @@ -8821,13 +8798,13 @@ } }, "node_modules/eas-cli-local-build-plugin": { - "version": "1.0.260", - "resolved": "https://registry.npmjs.org/eas-cli-local-build-plugin/-/eas-cli-local-build-plugin-1.0.260.tgz", - "integrity": "sha512-Qz8GDRNH4j0sqSMlQ5lriLhTJydfnJAJaVGu7DLAH2bq369qHFAdWF60gjQc9lVi3YMj3vAhwsFrC/Nr8YNQMg==", + "version": "1.0.261", + "resolved": "https://registry.npmjs.org/eas-cli-local-build-plugin/-/eas-cli-local-build-plugin-1.0.261.tgz", + "integrity": "sha512-Hiug+V6+zzCUCiar2tT+1MJTLTreiiX/IS/cYv29+0uq//Z3pUE/Cz3+guke6QGbErhc7D+vxKLl9g9r9zj7Bg==", "dev": true, "license": "BUSL-1.1", "dependencies": { - "@expo/build-tools": "1.0.260", + "@expo/build-tools": "1.0.261", "@expo/eas-build-job": "1.0.260", "@expo/spawn-async": "^1.7.2", "@expo/turtle-spawn": "1.0.260", @@ -9959,21 +9936,7 @@ "expo": "*" } }, - "node_modules/expo-dev-launcher": { - "version": "6.0.20", - "resolved": "https://registry.npmjs.org/expo-dev-launcher/-/expo-dev-launcher-6.0.20.tgz", - "integrity": "sha512-a04zHEeT9sB0L5EB38fz7sNnUKJ2Ar1pXpcyl60Ki8bXPNCs9rjY7NuYrDkP/irM8+1DklMBqHpyHiLyJ/R+EA==", - "license": "MIT", - "dependencies": { - "ajv": "^8.11.0", - "expo-dev-menu": "7.0.18", - "expo-manifests": "~1.0.10" - }, - "peerDependencies": { - "expo": "*" - } - }, - "node_modules/expo-dev-launcher/node_modules/ajv": { + "node_modules/expo-dev-client/node_modules/ajv": { "version": "8.17.1", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", @@ -9989,13 +9952,21 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/expo-dev-launcher/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "license": "MIT" + "node_modules/expo-dev-client/node_modules/expo-dev-launcher": { + "version": "6.0.20", + "resolved": "https://registry.npmjs.org/expo-dev-launcher/-/expo-dev-launcher-6.0.20.tgz", + "integrity": "sha512-a04zHEeT9sB0L5EB38fz7sNnUKJ2Ar1pXpcyl60Ki8bXPNCs9rjY7NuYrDkP/irM8+1DklMBqHpyHiLyJ/R+EA==", + "license": "MIT", + "dependencies": { + "ajv": "^8.11.0", + "expo-dev-menu": "7.0.18", + "expo-manifests": "~1.0.10" + }, + "peerDependencies": { + "expo": "*" + } }, - "node_modules/expo-dev-menu": { + "node_modules/expo-dev-client/node_modules/expo-dev-menu": { "version": "7.0.18", "resolved": "https://registry.npmjs.org/expo-dev-menu/-/expo-dev-menu-7.0.18.tgz", "integrity": "sha512-4kTdlHrnZCAWCT6tZRQHSSjZ7vECFisL4T+nsG/GJDo/jcHNaOVGV5qPV9wzlTxyMk3YOPggRw4+g7Ownrg5eA==", @@ -10007,6 +9978,12 @@ "expo": "*" } }, + "node_modules/expo-dev-client/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, "node_modules/expo-dev-menu-interface": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/expo-dev-menu-interface/-/expo-dev-menu-interface-2.0.0.tgz", @@ -11735,20 +11712,6 @@ } } }, - "node_modules/firebase/node_modules/@react-native-async-storage/async-storage": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@react-native-async-storage/async-storage/-/async-storage-1.24.0.tgz", - "integrity": "sha512-W4/vbwUOYOjco0x3toB8QCr7EjIP6nE9G7o8PMguvvjYT5Awg09lyV4enACRx4s++PPulBiBSjL0KTFx2u0Z/g==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "merge-options": "^3.0.4" - }, - "peerDependencies": { - "react-native": "^0.0.0-0 || >=0.60 <1.0" - } - }, "node_modules/flat-cache": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", @@ -17564,6 +17527,15 @@ "node": ">=10" } }, + "node_modules/react-native/node_modules/@react-native/gradle-plugin": { + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.81.5.tgz", + "integrity": "sha512-hORRlNBj+ReNMLo9jme3yQ6JQf4GZpVEBLxmTXGGlIL78MAezDZr5/uq9dwElSbcGmLEgeiax6e174Fie6qPLg==", + "license": "MIT", + "engines": { + "node": ">= 20.19.4" + } + }, "node_modules/react-native/node_modules/@react-native/virtualized-lists": { "version": "0.81.5", "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.81.5.tgz", @@ -19340,23 +19312,6 @@ } } }, - "node_modules/tailwindcss/node_modules/yaml": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", - "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", - "license": "ISC", - "optional": true, - "peer": true, - "bin": { - "yaml": "bin.mjs" - }, - "engines": { - "node": ">= 14.6" - }, - "funding": { - "url": "https://github.com/sponsors/eemeli" - } - }, "node_modules/tar": { "version": "7.5.2", "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.2.tgz",