diff --git a/__fixtures__/chat-threads.ts b/__fixtures__/chat-threads.ts
new file mode 100644
index 0000000..47b8182
--- /dev/null
+++ b/__fixtures__/chat-threads.ts
@@ -0,0 +1,28 @@
+import { ChatThread } from '@/components/ChatRow';
+
+export const mockChatThreads: ChatThread[] = [
+ {
+ id: '1',
+ name: 'Finance Agent',
+ preview: 'Your transaction has been verified successfully.',
+ timestamp: '2m ago',
+ avatarColor: '#1a73e8',
+ avatarBg: '#e3f2fd',
+ },
+ {
+ id: '2',
+ name: 'GitHub Agent',
+ preview: 'Please sign the commit with your passkey to proceed.',
+ timestamp: '14m ago',
+ avatarColor: '#34a853',
+ avatarBg: '#e6f4ea',
+ },
+ {
+ id: '3',
+ name: 'Lofty AI',
+ preview: 'Welcome back! Your portfolio update is ready.',
+ timestamp: '1h ago',
+ avatarColor: '#ea4335',
+ avatarBg: '#fce8e6',
+ },
+];
diff --git a/ac2-controller.code-workspace b/ac2-controller.code-workspace
index e94bda3..d84704c 100644
--- a/ac2-controller.code-workspace
+++ b/ac2-controller.code-workspace
@@ -4,10 +4,6 @@
"name": "ROOT",
"path": ".",
},
- {
- "name": "ac2-sdk",
- "path": "packages/ac2-sdk",
- },
],
"settings": {
"npm.packageManager": "pnpm",
diff --git a/app.config.js b/app.config.js
index b435d40..580a0ad 100644
--- a/app.config.js
+++ b/app.config.js
@@ -47,12 +47,13 @@ module.exports = {
splash: {
image: './assets/splash.png',
resizeMode: 'contain',
- backgroundColor: '#ffffff',
+ backgroundColor: '#1a73e8',
+ imageWidth: 578,
},
android: {
adaptiveIcon: {
foregroundImage: './assets/adaptive-icon.png',
- backgroundColor: '#ffffff',
+ backgroundColor: '#1a73e8',
},
edgeToEdgeEnabled: true,
predictiveBackGestureEnabled: false,
@@ -65,13 +66,22 @@ module.exports = {
},
plugins: [
'expo-router',
+ [
+ 'expo-font',
+ {
+ fonts: [
+ './assets/fonts/PlusJakartaSans-VariableFont_wght.ttf',
+ './assets/fonts/PlusJakartaSans-Italic-VariableFont_wght.ttf',
+ ],
+ },
+ ],
[
'expo-splash-screen',
{
- image: './assets/images/splash-icon.png',
- imageWidth: 200,
+ image: './assets/splash-icon.png',
+ imageWidth: 578,
resizeMode: 'contain',
- backgroundColor: '#ffffff',
+ backgroundColor: '#1a73e8',
dark: {
backgroundColor: '#000000',
},
diff --git a/app/_layout.tsx b/app/_layout.tsx
index e75c769..74fe19b 100644
--- a/app/_layout.tsx
+++ b/app/_layout.tsx
@@ -1,21 +1,27 @@
// MUST be first: installs `global.crypto` before any `@noble/hashes` import
// is evaluated. See `lib/runtime/install-crypto.ts`.
+import { bootstrap } from '@/lib/keystore/bootstrap';
import '@/lib/runtime/install-crypto';
-import { useEventListener } from 'expo';
-import { Stack } from 'expo-router';
-import { keyStore } from '@/stores/keystore';
-import { keyStoreHooks } from '@/stores/before-after';
+import { globalPolyfill, setupNavigatorPolyfill } from '@/lib/runtime/polyfill';
+import { PreventScreenshotProvider } from '@/providers/PreventScreenshotProvider';
+import { ReactNativeProvider, WalletProvider } from '@/providers/ReactNativeProvider';
import { accountsStore } from '@/stores/accounts';
+import { keyStoreHooks } from '@/stores/before-after';
import { identitiesStore } from '@/stores/identities';
-import { ReactNativeProvider, WalletProvider } from '@/providers/ReactNativeProvider';
+import { keyStore } from '@/stores/keystore';
import { passkeysStore } from '@/stores/passkeys';
-import { registerGlobals } from 'react-native-webrtc';
-import { globalPolyfill, setupNavigatorPolyfill } from '@/lib/runtime/polyfill';
+import { ReactKeystoreOptions } from '@algorandfoundation/react-native-keystore';
import ReactNativePasskeyAutofill from '@algorandfoundation/react-native-passkey-autofill';
-import { bootstrap } from '@/lib/keystore/bootstrap';
-import { PreventScreenshotProvider } from '@/providers/PreventScreenshotProvider';
+import { BottomSheetModalProvider } from '@gorhom/bottom-sheet';
+import { useEventListener } from 'expo';
+import { Stack } from 'expo-router';
+import * as SplashScreen from 'expo-splash-screen';
import React from 'react';
-import { ReactKeystoreOptions } from '@algorandfoundation/react-native-keystore';
+import { GestureHandlerRootView } from 'react-native-gesture-handler';
+import { registerGlobals } from 'react-native-webrtc';
+
+// Keep the splash screen visible while we fetch resources
+SplashScreen.preventAutoHideAsync();
globalPolyfill();
registerGlobals();
@@ -84,10 +90,14 @@ export default function RootLayout() {
});
return (
-
+
-
+
+
+
+
+
-
+
);
}
diff --git a/app/index.tsx b/app/index.tsx
index a247f8a..fc9ba61 100644
--- a/app/index.tsx
+++ b/app/index.tsx
@@ -1,62 +1,31 @@
-import React from 'react';
-import { View, Text, StyleSheet, ActivityIndicator } from 'react-native';
-import { Redirect } from 'expo-router';
-import Constants from 'expo-constants';
-import { useStore } from '@tanstack/react-store';
-import { logsStore } from '@/stores/logs';
-import Logo from '@/components/Logo';
import { useProvider } from '@/hooks/useProvider';
+import FontAwesome6 from '@expo/vector-icons/FontAwesome6';
+import MaterialIcons from '@expo/vector-icons/MaterialIcons';
+import { useFonts } from 'expo-font';
+import { Redirect } from 'expo-router';
+import * as SplashScreen from 'expo-splash-screen';
+import React from 'react';
+
export default function Index() {
+ const [fontsLoaded] = useFonts({
+ 'PlusJakartaSans-Regular': require('../assets/fonts/PlusJakartaSans-VariableFont_wght.ttf'),
+ 'PlusJakartaSans-Medium': require('../assets/fonts/PlusJakartaSans-VariableFont_wght.ttf'),
+ 'PlusJakartaSans-SemiBold': require('../assets/fonts/PlusJakartaSans-VariableFont_wght.ttf'),
+ 'PlusJakartaSans-Bold': require('../assets/fonts/PlusJakartaSans-VariableFont_wght.ttf'),
+ 'PlusJakartaSans-Italic': require('../assets/fonts/PlusJakartaSans-Italic-VariableFont_wght.ttf'),
+ ...MaterialIcons.font,
+ ...FontAwesome6.font,
+ });
const { keys, status } = useProvider();
- const logs = useStore(logsStore, (state) => state.logs);
- const lastLog = logs.length > 0 ? logs[0].message : 'Initializing...';
- const config = Constants.expoConfig?.extra?.provider || {
- primaryColor: '#3B82F6',
- };
+ React.useEffect(() => {
+ SplashScreen.hideAsync();
+ }, []);
- if (status === 'loading') {
- return (
-
-
-
-
- {lastLog}
- Securing your keys and passkeys
-
-
- );
+ if (!fontsLoaded || status === 'loading') {
+ return null;
}
if (keys.length > 0) return ;
return ;
}
-
-const styles = StyleSheet.create({
- container: {
- flex: 1,
- justifyContent: 'center',
- alignItems: 'center',
- backgroundColor: '#F8FAFC',
- padding: 24,
- },
- logo: {
- marginBottom: 40,
- },
- content: {
- marginTop: 24,
- alignItems: 'center',
- },
- text: {
- fontSize: 18,
- fontWeight: '600',
- color: '#1E293B',
- textAlign: 'center',
- },
- subtext: {
- marginTop: 8,
- fontSize: 14,
- color: '#64748B',
- textAlign: 'center',
- },
-});
diff --git a/assets/adaptive-icon.png b/assets/adaptive-icon.png
index d8ab5d1..515a9de 100644
Binary files a/assets/adaptive-icon.png and b/assets/adaptive-icon.png differ
diff --git a/assets/favicon.png b/assets/favicon.png
index fb82802..6a81472 100644
Binary files a/assets/favicon.png and b/assets/favicon.png differ
diff --git a/assets/fonts/PlusJakartaSans-Italic-VariableFont_wght.ttf b/assets/fonts/PlusJakartaSans-Italic-VariableFont_wght.ttf
new file mode 100644
index 0000000..1ccaf53
Binary files /dev/null and b/assets/fonts/PlusJakartaSans-Italic-VariableFont_wght.ttf differ
diff --git a/assets/fonts/PlusJakartaSans-VariableFont_wght.ttf b/assets/fonts/PlusJakartaSans-VariableFont_wght.ttf
new file mode 100644
index 0000000..080a386
Binary files /dev/null and b/assets/fonts/PlusJakartaSans-VariableFont_wght.ttf differ
diff --git a/assets/icon.png b/assets/icon.png
index 3b6aec2..c72e220 100644
Binary files a/assets/icon.png and b/assets/icon.png differ
diff --git a/assets/images/android-icon-background.png b/assets/images/android-icon-background.png
deleted file mode 100644
index 5ffefc5..0000000
Binary files a/assets/images/android-icon-background.png and /dev/null differ
diff --git a/assets/images/android-icon-foreground.png b/assets/images/android-icon-foreground.png
deleted file mode 100644
index 3a9e501..0000000
Binary files a/assets/images/android-icon-foreground.png and /dev/null differ
diff --git a/assets/images/android-icon-monochrome.png b/assets/images/android-icon-monochrome.png
deleted file mode 100644
index 77484eb..0000000
Binary files a/assets/images/android-icon-monochrome.png and /dev/null differ
diff --git a/assets/images/favicon.png b/assets/images/favicon.png
deleted file mode 100644
index 408bd74..0000000
Binary files a/assets/images/favicon.png and /dev/null differ
diff --git a/assets/images/icon.png b/assets/images/icon.png
deleted file mode 100644
index 7165a53..0000000
Binary files a/assets/images/icon.png and /dev/null differ
diff --git a/assets/images/partial-react-logo.png b/assets/images/partial-react-logo.png
deleted file mode 100644
index 66fd957..0000000
Binary files a/assets/images/partial-react-logo.png and /dev/null differ
diff --git a/assets/images/react-logo.png b/assets/images/react-logo.png
deleted file mode 100644
index 9d72a9f..0000000
Binary files a/assets/images/react-logo.png and /dev/null differ
diff --git a/assets/images/react-logo@2x.png b/assets/images/react-logo@2x.png
deleted file mode 100644
index 2229b13..0000000
Binary files a/assets/images/react-logo@2x.png and /dev/null differ
diff --git a/assets/images/react-logo@3x.png b/assets/images/react-logo@3x.png
deleted file mode 100644
index a99b203..0000000
Binary files a/assets/images/react-logo@3x.png and /dev/null differ
diff --git a/assets/images/splash-icon.png b/assets/images/splash-icon.png
deleted file mode 100644
index 03d6f6b..0000000
Binary files a/assets/images/splash-icon.png and /dev/null differ
diff --git a/assets/partial-react-logo.png b/assets/partial-react-logo.png
index 7b6d3f1..1e66157 100644
Binary files a/assets/partial-react-logo.png and b/assets/partial-react-logo.png differ
diff --git a/assets/react-logo.png b/assets/react-logo.png
index aa0006b..a5268c5 100644
Binary files a/assets/react-logo.png and b/assets/react-logo.png differ
diff --git a/assets/react-logo@2x.png b/assets/react-logo@2x.png
index 2b6c79e..b9ab7d7 100644
Binary files a/assets/react-logo@2x.png and b/assets/react-logo@2x.png differ
diff --git a/assets/react-logo@3x.png b/assets/react-logo@3x.png
index 03b7fca..2072791 100644
Binary files a/assets/react-logo@3x.png and b/assets/react-logo@3x.png differ
diff --git a/assets/splash-icon.png b/assets/splash-icon.png
index bfb3832..d72fc9a 100644
Binary files a/assets/splash-icon.png and b/assets/splash-icon.png differ
diff --git a/assets/splash.png b/assets/splash.png
index 035d629..0d511a4 100644
Binary files a/assets/splash.png and b/assets/splash.png differ
diff --git a/babel.config.js b/babel.config.js
new file mode 100644
index 0000000..78ff301
--- /dev/null
+++ b/babel.config.js
@@ -0,0 +1,28 @@
+const path = require('path');
+
+module.exports = function (api) {
+ api.cache(true);
+
+ return {
+ // use the expo preset
+ presets: ['babel-preset-expo'],
+ // Ignore sibling workspace projects under /packages for this app build.
+ ignore: [
+ (filename) => {
+ if (!filename) return false;
+ return filename.includes(`${path.sep}packages${path.sep}`);
+ },
+ ],
+ // other config
+ plugins: [
+ [
+ 'react-native-unistyles/plugin',
+ {
+ // pass root folder of your application
+ root: 'app',
+ },
+ ],
+ 'react-native-worklets/plugin',
+ ],
+ };
+};
diff --git a/components/Button.tsx b/components/Button.tsx
new file mode 100644
index 0000000..cfcbb29
--- /dev/null
+++ b/components/Button.tsx
@@ -0,0 +1,191 @@
+import React from 'react';
+import { ActivityIndicator, StyleProp, TouchableOpacity, ViewStyle } from 'react-native';
+import { StyleSheet, useUnistyles } from 'react-native-unistyles';
+import { AppText } from './Text';
+
+// ─── Types ────────────────────────────────────────────────────────────────────
+
+type ButtonVariant = 'primary' | 'outline' | 'ghost' | 'pill' | 'pillLight' | 'white' | 'link';
+type ButtonSize = 'sm' | 'md' | 'lg';
+type ButtonColor = 'primary' | 'secondary' | 'success' | 'error' | 'info' | 'warning';
+
+interface ButtonProps {
+ label: string;
+ onPress: () => void;
+ variant?: ButtonVariant;
+ size?: ButtonSize;
+ color?: ButtonColor;
+ fullWidth?: boolean;
+ disabled?: boolean;
+ loading?: boolean;
+ leftIcon?: React.ReactNode;
+ style?: StyleProp;
+}
+
+// ─── Component ────────────────────────────────────────────────────────────────
+
+export function Button({
+ label,
+ onPress,
+ variant = 'primary',
+ size = 'md',
+ color = 'primary',
+ fullWidth = false,
+ disabled = false,
+ loading = false,
+ leftIcon,
+ style,
+}: ButtonProps) {
+ const { theme } = useUnistyles();
+ stylesheet.useVariants({ variant, size });
+
+ const colorValue = getColorValue(theme, color);
+ const isFilled =
+ variant === 'primary' ||
+ variant === 'pill' ||
+ variant === 'outline' ||
+ variant === 'pillLight' ||
+ variant === 'white';
+ const spinnerColor =
+ variant === 'white' ? theme.colors.fg.onLight : isFilled ? theme.colors.fg.inverse : colorValue;
+
+ const textColorMap: Record = {
+ primary: 'inverse',
+ outline: 'inverse',
+ ghost: 'muted',
+ pill: 'inverse',
+ pillLight: 'inverse',
+ white: 'neutral',
+ link: 'primary',
+ };
+
+ const colorStyle = {
+ ...(variant === 'primary' || variant === 'pill' || variant === 'pillLight'
+ ? { backgroundColor: colorValue }
+ : {}),
+ ...(variant === 'outline' ? { borderColor: colorValue, backgroundColor: colorValue } : {}),
+ ...(variant === 'white' ? { backgroundColor: theme.colors.bg.white } : {}),
+ ...(variant === 'link' || variant === 'ghost' ? { backgroundColor: 'transparent' } : {}),
+ };
+
+ return (
+
+ {loading ? (
+
+ ) : (
+ <>
+ {leftIcon}
+
+ {label}
+
+ >
+ )}
+
+ );
+}
+
+// ─── Styles ───────────────────────────────────────────────────────────────────
+
+const getColorValue = (theme: any, colorName: ButtonColor) => {
+ const colorMap: Record = {
+ primary: theme.colors.brand.primary,
+ secondary: theme.colors.brand.soft,
+ success: theme.colors.state.success,
+ error: theme.colors.state.danger,
+ info: theme.colors.brand.primary,
+ warning: theme.colors.state.warning,
+ };
+ return colorMap[colorName];
+};
+
+const stylesheet = StyleSheet.create((theme) => ({
+ base: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ justifyContent: 'center',
+ gap: theme.spacing.sm,
+ variants: {
+ variant: {
+ primary: {
+ backgroundColor: theme.colors.brand.primary,
+ borderRadius: theme.borderRadius.md,
+ ...theme.shadows.primary,
+ },
+ outline: {
+ backgroundColor: 'transparent',
+ borderRadius: theme.borderRadius.md,
+ borderWidth: 1,
+ borderColor: theme.colors.border.default,
+ },
+ ghost: {
+ backgroundColor: 'transparent',
+ borderRadius: theme.borderRadius.md,
+ },
+ pill: {
+ backgroundColor: theme.colors.brand.primary,
+ borderRadius: theme.borderRadius.full,
+ ...theme.shadows.md,
+ },
+ pillLight: {
+ backgroundColor: theme.colors.bg.surface,
+ borderRadius: theme.borderRadius.full,
+ ...theme.shadows.md,
+ },
+ white: {
+ backgroundColor: theme.colors.bg.white,
+ borderRadius: theme.borderRadius.full,
+ },
+ link: {
+ backgroundColor: 'transparent',
+ borderRadius: 0,
+ paddingVertical: 0,
+ paddingHorizontal: 0,
+ },
+ },
+ size: {
+ sm: {
+ paddingVertical: theme.spacing.sm,
+ paddingHorizontal: theme.spacing.md,
+ },
+ md: {
+ paddingVertical: theme.spacing.md,
+ paddingHorizontal: theme.spacing.base,
+ },
+ lg: {
+ paddingVertical: theme.spacing.base,
+ paddingHorizontal: theme.spacing.xl,
+ },
+ },
+ },
+ },
+ fullWidth: {
+ width: '100%',
+ },
+ linkReset: {
+ borderRadius: 0,
+ paddingVertical: 0,
+ },
+ disabled: {
+ opacity: 0.5,
+ },
+ whiteLabel: {
+ color: theme.colors.fg.onLight,
+ },
+}));
diff --git a/components/ChatRow.tsx b/components/ChatRow.tsx
new file mode 100644
index 0000000..f90b7a3
--- /dev/null
+++ b/components/ChatRow.tsx
@@ -0,0 +1,92 @@
+import { AppText } from '@/components/Text';
+import FontAwesome6 from '@expo/vector-icons/FontAwesome6';
+import React from 'react';
+import { Pressable, View } from 'react-native';
+import { StyleSheet } from 'react-native-unistyles';
+
+// ─── Types ────────────────────────────────────────────────────────────────────
+
+export interface ChatThread {
+ id: string;
+ name: string;
+ preview: string;
+ timestamp: string;
+ avatarColor: string;
+ avatarBg: string;
+}
+
+// ─── Component ────────────────────────────────────────────────────────────────
+
+export function ChatRow({
+ item,
+ onPress,
+}: {
+ item: ChatThread;
+ onPress: (item: ChatThread) => void;
+}) {
+ return (
+ onPress(item)}>
+
+
+
+
+
+
+
+ {item.name}
+
+
+ {item.timestamp}
+
+
+
+ {item.preview}
+
+
+
+ );
+}
+
+// ─── Styles ───────────────────────────────────────────────────────────────────
+
+const styles = StyleSheet.create((theme) => ({
+ row: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ minHeight: 76,
+ paddingHorizontal: theme.spacing.sm,
+ paddingVertical: theme.spacing.md,
+ gap: theme.spacing.md,
+ backgroundColor: theme.colors.bg.surface,
+ borderBottomWidth: 1,
+ borderBottomColor: theme.colors.border.default,
+ },
+ avatar: {
+ width: 44,
+ height: 44,
+ borderRadius: 22,
+ borderWidth: 1,
+ justifyContent: 'center',
+ alignItems: 'center',
+ flexShrink: 0,
+ },
+ rowContent: {
+ flex: 1,
+ gap: 2,
+ justifyContent: 'center',
+ },
+ rowTop: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ justifyContent: 'space-between',
+ gap: theme.spacing.sm,
+ },
+ rowName: {
+ flex: 1,
+ },
+ rowPreview: {
+ flex: 1,
+ },
+}));
diff --git a/components/ConnectNewAgentModal.tsx b/components/ConnectNewAgentModal.tsx
new file mode 100644
index 0000000..69c69bd
--- /dev/null
+++ b/components/ConnectNewAgentModal.tsx
@@ -0,0 +1,273 @@
+import { useProvider } from '@/hooks/useProvider';
+import { MaterialIcons } from '@expo/vector-icons';
+import { BottomSheetModal } from '@gorhom/bottom-sheet';
+import { CameraView, useCameraPermissions } from 'expo-camera';
+import { useRouter } from 'expo-router';
+import React, { forwardRef, useEffect, useImperativeHandle, useRef, useState } from 'react';
+import { Alert, StyleSheet, Text, TouchableOpacity, View } from 'react-native';
+
+export interface ConnectNewAgentModalHandle {
+ open: () => void;
+ close: () => void;
+}
+
+function isValidURL(urlString: string) {
+ try {
+ new URL(urlString);
+ return true;
+ } catch {
+ return false;
+ }
+}
+
+export const ConnectNewAgentModal = forwardRef<
+ ConnectNewAgentModalHandle,
+ { children?: React.ReactNode }
+>(function ConnectNewAgentModal(_props, ref) {
+ const modalRef = useRef(null);
+ const router = useRouter();
+ const { accounts } = useProvider();
+ const [permission, requestPermission] = useCameraPermissions();
+ const [scanned, setScanned] = useState(false);
+
+ useImperativeHandle(ref, () => ({
+ open: () => {
+ setScanned(false);
+ modalRef.current?.present();
+ },
+ close: () => {
+ modalRef.current?.dismiss();
+ },
+ }));
+
+ useEffect(() => {
+ if (!permission) {
+ requestPermission();
+ }
+ }, [permission, requestPermission]);
+
+ const handleBarcodeScanned = async (scanningResult: { type: string; data: string }) => {
+ if (scanned) return;
+ setScanned(true);
+ let { data } = scanningResult;
+
+ const lowerData = data.toLowerCase();
+ // Support fido: and liquid: deeplinks
+ if (lowerData.startsWith('fido:')) {
+ try {
+ Alert.alert(
+ 'FIDO Link',
+ 'FIDO links are not supported in this modal. Please use the main Scan screen.',
+ [{ text: 'OK' }],
+ );
+ modalRef.current?.dismiss();
+ } catch {
+ Alert.alert('Error', 'Could not process FIDO link');
+ modalRef.current?.dismiss();
+ }
+ return;
+ }
+
+ if (!lowerData.startsWith('liquid:')) {
+ Alert.alert('Error', 'Unsupported QR code. Only liquid: links are supported.');
+ setScanned(false);
+ return;
+ }
+
+ // Handle liquid: links
+ let processedData = data;
+ if (lowerData.startsWith('liquid://')) {
+ processedData = 'https://' + data.substring(9);
+ } else if (lowerData.startsWith('liquid:')) {
+ processedData = 'https://' + data.substring(7);
+ }
+
+ if (isValidURL(processedData)) {
+ if (accounts.length === 0) {
+ Alert.alert('Error', 'No accounts found. Please create or import an account first.');
+ modalRef.current?.dismiss();
+ return;
+ }
+
+ const url = new URL(processedData);
+ console.log('URL detected:', processedData);
+ console.log('URL host:', url.host);
+
+ // Extract requestId from query parameter or pathname
+ let requestId = url.searchParams.get('requestId');
+ let pathname = url.pathname;
+
+ if (!requestId && pathname && pathname !== '/') {
+ // Handle liquid:/// case
+ const segments = pathname.split('/').filter(Boolean);
+ if (segments.length === 1) {
+ requestId = segments[0];
+ pathname = '/'; // Clear it from origin
+ }
+ }
+
+ if (!requestId) {
+ Alert.alert('Error', 'Invalid QR code: missing requestId');
+ setScanned(false);
+ return;
+ }
+
+ let origin = `${url.protocol}//${url.host}`;
+ if (pathname && pathname !== '/') {
+ origin += pathname;
+ }
+
+ modalRef.current?.dismiss();
+ router.push({
+ pathname: '/chat',
+ params: { origin, requestId },
+ });
+ return;
+ }
+
+ Alert.alert('Error', 'Invalid liquid link format.');
+ setScanned(false);
+ };
+
+ if (!permission) {
+ return (
+
+
+ Loading camera...
+
+
+ );
+ }
+
+ if (!permission.granted) {
+ return (
+
+
+ We need your permission to show the camera
+
+ Grant Permission
+
+
+
+ );
+ }
+
+ return (
+
+
+
+
+
+ Scan Liquid Auth QR Code
+ modalRef.current?.dismiss()}
+ >
+
+
+
+
+
+ Align QR code within the frame
+
+
+
+
+
+ );
+});
+
+const styles = StyleSheet.create({
+ modalContainer: {
+ flex: 1,
+ backgroundColor: '#000000',
+ },
+ container: {
+ flex: 1,
+ justifyContent: 'center',
+ alignItems: 'center',
+ backgroundColor: '#1e1e1e',
+ padding: 20,
+ },
+ camera: {
+ flex: 1,
+ },
+ message: {
+ textAlign: 'center',
+ paddingBottom: 10,
+ color: 'white',
+ fontSize: 16,
+ },
+ button: {
+ backgroundColor: '#3B82F6',
+ padding: 12,
+ borderRadius: 8,
+ marginTop: 16,
+ },
+ buttonText: {
+ color: 'white',
+ fontWeight: 'bold',
+ textAlign: 'center',
+ },
+ overlay: {
+ flex: 1,
+ backgroundColor: 'rgba(0,0,0,0.5)',
+ justifyContent: 'space-between',
+ padding: 20,
+ },
+ header: {
+ flexDirection: 'row',
+ justifyContent: 'space-between',
+ alignItems: 'center',
+ marginTop: 10,
+ },
+ title: {
+ color: 'white',
+ fontSize: 18,
+ fontWeight: '600',
+ flex: 1,
+ },
+ closeButton: {
+ padding: 8,
+ marginRight: -8,
+ },
+ scanAreaContainer: {
+ flex: 1,
+ justifyContent: 'center',
+ alignItems: 'center',
+ },
+ scanArea: {
+ width: 250,
+ height: 250,
+ borderWidth: 2,
+ borderColor: '#3B82F6',
+ backgroundColor: 'transparent',
+ borderRadius: 20,
+ },
+ scanText: {
+ color: 'white',
+ marginTop: 20,
+ fontSize: 16,
+ fontWeight: '500',
+ },
+});
diff --git a/components/MenuDrawer.tsx b/components/MenuDrawer.tsx
new file mode 100644
index 0000000..5c4e4c7
--- /dev/null
+++ b/components/MenuDrawer.tsx
@@ -0,0 +1,148 @@
+import { AppText } from '@/components/Text';
+import { useProvider } from '@/hooks/useProvider';
+import { identitiesStore } from '@/stores/identities';
+import { MaterialIcons } from '@expo/vector-icons';
+import { useStore } from '@tanstack/react-store';
+import * as Clipboard from 'expo-clipboard';
+import { useRouter } from 'expo-router';
+import React, { forwardRef, useImperativeHandle, useRef } from 'react';
+import { Alert, Pressable, View } from 'react-native';
+import DrawerLayout, {
+ DrawerLayoutMethods,
+} from 'react-native-gesture-handler/ReanimatedDrawerLayout';
+import { SafeAreaView } from 'react-native-safe-area-context';
+import { StyleSheet } from 'react-native-unistyles';
+
+// ─── Types ────────────────────────────────────────────────────────────────────
+
+export interface MenuDrawerHandle {
+ openDrawer: () => void;
+ closeDrawer: () => void;
+}
+
+// ─── Component ────────────────────────────────────────────────────────────────
+
+export const MenuDrawer = forwardRef(
+ function MenuDrawer({ children }, ref) {
+ const drawerRef = useRef(null);
+ const router = useRouter();
+ const { key, account, identity, passkey } = useProvider();
+ const identities = useStore(identitiesStore, (state) => state.identities);
+ const activeIdentity = identities.length > 0 ? identities[0] : null;
+
+ useImperativeHandle(ref, () => ({
+ openDrawer: () => drawerRef.current?.openDrawer(),
+ closeDrawer: () => drawerRef.current?.closeDrawer(),
+ }));
+
+ return (
+ (
+
+ {activeIdentity && (
+
+
+ Controller DID
+
+
+
+ {activeIdentity.did || 'No identity found'}
+
+ {
+ await Clipboard.setStringAsync(activeIdentity.did || '');
+ Alert.alert('Copied', 'DID copied to clipboard');
+ }}
+ >
+
+
+
+
+ )}
+
+
+ Alert.alert(
+ 'Reset Wallet',
+ 'Are you sure you want to reset your wallet? This action cannot be undone.',
+ [
+ { text: 'Cancel', style: 'cancel' },
+ {
+ text: 'Reset',
+ style: 'destructive',
+ onPress: async () => {
+ await key.store.clear();
+ await account.store.clear();
+ await identity.store.clear();
+ await passkey.store.clear();
+ router.replace('/onboarding');
+ },
+ },
+ ],
+ )
+ }
+ >
+
+ Reset Wallet
+
+
+
+ )}
+ >
+ {children}
+
+ );
+ },
+);
+
+// ─── Styles ───────────────────────────────────────────────────────────────────
+
+const styles = StyleSheet.create((theme) => ({
+ panel: {
+ flex: 1,
+ backgroundColor: theme.colors.bg.surface,
+ paddingHorizontal: theme.spacing.base,
+ justifyContent: 'space-between',
+ },
+ didCard: {
+ paddingVertical: theme.spacing.md,
+ paddingHorizontal: theme.spacing.md,
+ marginBottom: theme.spacing.md,
+ backgroundColor: theme.colors.bg.surface,
+ borderRadius: 8,
+ borderWidth: 1,
+ borderColor: theme.colors.border.default,
+ },
+ cardLabel: {
+ fontSize: 12,
+ marginBottom: theme.spacing.sm,
+ color: theme.colors.fg.muted,
+ },
+ didRow: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ gap: theme.spacing.sm,
+ },
+ didText: {
+ flex: 1,
+ fontSize: 12,
+ color: theme.colors.fg.default,
+ fontFamily: 'monospace',
+ },
+ copyButton: {
+ padding: theme.spacing.xs,
+ },
+ menu: {
+ flex: 1,
+ },
+ menuItem: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ gap: theme.spacing.md,
+ paddingVertical: theme.spacing.md,
+ },
+}));
diff --git a/components/ServiceSecretKeyVaultModal.tsx b/components/ServiceSecretKeyVaultModal.tsx
new file mode 100644
index 0000000..6ee3024
--- /dev/null
+++ b/components/ServiceSecretKeyVaultModal.tsx
@@ -0,0 +1,413 @@
+import type { Key } from '@algorandfoundation/keystore';
+import { MaterialIcons } from '@expo/vector-icons';
+import {
+ BottomSheetBackdrop,
+ BottomSheetModal,
+ BottomSheetScrollView,
+ BottomSheetTextInput,
+} from '@gorhom/bottom-sheet';
+import { forwardRef, useCallback, useState, type ComponentProps } from 'react';
+import { Alert, Pressable, View } from 'react-native';
+import { StyleSheet, useUnistyles } from 'react-native-unistyles';
+
+import { useProvider } from '@/hooks/useProvider';
+import { Button } from './Button';
+import { AppText } from './Text';
+
+// ─── Types ────────────────────────────────────────────────────────────────────
+
+interface SecretKeyVaultModalProps {
+ onDismiss?: () => void;
+}
+
+// ─── Key Row ─────────────────────────────────────────────────────────────────
+
+function SecretKeyRow({ item, onRemove }: { item: Key; onRemove: (id: string) => void }) {
+ const { theme } = useUnistyles();
+ const { key } = useProvider();
+ const label = (item.metadata?.serviceName as string | undefined) ?? item.id.slice(0, 8);
+ const [revealed, setRevealed] = useState(null);
+ const [revealing, setRevealing] = useState(false);
+
+ const handleToggleVisible = async () => {
+ if (revealed !== null) {
+ setRevealed(null);
+ return;
+ }
+ setRevealing(true);
+ try {
+ const keyData = await key.store.export(item.id);
+ if (keyData.privateKey) {
+ setRevealed(new TextDecoder().decode(keyData.privateKey));
+ }
+ } catch (e) {
+ console.error(e);
+ Alert.alert('Error', 'Failed to reveal the key.');
+ } finally {
+ setRevealing(false);
+ }
+ };
+
+ return (
+
+
+
+
+
+
+ {label}
+
+
+ {revealed ?? '••••••••••••••••'}
+
+
+
+
+
+
+ Alert.alert('Remove Key', `Remove the key for "${label}"?`, [
+ { text: 'Cancel', style: 'cancel' },
+ { text: 'Remove', style: 'destructive', onPress: () => onRemove(item.id) },
+ ])
+ }
+ hitSlop={8}
+ style={stylesheet.iconButton}
+ >
+
+
+
+ );
+}
+
+// ─── Modal ────────────────────────────────────────────────────────────────────
+
+export const ServiceSecretKeyVaultModal = forwardRef(
+ ({ onDismiss }, ref) => {
+ const { keys, key } = useProvider();
+ const { theme } = useUnistyles();
+ const [serviceName, setServiceName] = useState('');
+ const [keyValue, setKeyValue] = useState('');
+ const [keyVisible, setKeyVisible] = useState(false);
+ const [isAdding, setIsAdding] = useState(false);
+ const [loading, setLoading] = useState(false);
+
+ const secretKeys = keys.filter((k) => k.type === 'secret-key');
+
+ const renderBackdrop = useCallback(
+ (props: ComponentProps) => (
+
+ ),
+ [],
+ );
+
+ const resetForm = () => {
+ setServiceName('');
+ setKeyValue('');
+ setKeyVisible(false);
+ setIsAdding(false);
+ };
+
+ const handleAdd = async () => {
+ if (!serviceName.trim() || !keyValue.trim()) return;
+ setLoading(true);
+ try {
+ await key.store.import({
+ type: 'secret-key',
+ algorithm: 'raw',
+ extractable: true,
+ metadata: { serviceName: serviceName.trim() },
+ privateKey: new TextEncoder().encode(keyValue.trim()),
+ } as any);
+ resetForm();
+ } catch (e) {
+ console.error(e);
+ Alert.alert('Error', 'Failed to store the key. Please try again.');
+ } finally {
+ setLoading(false);
+ }
+ };
+
+ const handleRemove = async (id: string) => {
+ try {
+ await key.store.remove(id);
+ } catch {
+ Alert.alert('Error', 'Failed to remove the key.');
+ }
+ };
+
+ return (
+
+
+ {/* Header */}
+
+
+
+ Secret Key Vault
+
+ onDismiss?.()} hitSlop={8}>
+
+
+
+
+ {/* Scrollable key list */}
+
+ {secretKeys.length === 0 ? (
+
+
+
+ {'No secret keys stored yet.\nAdd a key to use with agent services.'}
+
+
+ ) : (
+
+
+ STORED KEYS ({secretKeys.length})
+
+ {secretKeys.map((k) => (
+
+ ))}
+
+ )}
+
+
+ {/* Fixed footer — add button or add form */}
+
+ {isAdding ? (
+
+
+ ADD NEW KEY
+
+
+
+ Service Name
+
+
+
+
+
+ Secret Key
+
+
+
+ setKeyVisible((v) => !v)}
+ hitSlop={8}
+ style={stylesheet.eyeButton}
+ >
+
+
+
+
+
+
+
+
+
+ ) : (
+
+
+
+ );
+ },
+);
+
+ServiceSecretKeyVaultModal.displayName = 'ServiceSecretKeyVaultModal';
+
+// ─── Styles ───────────────────────────────────────────────────────────────────
+
+const stylesheet = StyleSheet.create((theme) => ({
+ shell: {
+ backgroundColor: theme.colors.bg.surface,
+ },
+ body: {
+ flex: 1,
+ },
+ header: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ justifyContent: 'space-between',
+ paddingHorizontal: theme.spacing.base,
+ paddingVertical: theme.spacing.md,
+ borderBottomWidth: 1,
+ borderBottomColor: theme.colors.border.default,
+ },
+ headerLeft: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ gap: theme.spacing.sm,
+ },
+ scroll: {
+ flex: 1,
+ },
+ scrollContent: {
+ paddingHorizontal: theme.spacing.base,
+ paddingTop: theme.spacing.base,
+ paddingBottom: theme.spacing.md,
+ },
+ emptyState: {
+ alignItems: 'center',
+ paddingVertical: theme.spacing.xl,
+ gap: theme.spacing.sm,
+ },
+ emptyText: {
+ textAlign: 'center',
+ },
+ section: {
+ gap: theme.spacing.sm,
+ },
+ sectionLabel: {
+ letterSpacing: 0.5,
+ },
+ keyRow: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ backgroundColor: theme.colors.bg.surface,
+ borderRadius: theme.borderRadius.md,
+ borderWidth: 1,
+ borderColor: theme.colors.border.default,
+ padding: theme.spacing.md,
+ gap: theme.spacing.md,
+ },
+ keyRowIcon: {
+ width: 36,
+ height: 36,
+ borderRadius: theme.borderRadius.sm,
+ backgroundColor: theme.colors.bg.app,
+ alignItems: 'center',
+ justifyContent: 'center',
+ },
+ keyRowInfo: {
+ flex: 1,
+ gap: 2,
+ },
+ iconButton: {
+ padding: theme.spacing.xs,
+ },
+ footer: {
+ borderTopWidth: 1,
+ borderTopColor: theme.colors.border.default,
+ paddingHorizontal: theme.spacing.base,
+ paddingTop: theme.spacing.md,
+ paddingBottom: theme.spacing.xl,
+ backgroundColor: theme.colors.bg.surface,
+ },
+ form: {
+ gap: theme.spacing.sm,
+ },
+ inputGroup: {
+ gap: theme.spacing.xs,
+ },
+ inputWrapper: {
+ position: 'relative',
+ justifyContent: 'center',
+ },
+ input: {
+ backgroundColor: theme.colors.bg.app,
+ borderRadius: theme.borderRadius.md,
+ borderWidth: 1,
+ borderColor: theme.colors.border.default,
+ paddingHorizontal: theme.spacing.md,
+ paddingVertical: theme.spacing.md,
+ fontSize: theme.typography.sizes.base,
+ color: theme.colors.fg.default,
+ fontFamily: theme.typography.fonts.regular,
+ },
+ inputWithEye: {
+ paddingRight: theme.spacing.xl + theme.spacing.md,
+ },
+ eyeButton: {
+ position: 'absolute',
+ right: theme.spacing.md,
+ },
+ formActions: {
+ flexDirection: 'row',
+ justifyContent: 'flex-end',
+ gap: theme.spacing.sm,
+ marginTop: theme.spacing.xs,
+ },
+ cancelBtn: {
+ minWidth: 80,
+ },
+ saveBtn: {
+ minWidth: 100,
+ },
+}));
diff --git a/components/Text.tsx b/components/Text.tsx
new file mode 100644
index 0000000..d05dab2
--- /dev/null
+++ b/components/Text.tsx
@@ -0,0 +1,107 @@
+import React from 'react';
+import { Text, TextProps } from 'react-native';
+import { StyleSheet } from 'react-native-unistyles';
+
+// ─── Types ────────────────────────────────────────────────────────────────────
+
+type TextVariant = 'h1' | 'h2' | 'h3' | 'body' | 'label' | 'caption' | 'micro';
+type TextColor = 'neutral' | 'muted' | 'inverse' | 'primary' | 'success' | 'danger' | 'warning';
+
+interface AppTextProps extends TextProps {
+ variant?: TextVariant;
+ color?: TextColor;
+ bold?: boolean;
+ children: React.ReactNode;
+}
+
+// ─── Component ────────────────────────────────────────────────────────────────
+
+export function AppText({
+ variant = 'body',
+ color = 'neutral',
+ bold = false,
+ style,
+ children,
+ ...rest
+}: AppTextProps) {
+ stylesheet.useVariants({ variant, color });
+
+ return (
+
+ {children}
+
+ );
+}
+
+// ─── Styles ───────────────────────────────────────────────────────────────────
+
+const stylesheet = StyleSheet.create((theme) => ({
+ base: {
+ variants: {
+ variant: {
+ h1: {
+ fontSize: theme.typography.sizes.xl * 1.22,
+ fontFamily: theme.typography.fonts.bold,
+ fontWeight: theme.typography.weights.bold,
+ lineHeight: theme.typography.sizes.xl * 1.22 * theme.typography.lineHeights.tight,
+ color: theme.colors.fg.default,
+ },
+ h2: {
+ fontSize: theme.typography.sizes.xl,
+ fontFamily: theme.typography.fonts.bold,
+ fontWeight: theme.typography.weights.bold,
+ lineHeight: theme.typography.sizes.xl * theme.typography.lineHeights.tight,
+ color: theme.colors.fg.default,
+ },
+ h3: {
+ fontSize: theme.typography.sizes.lg,
+ fontFamily: theme.typography.fonts.semiBold,
+ fontWeight: theme.typography.weights.semiBold,
+ lineHeight: theme.typography.sizes.lg * theme.typography.lineHeights.normal,
+ color: theme.colors.fg.default,
+ },
+ body: {
+ fontSize: theme.typography.sizes.base,
+ fontFamily: theme.typography.fonts.regular,
+ fontWeight: theme.typography.weights.regular,
+ lineHeight: theme.typography.sizes.base * theme.typography.lineHeights.normal,
+ color: theme.colors.fg.default,
+ },
+ label: {
+ fontSize: theme.typography.sizes.md,
+ fontFamily: theme.typography.fonts.semiBold,
+ fontWeight: theme.typography.weights.semiBold,
+ lineHeight: theme.typography.sizes.md * theme.typography.lineHeights.normal,
+ color: theme.colors.fg.default,
+ },
+ caption: {
+ fontSize: theme.typography.sizes.sm,
+ fontFamily: theme.typography.fonts.medium,
+ fontWeight: theme.typography.weights.medium,
+ lineHeight: theme.typography.sizes.sm * theme.typography.lineHeights.relaxed,
+ color: theme.colors.fg.muted,
+ },
+ micro: {
+ fontSize: theme.typography.sizes.xs,
+ fontFamily: theme.typography.fonts.medium,
+ fontWeight: theme.typography.weights.medium,
+ lineHeight: theme.typography.sizes.xs * theme.typography.lineHeights.relaxed,
+ color: theme.colors.fg.muted,
+ },
+ },
+ color: {
+ neutral: { color: theme.colors.fg.default },
+ muted: { color: theme.colors.fg.muted },
+ inverse: { color: theme.colors.fg.inverse },
+ primary: { color: theme.colors.fg.primary },
+ success: { color: theme.colors.fg.success },
+ danger: { color: theme.colors.fg.danger },
+ warning: { color: theme.colors.fg.warning },
+ },
+ },
+ },
+ bold: {
+ fontFamily: theme.typography.fonts.bold,
+ fontWeight: theme.typography.weights.bold,
+ },
+}));
diff --git a/components/WarningBanner.tsx b/components/WarningBanner.tsx
new file mode 100644
index 0000000..714931f
--- /dev/null
+++ b/components/WarningBanner.tsx
@@ -0,0 +1,45 @@
+import { AppText } from '@/components/Text';
+import { MaterialIcons } from '@expo/vector-icons';
+import React from 'react';
+import { View } from 'react-native';
+import { StyleSheet, useUnistyles } from 'react-native-unistyles';
+
+// ─── Types ────────────────────────────────────────────────────────────────────
+
+interface WarningBannerProps {
+ message: string;
+}
+
+// ─── Component ────────────────────────────────────────────────────────────────
+
+export function WarningBanner({ message }: WarningBannerProps) {
+ const { theme } = useUnistyles();
+
+ return (
+
+
+
+ {message}
+
+
+ );
+}
+
+// ─── Styles ───────────────────────────────────────────────────────────────────
+
+const styles = StyleSheet.create((theme) => ({
+ warningCard: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ gap: theme.spacing.sm,
+ paddingHorizontal: theme.spacing.sm,
+ paddingVertical: theme.spacing.sm,
+ backgroundColor: theme.palette.yellow[100],
+ borderBottomWidth: 1,
+ borderBottomColor: theme.colors.state.warning,
+ },
+ warningText: {
+ color: theme.colors.state.warning,
+ flex: 1,
+ },
+}));
diff --git a/components/ac2/TelemetryTraceModal.tsx b/components/ac2/TelemetryTraceModal.tsx
new file mode 100644
index 0000000..b1cfcff
--- /dev/null
+++ b/components/ac2/TelemetryTraceModal.tsx
@@ -0,0 +1,280 @@
+import { BottomSheetBackdrop, BottomSheetFlatList, BottomSheetModal } from '@gorhom/bottom-sheet';
+import { AppText as Text } from '../Text';
+
+import { AC2Message } from '@algorandfoundation/ac2-sdk/schema';
+import { MaterialIcons } from '@expo/vector-icons';
+import { forwardRef, useCallback, useState } from 'react';
+import { Platform, Pressable, ScrollView, TouchableOpacity, View } from 'react-native';
+import { StyleSheet } from 'react-native-unistyles';
+
+interface AC2TelemetryTraceModalProps {
+ /**
+ * Array of AC2 messages to display in the telemetry trace.
+ */
+ messages: AC2Message[];
+ onDismiss?: () => void;
+}
+
+function formatTimestamp(unix: number): string {
+ return new Date(unix * 1000).toLocaleString(undefined, {
+ year: 'numeric',
+ month: 'short',
+ day: '2-digit',
+ hour: '2-digit',
+ minute: '2-digit',
+ second: '2-digit',
+ });
+}
+
+function shortType(type: string): string {
+ const slash = type.lastIndexOf('/');
+ return slash >= 0 ? type.slice(slash + 1) : type;
+}
+
+function MessageCard({ message }: { message: AC2Message }) {
+ const [jsonVisible, setJsonVisible] = useState(false);
+ const styles = stylesheet;
+
+ return (
+
+
+ [{formatTimestamp(message.created_time)}] {shortType(message.type)}
+
+ {message.type}
+
+ From: {message.from}
+
+ {message.id && ID: {message.id.slice(0, 16)}...}
+ setJsonVisible((v) => !v)}
+ style={styles.toggleBtn}
+ activeOpacity={0.8}
+ >
+
+ {jsonVisible ? 'Hide JSON' : 'View JSON'}
+
+ {jsonVisible && (
+
+ {JSON.stringify(message, null, 2)}
+
+ )}
+
+ );
+}
+
+export const AC2TelemetryTraceModal = forwardRef(
+ ({ messages, onDismiss }, ref) => {
+ const renderBackdrop = useCallback(
+ (props: React.ComponentProps) => (
+
+ ),
+ [],
+ );
+
+ return (
+
+
+ {/** Header */}
+
+
+
+
+ AC2 Telemetry Trace
+
+
+
+ alert('Not yet implemented!')}
+ style={stylesheet.exportBtn}
+ activeOpacity={0.8}
+ >
+ Export JSON
+
+ onDismiss?.()} hitSlop={8} style={stylesheet.closeButton}>
+
+
+
+
+ {/** Content */}
+ msg.id ?? `${msg.type}-${msg.created_time}-${index}`}
+ renderItem={({ item }) => }
+ contentContainerStyle={stylesheet.container}
+ showsVerticalScrollIndicator={false}
+ nestedScrollEnabled
+ keyboardShouldPersistTaps="handled"
+ />
+
+
+ );
+ },
+);
+
+AC2TelemetryTraceModal.displayName = 'AC2 TelemetryTraceModal';
+
+// ─── Styles ───────────────────────────────────────────────────────────────────
+
+const stylesheet = StyleSheet.create((theme) => ({
+ shell: {
+ backgroundColor: theme.colors.bg.darkAlt,
+ },
+ body: {
+ flex: 1,
+ },
+ scroll: {
+ flex: 1,
+ },
+ container: {
+ paddingHorizontal: theme.spacing.sm,
+ paddingVertical: theme.spacing.md,
+ paddingBottom: theme.spacing.xl,
+ },
+ header: {
+ flexDirection: 'row',
+ justifyContent: 'space-between',
+ alignItems: 'center',
+ backgroundColor: theme.colors.bg.dark,
+ paddingHorizontal: theme.spacing.sm,
+ paddingVertical: theme.spacing.md,
+ },
+ headerTitleRow: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ gap: theme.spacing.sm,
+ flexShrink: 1,
+ },
+ shieldIcon: {
+ color: theme.colors.fg.primary,
+ },
+ headerButtonRow: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ gap: theme.spacing.sm,
+ },
+ closeButton: {
+ alignItems: 'center',
+ justifyContent: 'center',
+ },
+ closeIcon: {
+ color: theme.colors.fg.inverse,
+ },
+ exportBtn: {
+ borderWidth: 1,
+ borderColor: theme.colors.border.default,
+ borderRadius: theme.borderRadius.sm,
+ paddingVertical: theme.spacing.xs,
+ paddingHorizontal: theme.spacing.sm,
+ },
+ exportBtnLabel: {
+ fontSize: theme.typography.sizes.sm,
+ color: theme.colors.fg.inverse,
+ fontFamily: theme.typography.fonts.bold,
+ },
+ title: {
+ flexShrink: 1,
+ fontSize: theme.typography.sizes.lg,
+ fontFamily: Platform.select({
+ ios: 'Menlo',
+ android: 'monospace',
+ default: 'monospace',
+ }),
+ fontWeight: 'bold',
+ color: theme.colors.fg.inverse,
+ },
+ card: {
+ backgroundColor: theme.colors.bg.header,
+ borderRadius: theme.borderRadius.md,
+ padding: theme.spacing.md,
+ marginBottom: theme.spacing.md,
+ borderWidth: 1,
+ borderColor: theme.colors.border.default,
+ },
+ meta: {
+ fontSize: theme.typography.sizes.md,
+ color: theme.colors.fg.primary,
+ marginBottom: theme.spacing.xs,
+ fontFamily: Platform.select({
+ ios: 'Menlo',
+ android: 'monospace',
+ default: 'monospace',
+ }),
+ fontWeight: 'bold',
+ },
+ detail: {
+ fontSize: theme.typography.sizes.sm,
+ color: theme.colors.fg.muted,
+ marginBottom: theme.spacing.xs,
+ fontFamily: Platform.select({
+ ios: 'Menlo',
+ android: 'monospace',
+ default: 'monospace',
+ }),
+ },
+ id: {
+ fontSize: theme.typography.sizes.sm,
+ color: theme.colors.fg.success,
+ marginBottom: theme.spacing.sm,
+ fontFamily: Platform.select({
+ ios: 'Menlo',
+ android: 'monospace',
+ default: 'monospace',
+ }),
+ fontWeight: 'bold',
+ },
+ toggleBtn: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ gap: theme.spacing.xs,
+ backgroundColor: theme.colors.bg.dark,
+ borderRadius: theme.borderRadius.sm,
+ paddingVertical: theme.spacing.xs,
+ paddingHorizontal: theme.spacing.sm,
+ alignSelf: 'flex-start',
+ marginBottom: theme.spacing.sm,
+ borderWidth: 1,
+ borderColor: theme.colors.border.default,
+ },
+ toggleIcon: {
+ color: theme.colors.fg.inverse,
+ },
+ toggleLabel: {
+ fontSize: theme.typography.sizes.xs,
+ color: theme.colors.fg.inverse,
+ fontFamily: Platform.select({
+ ios: 'Menlo',
+ android: 'monospace',
+ default: 'monospace',
+ }),
+ fontWeight: 'bold',
+ },
+ jsonBox: {
+ backgroundColor: theme.colors.bg.dark,
+ borderRadius: theme.borderRadius.sm,
+ padding: theme.spacing.sm,
+ },
+ json: {
+ fontSize: theme.typography.sizes.xs,
+ color: theme.colors.fg.success,
+ fontFamily: Platform.select({
+ ios: 'Menlo',
+ android: 'monospace',
+ default: 'monospace',
+ }),
+ },
+}));
diff --git a/index.ts b/index.ts
new file mode 100644
index 0000000..1df3241
--- /dev/null
+++ b/index.ts
@@ -0,0 +1,2 @@
+import 'expo-router/entry';
+import './unistyles';
diff --git a/jest.config.js b/jest.config.js
index 421ddf1..0ad3e14 100644
--- a/jest.config.js
+++ b/jest.config.js
@@ -1,5 +1,6 @@
module.exports = {
preset: 'jest-expo',
+ resolver: 'react-native-worklets/jest/resolver',
setupFilesAfterEnv: ['@testing-library/jest-native/extend-expect'],
testPathIgnorePatterns: [
'/packages/ac2-sdk/tests/',
@@ -11,6 +12,7 @@ module.exports = {
moduleNameMapper: {
'^@/(.*)$': '/$1',
'^@algorandfoundation/(.*)$': '/node_modules/@algorandfoundation/$1',
+ '^react-native-worklets$': '/node_modules/react-native-worklets/lib/module/mock.js',
'^(\\.{1,2}/.*)\\.js$': '$1',
},
};
diff --git a/package.json b/package.json
index e0a874d..56177c7 100644
--- a/package.json
+++ b/package.json
@@ -5,7 +5,7 @@
"workspaces": [
"packages/*"
],
- "main": "expo-router/entry",
+ "main": "index.ts",
"scripts": {
"start": "expo start",
"android": "expo run:android --port 8082",
@@ -41,10 +41,11 @@
"@algorandfoundation/liquid-client": "^1.0.0-canary.9",
"@algorandfoundation/log-store": "^1.0.0-canary.3",
"@algorandfoundation/react-native-keystore": "^1.0.0-canary.12",
- "@algorandfoundation/react-native-passkey-autofill": "1.0.0-canary.20",
+ "@algorandfoundation/react-native-passkey-autofill": "1.0.0-canary.21",
"@algorandfoundation/wallet-provider": "1.0.0-canary.5",
"@config-plugins/react-native-webrtc": "^13.0.0",
"@expo/vector-icons": "^15.0.3",
+ "@gorhom/bottom-sheet": "^5.2.14",
"@noble/hashes": "^1.8.0",
"@react-navigation/bottom-tabs": "^7.4.0",
"@react-navigation/elements": "^2.6.3",
@@ -57,6 +58,7 @@
"buffer": "^6.0.3",
"expo": "^54.0.33",
"expo-camera": "~17.0.10",
+ "expo-clipboard": "^8.0.8",
"expo-constants": "~18.0.13",
"expo-dev-client": "~6.0.20",
"expo-document-picker": "~14.0.8",
@@ -82,13 +84,14 @@
"react-native-json-tree": "^1.5.0",
"react-native-keychain": "10.0.0",
"react-native-mmkv": "^4.3.1",
- "react-native-nitro-modules": "^0.35.0",
+ "react-native-nitro-modules": "^0.35.9",
"react-native-passkey": "^3.3.2",
- "react-native-quick-base64": "3.0.0",
+ "react-native-quick-base64": "2.2.2",
"react-native-quick-crypto": "1.1.5",
- "react-native-reanimated": "~3.19.5",
+ "react-native-reanimated": "~4.1.7",
"react-native-safe-area-context": "~5.6.0",
"react-native-screens": "~4.16.0",
+ "react-native-unistyles": "^3.2.5",
"react-native-webrtc": "^124.0.7",
"socket.io-client": "^4.8.3"
},
@@ -96,26 +99,26 @@
"@babel/runtime": "^7.29.7",
"@testing-library/jest-native": "^5.4.3",
"@testing-library/react-native": "^13.3.3",
- "@types/jest": "^30.0.0",
+ "@types/jest": "^29.5.14",
"@types/react": "~19.1.0",
"eas-cli": "^20.1.0",
- "expo-build-properties": "^55.0.9",
+ "expo-build-properties": "^1.0.10",
"jest": "^29.7.0",
- "jest-expo": "^55.0.9",
+ "jest-expo": "^54.0.17",
"lefthook": "^2.1.2",
"oxfmt": "^0.44.0",
"oxlint": "^1.61.0",
"patch-package": "^8.0.1",
"postinstall-postinstall": "^2.1.0",
"react-test-renderer": "19.1.0",
- "typescript": "~5.8.3"
+ "typescript": "~5.9.3"
},
"overrides": {
"@algorandfoundation/react-native-keystore": {
"react-native-mmkv": "$react-native-mmkv",
"react-native-quick-crypto": "$react-native-quick-crypto"
},
- "@xmldom/xmldom": "^0.9.10",
+ "@xmldom/xmldom": "0.8.10",
"ajv": "^8.18.0",
"diff": "^8.0.3",
"lightningcss": "1.30.1",
@@ -133,7 +136,7 @@
"pnpm": {
"overrides": {
"@tanstack/store": "0.9.3",
- "@xmldom/xmldom": "^0.9.10",
+ "@xmldom/xmldom": "0.8.10",
"ajv": "^8.18.0",
"diff": "^8.0.3",
"lightningcss": "1.30.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 561b3da..89aa1fb 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -6,7 +6,7 @@ settings:
overrides:
'@tanstack/store': 0.9.3
- '@xmldom/xmldom': ^0.9.10
+ '@xmldom/xmldom': 0.8.10
ajv: ^8.18.0
diff: ^8.0.3
lightningcss: 1.30.1
@@ -53,10 +53,10 @@ importers:
version: 1.0.0-canary.3(@tanstack/store@0.9.3)(before-after-hook@4.0.0)
'@algorandfoundation/react-native-keystore':
specifier: ^1.0.0-canary.12
- version: 1.0.0-canary.12(@algorandfoundation/log-store@1.0.0-canary.3(@tanstack/store@0.9.3)(before-after-hook@4.0.0))(@tanstack/store@0.9.3)(before-after-hook@4.0.0)(expo-build-properties@55.0.14(expo@54.0.35))(expo@54.0.35)(react-native-nitro-modules@0.35.9(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-quick-base64@3.0.0(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ version: 1.0.0-canary.12(@algorandfoundation/log-store@1.0.0-canary.3(@tanstack/store@0.9.3)(before-after-hook@4.0.0))(@tanstack/store@0.9.3)(before-after-hook@4.0.0)(expo-build-properties@1.0.10(expo@54.0.35))(expo@54.0.35)(react-native-nitro-modules@0.35.9(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-quick-base64@2.2.2(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
'@algorandfoundation/react-native-passkey-autofill':
- specifier: 1.0.0-canary.20
- version: 1.0.0-canary.20(@algorandfoundation/log-store@1.0.0-canary.3(@tanstack/store@0.9.3)(before-after-hook@4.0.0))(@tanstack/store@0.9.3)(before-after-hook@4.0.0)(expo-build-properties@55.0.14(expo@54.0.35))(expo@54.0.35)(react-native-nitro-modules@0.35.9(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-quick-base64@3.0.0(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ specifier: 1.0.0-canary.21
+ version: 1.0.0-canary.21(@algorandfoundation/log-store@1.0.0-canary.3(@tanstack/store@0.9.3)(before-after-hook@4.0.0))(@tanstack/store@0.9.3)(before-after-hook@4.0.0)(expo-build-properties@1.0.10(expo@54.0.35))(expo@54.0.35)(react-native-nitro-modules@0.35.9(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-quick-base64@2.2.2(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
'@algorandfoundation/wallet-provider':
specifier: 1.0.0-canary.5
version: 1.0.0-canary.5
@@ -65,19 +65,22 @@ importers:
version: 13.0.0(expo@54.0.35)
'@expo/vector-icons':
specifier: ^15.0.3
- version: 15.1.1(expo-font@14.0.12(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ version: 15.1.1(expo-font@14.0.12(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@gorhom/bottom-sheet':
+ specifier: ^5.2.14
+ version: 5.2.14(@types/react@19.1.17)(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-reanimated@4.1.7(react-native-worklets@0.8.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
'@noble/hashes':
specifier: ^1.8.0
version: 1.8.0
'@react-navigation/bottom-tabs':
specifier: ^7.4.0
- version: 7.16.2(@react-navigation/native@7.2.5(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ version: 7.16.2(@react-navigation/native@7.2.5(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
'@react-navigation/elements':
specifier: ^2.6.3
- version: 2.9.19(@react-navigation/native@7.2.5(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ version: 2.9.19(@react-navigation/native@7.2.5(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
'@react-navigation/native':
specifier: ^7.1.8
- version: 7.2.5(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ version: 7.2.5(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
'@scure/base':
specifier: ^2.0.0
version: 2.2.0
@@ -98,13 +101,16 @@ importers:
version: 6.0.3
expo:
specifier: ^54.0.33
- version: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.8.3)
+ version: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.3)
expo-camera:
specifier: ~17.0.10
- version: 17.0.10(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ version: 17.0.10(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ expo-clipboard:
+ specifier: ^8.0.8
+ version: 8.0.8(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
expo-constants:
specifier: ~18.0.13
- version: 18.0.13(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))
+ version: 18.0.13(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))
expo-dev-client:
specifier: ~6.0.20
version: 6.0.21(expo@54.0.35)
@@ -113,22 +119,22 @@ importers:
version: 14.0.8(expo@54.0.35)
expo-file-system:
specifier: ~19.0.21
- version: 19.0.23(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))
+ version: 19.0.23(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))
expo-font:
specifier: ~14.0.11
- version: 14.0.12(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ version: 14.0.12(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
expo-haptics:
specifier: ~15.0.8
version: 15.0.8(expo@54.0.35)
expo-image:
specifier: ~3.0.11
- version: 3.0.11(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ version: 3.0.11(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
expo-linking:
specifier: ~8.0.11
- version: 8.0.12(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ version: 8.0.12(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
expo-router:
specifier: ~6.0.23
- version: 6.0.24(ace148d1f520ff029f39906dc9ee7269)
+ version: 6.0.24(72aa1b4e09fcc05a20cea2fc14c00517)
expo-screen-capture:
specifier: ~8.0.9
version: 8.0.9(expo@54.0.35)(react@19.1.0)
@@ -137,22 +143,22 @@ importers:
version: 14.0.8(expo@54.0.35)
expo-splash-screen:
specifier: ~31.0.13
- version: 31.0.13(expo@54.0.35)(typescript@5.8.3)
+ version: 31.0.13(expo@54.0.35)(typescript@5.9.3)
expo-status-bar:
specifier: ~3.0.9
- version: 3.0.9(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ version: 3.0.9(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
expo-symbols:
specifier: ~1.0.8
- version: 1.0.8(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))
+ version: 1.0.8(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))
expo-system-ui:
specifier: ~6.0.9
- version: 6.0.9(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))
+ version: 6.0.9(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))
expo-updates:
specifier: ~29.0.16
- version: 29.0.18(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ version: 29.0.18(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
expo-web-browser:
specifier: ~15.0.10
- version: 15.0.11(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))
+ version: 15.0.11(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))
react:
specifier: 19.1.0
version: 19.1.0
@@ -164,43 +170,46 @@ importers:
version: 19.1.0(react@19.1.0)
react-native:
specifier: 0.81.5
- version: 0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)
+ version: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
react-native-gesture-handler:
specifier: ~2.28.0
- version: 2.28.0(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ version: 2.28.0(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
react-native-json-tree:
specifier: ^1.5.0
- version: 1.5.0(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ version: 1.5.0(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
react-native-keychain:
specifier: 10.0.0
version: 10.0.0
react-native-mmkv:
specifier: ^4.3.1
- version: 4.3.1(react-native-nitro-modules@0.35.9(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ version: 4.3.1(react-native-nitro-modules@0.35.9(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
react-native-nitro-modules:
- specifier: ^0.35.0
- version: 0.35.9(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ specifier: ^0.35.9
+ version: 0.35.9(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
react-native-passkey:
specifier: ^3.3.2
- version: 3.4.0(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ version: 3.4.0(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
react-native-quick-base64:
- specifier: 3.0.0
- version: 3.0.0(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ specifier: 2.2.2
+ version: 2.2.2(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
react-native-quick-crypto:
specifier: 1.1.5
- version: 1.1.5(expo-build-properties@55.0.14(expo@54.0.35))(expo@54.0.35)(react-native-nitro-modules@0.35.9(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-quick-base64@3.0.0(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ version: 1.1.5(expo-build-properties@1.0.10(expo@54.0.35))(expo@54.0.35)(react-native-nitro-modules@0.35.9(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-quick-base64@2.2.2(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
react-native-reanimated:
- specifier: ~3.19.5
- version: 3.19.5(@babel/core@7.29.7)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ specifier: ~4.1.7
+ version: 4.1.7(react-native-worklets@0.8.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
react-native-safe-area-context:
specifier: ~5.6.0
- version: 5.6.2(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ version: 5.6.2(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
react-native-screens:
specifier: ~4.16.0
- version: 4.16.0(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ version: 4.16.0(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ react-native-unistyles:
+ specifier: ^3.2.5
+ version: 3.2.5(@react-native/normalize-colors@0.81.5)(react-native-nitro-modules@0.35.9(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-reanimated@4.1.7(react-native-worklets@0.8.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
react-native-webrtc:
specifier: ^124.0.7
- version: 124.0.7(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))
+ version: 124.0.7(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))
socket.io-client:
specifier: ^4.8.3
version: 4.8.3
@@ -210,28 +219,28 @@ importers:
version: 7.29.7
'@testing-library/jest-native':
specifier: ^5.4.3
- version: 5.4.3(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react-test-renderer@19.1.0(react@19.1.0))(react@19.1.0)
+ version: 5.4.3(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react-test-renderer@19.1.0(react@19.1.0))(react@19.1.0)
'@testing-library/react-native':
specifier: ^13.3.3
- version: 13.3.3(jest@29.7.0(@types/node@22.19.19)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.8.3)))(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react-test-renderer@19.1.0(react@19.1.0))(react@19.1.0)
+ version: 13.3.3(jest@29.7.0(@types/node@22.19.19)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.9.3)))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react-test-renderer@19.1.0(react@19.1.0))(react@19.1.0)
'@types/jest':
- specifier: ^30.0.0
- version: 30.0.0
+ specifier: ^29.5.14
+ version: 29.5.14
'@types/react':
specifier: ~19.1.0
version: 19.1.17
eas-cli:
specifier: ^20.1.0
- version: 20.1.0(@types/node@22.19.19)(typescript@5.8.3)
+ version: 20.1.0(@types/node@22.19.19)(typescript@5.9.3)
expo-build-properties:
- specifier: ^55.0.9
- version: 55.0.14(expo@54.0.35)
+ specifier: ^1.0.10
+ version: 1.0.10(expo@54.0.35)
jest:
specifier: ^29.7.0
- version: 29.7.0(@types/node@22.19.19)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.8.3))
+ version: 29.7.0(@types/node@22.19.19)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.9.3))
jest-expo:
- specifier: ^55.0.9
- version: 55.0.18(@babel/core@7.29.7)(canvas@2.11.2)(expo@54.0.35)(jest@29.7.0(@types/node@22.19.19)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.8.3)))(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.8.3)
+ specifier: ^54.0.17
+ version: 54.0.17(@babel/core@7.29.7)(canvas@2.11.2)(expo@54.0.35)(jest@29.7.0(@types/node@22.19.19)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.9.3)))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
lefthook:
specifier: ^2.1.2
version: 2.1.9
@@ -251,8 +260,8 @@ importers:
specifier: 19.1.0
version: 19.1.0(react@19.1.0)
typescript:
- specifier: ~5.8.3
- version: 5.8.3
+ specifier: ~5.9.3
+ version: 5.9.3
packages/ac2-open-claw-reference:
dependencies:
@@ -422,8 +431,8 @@ packages:
'@algorandfoundation/log-store':
optional: true
- '@algorandfoundation/react-native-passkey-autofill@1.0.0-canary.20':
- resolution: {integrity: sha512-FXt7pVsham6JZZ3IGxnoOW8/Z5pXmOuJJTteIGlZVd2OmH6TJA7Wqb45gB0V/kLazSJ6xHvZ9R8qEOunI2vKBw==}
+ '@algorandfoundation/react-native-passkey-autofill@1.0.0-canary.21':
+ resolution: {integrity: sha512-mPG2uwxccQ/iwm6FrfnLPYmF72Wg7Mr4uc8BtKMIb5hzaB7EtB1S2QMBseyyqMZf0O/Iuaoi+Pd7CrudINuVSg==}
engines: {node: '>=22'}
peerDependencies:
expo: '*'
@@ -948,6 +957,10 @@ packages:
resolution: {integrity: sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==}
engines: {node: '>=6.9.0'}
+ '@babel/types@7.29.0':
+ resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==}
+ engines: {node: '>=6.9.0'}
+
'@babel/types@7.29.7':
resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==}
engines: {node: '>=6.9.0'}
@@ -1358,9 +1371,6 @@ packages:
'@expo/config@55.0.10':
resolution: {integrity: sha512-qCHxo9H1ZoeW+y0QeMtVZ3JfGmumpGrgUFX60wLWMarraoQZSe47ZUm9kJSn3iyoPjUtUNanO3eXQg+K8k4rag==}
- '@expo/config@55.0.17':
- resolution: {integrity: sha512-Y3VaRg7Jllg3MhlUOTQqHm6/dttsqcjYlnS9enhAllZvPUpTHnRA4YPETtUZlxkdMJy6y3UZe986pd/KfJ6OTg==}
-
'@expo/devcert@1.2.1':
resolution: {integrity: sha512-qC4eaxmKMTmJC2ahwyui6ud8f3W60Ss7pMkpBq40Hu3zyiAaugPXnZ24145U7K36qO9UHdZUVxsCvIpz2RYYCA==}
@@ -1505,9 +1515,6 @@ packages:
'@expo/schema-utils@0.1.8':
resolution: {integrity: sha512-9I6ZqvnAvKKDiO+ZF8BpQQFYWXOJvTAL5L/227RUbWG1OVZDInFifzCBiqAZ3b67NRfeAgpgvbA7rejsqhY62A==}
- '@expo/schema-utils@55.0.4':
- resolution: {integrity: sha512-65IdeeE8dAZR3n3J5Eq7LYiQ8BFGeEYCWPBCzycvafL7PkskbCyIclTQarRwf/HXFoRvezKCjaLwy/8v9Prk6g==}
-
'@expo/sdk-runtime-versions@1.0.0':
resolution: {integrity: sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==}
@@ -1555,6 +1562,27 @@ packages:
'@modelcontextprotocol/sdk':
optional: true
+ '@gorhom/bottom-sheet@5.2.14':
+ resolution: {integrity: sha512-uLQFlDjp9z+jrOFcMSEldPqL5JdaXL3vXOh+juhwoNvXgTsEorJLjHTugXu+YccAG/0KJnShzKCrb71MHBsvJg==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-native': '*'
+ react: 19.1.0
+ react-native: '*'
+ react-native-gesture-handler: '>=2.16.1'
+ react-native-reanimated: '>=3.16.0 || >=4.0.0-'
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-native':
+ optional: true
+
+ '@gorhom/portal@1.0.14':
+ resolution: {integrity: sha512-MXyL4xvCjmgaORr/rtryDNFy3kU4qUbKlwtQqqsygd0xX3mhKjOLn6mQK8wfu0RkoE0pBE0nAasRoHua+/QZ7A==}
+ peerDependencies:
+ react: 19.1.0
+ react-native: '*'
+
'@grammyjs/runner@2.0.3':
resolution: {integrity: sha512-nckmTs1dPWfVQteK9cxqxzE+0m1VRvluLWB8UgFzsjg62w3qthPJt0TYtJBEdG7OedvfQq4vnFAyE6iaMkR42A==}
engines: {node: '>=12.20.0 || >=14.13.1'}
@@ -1635,10 +1663,6 @@ packages:
resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- '@jest/expect-utils@30.4.1':
- resolution: {integrity: sha512-ZBn5CglH8fBsQsvs4VWNzD4aWfUYks+IdOOQU3MEK71ol/BcVm+P+rtb1KpiFBpSWSCE27uOahyyf1vfqOVbcQ==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
'@jest/expect@29.7.0':
resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -1655,10 +1679,6 @@ packages:
resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- '@jest/pattern@30.4.0':
- resolution: {integrity: sha512-RAWn3+f9u8BsHijKJ71uHcFp6vmyEt6VvoWXkl6hKF3qVIuWNmudVjg12DlBPGup/frIl5UcUlH5HfEuvHpEXg==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
'@jest/reporters@29.7.0':
resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -1696,10 +1716,6 @@ packages:
resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- '@jest/types@30.4.1':
- resolution: {integrity: sha512-f1x/vJXIfjOlEmejYpbkbgw1gOqpPECwMvMEtBqe47j7H2Hg8h8w3o3ikhSXq3MI15kg+oQ0exWO0uCtTNJLoQ==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
'@jridgewell/gen-mapping@0.3.13':
resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
@@ -2411,18 +2427,34 @@ packages:
resolution: {integrity: sha512-oF71cIH6je3fSLi6VPjjC3Sgyyn57JLHXs+mHWc9MoCiJJcM4nqsS5J38zv1XQ8d3zOW2JtHro+LF0tagj2bfQ==}
engines: {node: '>= 20.19.4'}
+ '@react-native/babel-plugin-codegen@0.86.0':
+ resolution: {integrity: sha512-qdsABWNW7uTll90l4Vh03gjeyu3WVDi2CyiiyvYGMRDcoYbjbQi6df3BMAm9lQI2yslZ1T14LlDDAsgTwNxplA==}
+ engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0}
+
'@react-native/babel-preset@0.81.5':
resolution: {integrity: sha512-UoI/x/5tCmi+pZ3c1+Ypr1DaRMDLI3y+Q70pVLLVgrnC3DHsHRIbHcCHIeG/IJvoeFqFM2sTdhSOLJrf8lOPrA==}
engines: {node: '>= 20.19.4'}
peerDependencies:
'@babel/core': '*'
+ '@react-native/babel-preset@0.86.0':
+ resolution: {integrity: sha512-bYQcWiPySNvF4dns9Ls9gMmwgq66ohvM9Fwc/Kn8r85t66UNHxch3p1QwPiSorDelFauZwJbgo9+ReibTgvpbA==}
+ engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0}
+ peerDependencies:
+ '@babel/core': '*'
+
'@react-native/codegen@0.81.5':
resolution: {integrity: sha512-a2TDA03Up8lpSa9sh5VRGCQDXgCTOyDOFH+aqyinxp1HChG8uk89/G+nkJ9FPd0rqgi25eCTR16TWdS3b+fA6g==}
engines: {node: '>= 20.19.4'}
peerDependencies:
'@babel/core': '*'
+ '@react-native/codegen@0.86.0':
+ resolution: {integrity: sha512-uTs9DBo3+/lUqinsGZK0FKJRBVClrwMXoZToaDxE1Q2SL2e55vs2GwyZfIKzPl5uJnbu4PfFMIp0/mLXLWUMuA==}
+ engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0}
+ peerDependencies:
+ '@babel/core': '*'
+
'@react-native/community-cli-plugin@0.81.5':
resolution: {integrity: sha512-yWRlmEOtcyvSZ4+OvqPabt+NS36vg0K/WADTQLhrYrm9qdZSuXmq8PmdJWz/68wAqKQ+4KTILiq2kjRQwnyhQw==}
engines: {node: '>= 20.19.4'}
@@ -2451,6 +2483,20 @@ packages:
resolution: {integrity: sha512-fB7M1CMOCIUudTRuj7kzxIBTVw2KXnsgbQ6+4cbqSxo8NmRRhA0Ul4ZUzZj3rFd3VznTL4Brmocv1oiN0bWZ8w==}
engines: {node: '>= 20.19.4'}
+ '@react-native/js-polyfills@0.86.0':
+ resolution: {integrity: sha512-zYy/Cjd1VTnZ2iCNaG9bDF9C3l2ntESiPRscjIlI5FKugu6aeTwsDSv1aI8Bc4Kp3vEdoVg+UQhLAhE4svREaQ==}
+ engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0}
+
+ '@react-native/metro-babel-transformer@0.86.0':
+ resolution: {integrity: sha512-SjKej3E5qIahqo/G+rSOrmJUQM44RyKtWtO+VfmKAAMoJWkBFomM22hTLKCIS5cdbIAJ9COAmU+KAi2wVSO0wQ==}
+ engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0}
+ peerDependencies:
+ '@babel/core': '*'
+
+ '@react-native/metro-config@0.86.0':
+ resolution: {integrity: sha512-7v+xbTeEci9ZcQ/Z1OqI4RXcqN69wSMDYL5BAMvOReZ7U04+aDQ0/SQhClYPn6x2/RxM4WzMKSAuNyLKqvYVtw==}
+ engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0}
+
'@react-native/normalize-colors@0.76.2':
resolution: {integrity: sha512-ICoOpaTLPsFQjNLSM00NgQr6wal300cZZonHVSDXKntX+BfkLeuCHRtr/Mn+klTtW+/1v2/2FRm9dXjvyGf9Dw==}
@@ -2842,8 +2888,8 @@ packages:
'@types/istanbul-reports@3.0.4':
resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==}
- '@types/jest@30.0.0':
- resolution: {integrity: sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==}
+ '@types/jest@29.5.14':
+ resolution: {integrity: sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==}
'@types/jsdom@20.0.1':
resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==}
@@ -2921,9 +2967,10 @@ packages:
'@vitest/utils@3.2.6':
resolution: {integrity: sha512-lI23nIs4bnT3T8NIoh+vFaz5s2/DdP0Jgt2jxwgWljvwn82cLJtyi/If+fjFyoLMGIOz0U/fKvWE0d4jsNQEfg==}
- '@xmldom/xmldom@0.9.10':
- resolution: {integrity: sha512-A9gOqLdi6cV4ibazAjcQufGj0B1y/vDqYrcuP6d/6x8P27gRS8643Dj9o1dEKtB6O7fwxb2FgBmJS2mX7gpvdw==}
- engines: {node: '>=14.6'}
+ '@xmldom/xmldom@0.8.10':
+ resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==}
+ engines: {node: '>=10.0.0'}
+ deprecated: this version has critical issues, please update to the latest version
'@yarnpkg/lockfile@1.1.0':
resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==}
@@ -3158,6 +3205,9 @@ packages:
babel-plugin-syntax-hermes-parser@0.29.1:
resolution: {integrity: sha512-2WFYnoWGdmih1I1J5eIqxATOeycOqRwYxAQBu3cUu/rhwInwHUg7k60AFNbuGjSDL8tje5GDrAnxzRLcu2pYcA==}
+ babel-plugin-syntax-hermes-parser@0.36.0:
+ resolution: {integrity: sha512-LhD0xdoedDw7ansQgXbB2DADLZIK/LRXuWNBPuVzMc5S2WK5GyT89tCM+cQzxFGO0mGyLK6D5TrVOJJzAoDy8Q==}
+
babel-plugin-transform-flow-enums@0.0.2:
resolution: {integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==}
@@ -3386,10 +3436,6 @@ packages:
resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==}
engines: {node: '>=8'}
- ci-info@4.4.0:
- resolution: {integrity: sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==}
- engines: {node: '>=8'}
-
cjs-module-lexer@1.4.3:
resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==}
@@ -3973,10 +4019,6 @@ packages:
resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- expect@30.4.1:
- resolution: {integrity: sha512-PMARsyh/JtqC20HoGqlFcIlQAyqUtW4PlI1rup1uhYJtKuwAjbvWi3GQMAn+STdHum/dk8xrKfUM1+5SAwpolA==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
expo-asset@12.0.13:
resolution: {integrity: sha512-x/p7WvQUnkn6K43b9eL6SPeq5Vnf1E8BDe9bDrWrvMqzyUvJnUFvl+ctg3034s/+UHe7Ne2pAmc0+yzbl8CrDQ==}
peerDependencies:
@@ -3984,8 +4026,8 @@ packages:
react: 19.1.0
react-native: '*'
- expo-build-properties@55.0.14:
- resolution: {integrity: sha512-5wopuLXlzFpDnCfsIjgAcj4yKnVTYg3XYGnYV5Hqi7u6jJipLG4fwtUqxVIFqBj7vEHXjd4zYCyXjp39AtAD7w==}
+ expo-build-properties@1.0.10:
+ resolution: {integrity: sha512-mFCZbrbrv0AP5RB151tAoRzwRJelqM7bCJzCkxpu+owOyH+p/rFC/q7H5q8B9EpVWj8etaIuszR+gKwohpmu1Q==}
peerDependencies:
expo: '*'
@@ -4000,6 +4042,13 @@ packages:
react-native-web:
optional: true
+ expo-clipboard@8.0.8:
+ resolution: {integrity: sha512-VKoBkHIpZZDJTB0jRO4/PZskHdMNOEz3P/41tmM6fDuODMpqhvyWK053X0ebspkxiawJX9lX33JXHBCvVsTTOA==}
+ peerDependencies:
+ expo: '*'
+ react: 19.1.0
+ react-native: '*'
+
expo-constants@18.0.13:
resolution: {integrity: sha512-FnZn12E1dRYKDHlAdIyNFhBurKTS3F9CrfrBDJI5m3D7U17KBHMQ6JEfYlSj7LG7t+Ulr+IKaj58L1k5gBwTcQ==}
peerDependencies:
@@ -4532,6 +4581,9 @@ packages:
hermes-estree@0.35.0:
resolution: {integrity: sha512-xVx5Opwy8Oo1I5yGpVRhCvWL/iV3M+ylksSKVNlxxD90cpDpR/AR1jLYqK8HWihm065a6UI3HeyAmYzwS8NOOg==}
+ hermes-estree@0.36.0:
+ resolution: {integrity: sha512-A1+8zn5oss2CFP7pKsOaxorQG6FNIz1WU1VDqruLPPZl3LVgeE2C5xfFg8Ow6/Ow4mSslLLtYP1J3n38eKyW9w==}
+
hermes-parser@0.29.1:
resolution: {integrity: sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA==}
@@ -4541,6 +4593,9 @@ packages:
hermes-parser@0.35.0:
resolution: {integrity: sha512-9JLjeHxBx8T4CAsydZR49PNZUaix+WpQJwu9p2010lu+7Kwl6D/7wYFFJxoz+aXkaaClp9Zfg6W6/zVlSJORaA==}
+ hermes-parser@0.36.0:
+ resolution: {integrity: sha512-GdpwMmH5x6IpC1cijvcvYnlPB60Mh6kTSF/NFdYV/j56gYdi+0RIakYs+eqOV+bbO0SW7mgVVGSsTJxyPQfo3w==}
+
hi-base32@0.5.1:
resolution: {integrity: sha512-EmBBpvdYh/4XxsnUybsPag6VikPYnN30td+vQk+GI3qpahVEG9+gTkG0aXVxTjBqQ5T6ijbWIu77O+C5WFWsnA==}
@@ -4857,8 +4912,8 @@ packages:
resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- jest-expo@55.0.18:
- resolution: {integrity: sha512-kfa3iwTHSf5+ZOkxpWtjqZZ78AZvCSpYMkW/mSMNdffFAfEIqD2x1+WNf38U0vAhByaiGYP+m+Hgo4isOhYjkQ==}
+ jest-expo@54.0.17:
+ resolution: {integrity: sha512-LyIhrsP4xvHEEcR1R024u/LBj3uPpAgB+UljgV+YXWkEHjprnr0KpE4tROsMNYCVTM1pPlAnPuoBmn5gnAN9KA==}
hasBin: true
peerDependencies:
expo: '*'
@@ -4892,18 +4947,10 @@ packages:
resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- jest-message-util@30.4.1:
- resolution: {integrity: sha512-kwCKIvq0MCW1HzLoGola9Te6JUdzgV0loyKJ3Qghrkz9i5/RRIHsL95BMQc2HBBhlBKC4j22K9p11TGHH8RBpQ==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
jest-mock@29.7.0:
resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- jest-mock@30.4.1:
- resolution: {integrity: sha512-/i8SVb8/NSB7RfNi8gfqu8gxLV23KaL5EpAttyb9iz8qWRIqXRLflycz/32wXsYkOnaUlx8NAKnJYtpsmXUmfw==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
jest-pnp-resolver@1.2.3:
resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==}
engines: {node: '>=6'}
@@ -4917,10 +4964,6 @@ packages:
resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- jest-regex-util@30.4.0:
- resolution: {integrity: sha512-mWlvLviKIgIQ8VCuM1xRdD0TWp3zlzionlmDBjuXVBs+VkmXq6FgW9T4Emr7oGz/Rk6feDCGyiugolcQEyp3mg==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
jest-resolve-dependencies@29.7.0:
resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -4945,10 +4988,6 @@ packages:
resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- jest-util@30.4.1:
- resolution: {integrity: sha512-vjQb1sACEiv13DKJMDToJpzVW0joCsIQrmbg0fi7CyOOt+g9jTuQl2A216pWRBYhOVt53XbL/2LbMKg1BECWOw==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
jest-validate@29.7.0:
resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -5361,6 +5400,10 @@ packages:
resolution: {integrity: sha512-sBqBkt6kNut/88bv+Ucvm4yqdPetbvAEsHzi3MAgJEifOSYYzX5Z5Kgw3TFOrwf/mHJTOBG2ONlaMHoyfP15TA==}
engines: {node: '>=20.19.4'}
+ metro-babel-transformer@0.84.4:
+ resolution: {integrity: sha512-rvCfz8snl9h20VcvpOHxZuHP1SlAkv4HXbzw7nyyVwu6Eqo5PRerbakQ9XmUCOsRy70spJ37O+G1TK8oMzo48g==}
+ engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0}
+
metro-cache-key@0.83.3:
resolution: {integrity: sha512-59ZO049jKzSmvBmG/B5bZ6/dztP0ilp0o988nc6dpaDsU05Cl1c/lRf+yx8m9WW/JVgbmfO5MziBU559XjI5Zw==}
engines: {node: '>=20.19.4'}
@@ -5369,6 +5412,10 @@ packages:
resolution: {integrity: sha512-W1c2Nmx8MiJTJt+eWhMO08z9VKi3kZOaz99IYGdqeqDgY9j+yZjXl62rUav4Di0heZfh4/n2s722PqRL1OODeg==}
engines: {node: '>=20.19.4'}
+ metro-cache-key@0.84.4:
+ resolution: {integrity: sha512-wVO79aGrkYImpnaVS4+d5RrRBRPX31QtvKB3wKGBuiNSznduZTQHzsrJZRroFJSwnygrzdsGUtDQPuqqFjFdvw==}
+ engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0}
+
metro-cache@0.83.3:
resolution: {integrity: sha512-3jo65X515mQJvKqK3vWRblxDEcgY55Sk3w4xa6LlfEXgQ9g1WgMh9m4qVZVwgcHoLy0a2HENTPCCX4Pk6s8c8Q==}
engines: {node: '>=20.19.4'}
@@ -5377,6 +5424,10 @@ packages:
resolution: {integrity: sha512-E9SRePXQ1Zvlj79VcOk57q7VC7rMHMFQ+jhmPHBiq+dJ0bJB5BL87lWZF6oh5X76Cci5tpDuQNaDwwuSCToEeg==}
engines: {node: '>=20.19.4'}
+ metro-cache@0.84.4:
+ resolution: {integrity: sha512-gpcFQdSLUwUCk71saKoE64jLFbx2nwTfVCcPSULMNT8QYq0p1eZZE29Jvd0HtT/UlhC3ZOutLxJME5xqD2JUZg==}
+ engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0}
+
metro-config@0.83.3:
resolution: {integrity: sha512-mTel7ipT0yNjKILIan04bkJkuCzUUkm2SeEaTads8VfEecCh+ltXchdq6DovXJqzQAXuR2P9cxZB47Lg4klriA==}
engines: {node: '>=20.19.4'}
@@ -5385,6 +5436,10 @@ packages:
resolution: {integrity: sha512-83mjWFbFOt2GeJ6pFIum5mSnc1uTsZJAtD8o4ej0s4NVsYsA7fB+pHvTfHhFrpeMONaobu2riKavkPei05Er/Q==}
engines: {node: '>=20.19.4'}
+ metro-config@0.84.4:
+ resolution: {integrity: sha512-PMotGDjXcXLWo2TMRH+VR99phFNgYTwqh4OoieIKK3yTJa1Jmkl+fZJxDO0jfBvNF+WESHciHvpNuBtXaF3B0Q==}
+ engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0}
+
metro-core@0.83.3:
resolution: {integrity: sha512-M+X59lm7oBmJZamc96usuF1kusd5YimqG/q97g4Ac7slnJ3YiGglW5CsOlicTR5EWf8MQFxxjDoB6ytTqRe8Hw==}
engines: {node: '>=20.19.4'}
@@ -5393,6 +5448,10 @@ packages:
resolution: {integrity: sha512-6yn3w1wnltT6RQl7p7YES2l95ArC+mWrOssEiH8p5/DDrJS65/szf9LsC9JrBv8c5DdvSY3V3f0GRYg0Ox7hCg==}
engines: {node: '>=20.19.4'}
+ metro-core@0.84.4:
+ resolution: {integrity: sha512-HONpWC5LGXZn3ffkd4Hu6AIrfE7j4Z0g0wMo/goV24WOB3lhuFZ40KgvaDiSw8iyQHloMYay5N/wPX+z8oN/PQ==}
+ engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0}
+
metro-file-map@0.83.3:
resolution: {integrity: sha512-jg5AcyE0Q9Xbbu/4NAwwZkmQn7doJCKGW0SLeSJmzNB9Z24jBe0AL2PHNMy4eu0JiKtNWHz9IiONGZWq7hjVTA==}
engines: {node: '>=20.19.4'}
@@ -5401,6 +5460,10 @@ packages:
resolution: {integrity: sha512-+j0F1m+FQYVAQ6syf+mwhIPV5GoFQrkInX8bppuc50IzNsZbMrp8R5H/Sx/K2daQ3YEa9F/XwkeZT8gzJfgeCw==}
engines: {node: '>=20.19.4'}
+ metro-file-map@0.84.4:
+ resolution: {integrity: sha512-KSVDi/u60hKPx++NLu3MTIvyjzNoJnFAF8PQFxaj1jiSka/wjw+Ua6sNuJ0TDHQv+7AAoFQxeMgaRAe8Yic5wQ==}
+ engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0}
+
metro-minify-terser@0.83.3:
resolution: {integrity: sha512-O2BmfWj6FSfzBLrNCXt/rr2VYZdX5i6444QJU0fFoc7Ljg+Q+iqebwE3K0eTvkI6TRjELsXk1cjU+fXwAR4OjQ==}
engines: {node: '>=20.19.4'}
@@ -5409,6 +5472,10 @@ packages:
resolution: {integrity: sha512-MfJar2IS4tBRuLb9svwb0Gu5l9BsH+pcRm8eGcEi/wy8MzZinfinh5dFLt2nWkocnulIgtGB5NkFDdbXqMXKhQ==}
engines: {node: '>=20.19.4'}
+ metro-minify-terser@0.84.4:
+ resolution: {integrity: sha512-5qpbaVOMC7CPitIpuewzVeGw7E+C3ykbv2mqTjQLl85Z3annSVGlSCTcsZjqXZzjupfK4Ztj3dDc4kc44NZwtQ==}
+ engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0}
+
metro-resolver@0.83.3:
resolution: {integrity: sha512-0js+zwI5flFxb1ktmR///bxHYg7OLpRpWZlBBruYG8OKYxeMP7SV0xQ/o/hUelrEMdK4LJzqVtHAhBm25LVfAQ==}
engines: {node: '>=20.19.4'}
@@ -5417,6 +5484,10 @@ packages:
resolution: {integrity: sha512-WSJIENlMcoSsuz66IfBHOkgfp3KJt2UW2TnEHPf1b8pIG2eEXNOVmo2+03A0H17WY2XGXWgxL0CG7FAopqgB1A==}
engines: {node: '>=20.19.4'}
+ metro-resolver@0.84.4:
+ resolution: {integrity: sha512-1qLgbxQ5ZGhhutuPot1Yp348ofDsATL2WkrHF65TobqTT9K3P9qJXw38bomk7ncp5B7OYMfWwtyBZo1lCV792A==}
+ engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0}
+
metro-runtime@0.83.3:
resolution: {integrity: sha512-JHCJb9ebr9rfJ+LcssFYA2x1qPYuSD/bbePupIGhpMrsla7RCwC/VL3yJ9cSU+nUhU4c9Ixxy8tBta+JbDeZWw==}
engines: {node: '>=20.19.4'}
@@ -5425,6 +5496,10 @@ packages:
resolution: {integrity: sha512-9GKkJURaB2iyYoEExKnedzAHzxmKtSi+k0tsZUvMoU27tBZJElchYt7JH/Ai/XzYAI9lCAaV7u5HZSI8J5Z+wQ==}
engines: {node: '>=20.19.4'}
+ metro-runtime@0.84.4:
+ resolution: {integrity: sha512-Jibypds4g7AhzdRKY+kDoj51s5EXMwgyp5ddtlreDAsWefMdOx+agWqgm0H2XSZ/ueanHHVM89fnf5OJnlxa8Q==}
+ engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0}
+
metro-source-map@0.83.3:
resolution: {integrity: sha512-xkC3qwUBh2psVZgVavo8+r2C9Igkk3DibiOXSAht1aYRRcztEZNFtAMtfSB7sdO2iFMx2Mlyu++cBxz/fhdzQg==}
engines: {node: '>=20.19.4'}
@@ -5433,6 +5508,10 @@ packages:
resolution: {integrity: sha512-JgA1h7oc1a1jydBe1GhVFsUoMYo3wLPk7oRA32rjlDsq+sP2JLt9x2p2lWbNSxTm/u8NV4VRid3hvEJgcX8tKw==}
engines: {node: '>=20.19.4'}
+ metro-source-map@0.84.4:
+ resolution: {integrity: sha512-jbWkPxIesVuo1IWkvezmMJld6iu8nD62GsrZiV6jP37AOdbo4OBq1FJ+qkOg8sV05wAHB//jAbziuW0SlJfW4g==}
+ engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0}
+
metro-symbolicate@0.83.3:
resolution: {integrity: sha512-F/YChgKd6KbFK3eUR5HdUsfBqVsanf5lNTwFd4Ca7uuxnHgBC3kR/Hba/RGkenR3pZaGNp5Bu9ZqqP52Wyhomw==}
engines: {node: '>=20.19.4'}
@@ -5443,6 +5522,11 @@ packages:
engines: {node: '>=20.19.4'}
hasBin: true
+ metro-symbolicate@0.84.4:
+ resolution: {integrity: sha512-OnfpacxUqGPZQ27t8qK9mFa7uqHIlVWeqRqkCbvMvreEBiamEeOn8krKtcwgP5M4cYDPwuSmCTopHMVthqG4zA==}
+ engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0}
+ hasBin: true
+
metro-transform-plugins@0.83.3:
resolution: {integrity: sha512-eRGoKJU6jmqOakBMH5kUB7VitEWiNrDzBHpYbkBXW7C5fUGeOd2CyqrosEzbMK5VMiZYyOcNFEphvxk3OXey2A==}
engines: {node: '>=20.19.4'}
@@ -5451,6 +5535,10 @@ packages:
resolution: {integrity: sha512-Ss0FpBiZDjX2kwhukMDl5sNdYK8T/06IPqxNE4H6PTlRlfs9q11cef13c/xESY/Pm4VCkp1yJUZO3kXzvMxQFA==}
engines: {node: '>=20.19.4'}
+ metro-transform-plugins@0.84.4:
+ resolution: {integrity: sha512-kehr6HbAecqD0/a3xLXobELdPaAmRAl8bel0qagPF4vhZtux93nS8S4eq2kgKt6J2GnQpVjSoW1PXdst04mwow==}
+ engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0}
+
metro-transform-worker@0.83.3:
resolution: {integrity: sha512-Ztekew9t/gOIMZX1tvJOgX7KlSLL5kWykl0Iwu2cL2vKMKVALRl1hysyhUw0vjpAvLFx+Kfq9VLjnHIkW32fPA==}
engines: {node: '>=20.19.4'}
@@ -5459,6 +5547,10 @@ packages:
resolution: {integrity: sha512-UegCo7ygB2fT64mRK2nbAjQVJ1zSwIIHy8d96jJv2nKZFDaViYBiughEdu5HM/Ceq0WN3LZrZk3zhl9aoiLYFw==}
engines: {node: '>=20.19.4'}
+ metro-transform-worker@0.84.4:
+ resolution: {integrity: sha512-W1IYMvvXTu4MxYr7d9h7CeG2vpIr3bmLLIavkPY4O1ilzDrvS8z/NEe6y+pC44Ff7raMXQgYSfdqDUwN/i39gg==}
+ engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0}
+
metro@0.83.3:
resolution: {integrity: sha512-+rP+/GieOzkt97hSJ0MrPOuAH/jpaS21ZDvL9DJ35QYRDlQcwzcvUlGUf79AnQxq/2NPiS/AULhhM4TKutIt8Q==}
engines: {node: '>=20.19.4'}
@@ -5469,6 +5561,11 @@ packages:
engines: {node: '>=20.19.4'}
hasBin: true
+ metro@0.84.4:
+ resolution: {integrity: sha512-8ETTubqfD6ornDy2zYDvRcKnVDOXdFJsjetYDBsY4oAsb6NJkiwFR+FaMESyGppFmQUyBQA4H4sFGxzcQSGtFA==}
+ engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0}
+ hasBin: true
+
micromatch@4.0.8:
resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
engines: {node: '>=8.6'}
@@ -5722,6 +5819,10 @@ packages:
resolution: {integrity: sha512-9M5kpuOLyTPogMtZiQUIxdAZxl7Dxs6tVBbJErSumsqGMuhVSoUbkfeZ3XNPpLpwBBtqY5QDUzGwggLHX3slQg==}
engines: {node: '>=20.19.4'}
+ ob1@0.84.4:
+ resolution: {integrity: sha512-eJXMpz4aQHXF/YBB9ddqZDIS+ooO91hObo9FoW/xBkr54/zCwYYCDqT/O54vNo8kOkWs5Ou/y28NgdrV0edQNA==}
+ engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0}
+
object-assign@4.1.1:
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
engines: {node: '>=0.10.0'}
@@ -6128,12 +6229,6 @@ packages:
react: 19.1.0
react-native: '*'
- react-native-is-edge-to-edge@1.1.7:
- resolution: {integrity: sha512-EH6i7E8epJGIcu7KpfXYXiV2JFIYITtq+rVS8uEb+92naMRBdxhTuS8Wn2Q7j9sqyO0B+Xbaaf9VdipIAmGW4w==}
- peerDependencies:
- react: 19.1.0
- react-native: '*'
-
react-native-is-edge-to-edge@1.3.1:
resolution: {integrity: sha512-NIXU/iT5+ORyCc7p0z2nnlkouYKX425vuU1OEm6bMMtWWR9yvb+Xg5AZmImTKoF9abxCPqrKC3rOZsKzUYgYZA==}
peerDependencies:
@@ -6218,12 +6313,12 @@ packages:
expo-build-properties:
optional: true
- react-native-reanimated@3.19.5:
- resolution: {integrity: sha512-bd4AwIkBAaY4BjrgpSoKjEaRG/tXD756F5nGuiH5IMBSKN8tRdUEA8hWZCyIo/R6/kha/tVSoCqodVUACh7ZWw==}
+ react-native-reanimated@4.1.7:
+ resolution: {integrity: sha512-Q4H6xA3Tn7QL0/E/KjI86I1KK4tcf+ErRE04LH34Etka2oVQhW6oXQ+Q8ZcDCVxiWp5vgbBH6XcH8BOo4w/Rhg==}
peerDependencies:
- '@babel/core': ^7.0.0-0
react: 19.1.0
- react-native: '*'
+ react-native: 0.78 - 0.82
+ react-native-worklets: 0.5 - 0.8
react-native-safe-area-context@5.6.2:
resolution: {integrity: sha512-4XGqMNj5qjUTYywJqpdWZ9IG8jgkS3h06sfVjfw5yZQZfWnRFXczi0GnYyFyCc2EBps/qFmoCH8fez//WumdVg==}
@@ -6237,11 +6332,35 @@ packages:
react: 19.1.0
react-native: '*'
+ react-native-unistyles@3.2.5:
+ resolution: {integrity: sha512-IiNhQfv98Rhis+fu1CIlTqp1wqAcADkpUmNVSW2stxHkMOU1EkLIyBC50mT/mVTgZugyBJdP9ytUiNJVJkHiWg==}
+ engines: {node: '>= 20.18.0'}
+ peerDependencies:
+ '@react-native/normalize-colors': '*'
+ react: 19.1.0
+ react-native: '>=0.76.0'
+ react-native-edge-to-edge: '*'
+ react-native-nitro-modules: '*'
+ react-native-reanimated: '*'
+ peerDependenciesMeta:
+ react-native-edge-to-edge:
+ optional: true
+ react-native-reanimated:
+ optional: true
+
react-native-webrtc@124.0.7:
resolution: {integrity: sha512-gnXPdbUS8IkKHq9WNaWptW/yy5s6nMyI6cNn90LXdobPVCgYSk6NA2uUGdT4c4J14BRgaFA95F+cR28tUPkMVA==}
peerDependencies:
react-native: '>=0.60.0'
+ react-native-worklets@0.8.3:
+ resolution: {integrity: sha512-oCBJROyLU7yG/1R8s0INMflygTH71bx+5XcYkH0CM938TlhSoVbiunE1WVW5FZa51vwYqfLie/IXMX2s1Kh3eg==}
+ peerDependencies:
+ '@babel/core': '*'
+ '@react-native/metro-config': '*'
+ react: 19.1.0
+ react-native: 0.81 - 0.85
+
react-native@0.81.5:
resolution: {integrity: sha512-1w+/oSjEXZjMqsIvmkCRsOc8UBYv163bTWKTI8+1mxztvQPhCRYGTvZ/PL1w16xXHneIj/SLGfxWg2GWN2uexw==}
engines: {node: '>= 20.19.4'}
@@ -6999,6 +7118,11 @@ packages:
engines: {node: '>=14.17'}
hasBin: true
+ typescript@5.9.3:
+ resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==}
+ engines: {node: '>=14.17'}
+ hasBin: true
+
typescript@6.0.3:
resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==}
engines: {node: '>=14.17'}
@@ -7580,7 +7704,7 @@ snapshots:
'@tanstack/store': 0.9.3
before-after-hook: 4.0.0
- '@algorandfoundation/react-native-keystore@1.0.0-canary.12(@algorandfoundation/log-store@1.0.0-canary.3(@tanstack/store@0.9.3)(before-after-hook@4.0.0))(@tanstack/store@0.9.3)(before-after-hook@4.0.0)(expo-build-properties@55.0.14(expo@54.0.35))(expo@54.0.35)(react-native-nitro-modules@0.35.9(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-quick-base64@3.0.0(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@algorandfoundation/react-native-keystore@1.0.0-canary.12(@algorandfoundation/log-store@1.0.0-canary.3(@tanstack/store@0.9.3)(before-after-hook@4.0.0))(@tanstack/store@0.9.3)(before-after-hook@4.0.0)(expo-build-properties@1.0.10(expo@54.0.35))(expo@54.0.35)(react-native-nitro-modules@0.35.9(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-quick-base64@2.2.2(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
dependencies:
'@algorandfoundation/dp256': 1.1.0
'@algorandfoundation/keystore': 1.0.0-canary.16(@algorandfoundation/log-store@1.0.0-canary.3(@tanstack/store@0.9.3)(before-after-hook@4.0.0))(@tanstack/store@0.9.3)(before-after-hook@4.0.0)
@@ -7591,8 +7715,8 @@ snapshots:
'@tanstack/store': 0.9.3
before-after-hook: 4.0.0
react-native-keychain: 10.0.0
- react-native-mmkv: 4.1.2(react-native-nitro-modules@0.35.9(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- react-native-quick-crypto: 1.0.18(expo-build-properties@55.0.14(expo@54.0.35))(expo@54.0.35)(react-native-nitro-modules@0.35.9(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-quick-base64@3.0.0(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ react-native-mmkv: 4.1.2(react-native-nitro-modules@0.35.9(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ react-native-quick-crypto: 1.0.18(expo-build-properties@1.0.10(expo@54.0.35))(expo@54.0.35)(react-native-nitro-modules@0.35.9(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-quick-base64@2.2.2(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
optionalDependencies:
'@algorandfoundation/log-store': 1.0.0-canary.3(@tanstack/store@0.9.3)(before-after-hook@4.0.0)
transitivePeerDependencies:
@@ -7603,12 +7727,12 @@ snapshots:
- react-native-nitro-modules
- react-native-quick-base64
- '@algorandfoundation/react-native-passkey-autofill@1.0.0-canary.20(@algorandfoundation/log-store@1.0.0-canary.3(@tanstack/store@0.9.3)(before-after-hook@4.0.0))(@tanstack/store@0.9.3)(before-after-hook@4.0.0)(expo-build-properties@55.0.14(expo@54.0.35))(expo@54.0.35)(react-native-nitro-modules@0.35.9(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-quick-base64@3.0.0(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@algorandfoundation/react-native-passkey-autofill@1.0.0-canary.21(@algorandfoundation/log-store@1.0.0-canary.3(@tanstack/store@0.9.3)(before-after-hook@4.0.0))(@tanstack/store@0.9.3)(before-after-hook@4.0.0)(expo-build-properties@1.0.10(expo@54.0.35))(expo@54.0.35)(react-native-nitro-modules@0.35.9(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-quick-base64@2.2.2(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
dependencies:
- '@algorandfoundation/react-native-keystore': 1.0.0-canary.12(@algorandfoundation/log-store@1.0.0-canary.3(@tanstack/store@0.9.3)(before-after-hook@4.0.0))(@tanstack/store@0.9.3)(before-after-hook@4.0.0)(expo-build-properties@55.0.14(expo@54.0.35))(expo@54.0.35)(react-native-nitro-modules@0.35.9(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-quick-base64@3.0.0(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.8.3)
+ '@algorandfoundation/react-native-keystore': 1.0.0-canary.12(@algorandfoundation/log-store@1.0.0-canary.3(@tanstack/store@0.9.3)(before-after-hook@4.0.0))(@tanstack/store@0.9.3)(before-after-hook@4.0.0)(expo-build-properties@1.0.10(expo@54.0.35))(expo@54.0.35)(react-native-nitro-modules@0.35.9(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-quick-base64@2.2.2(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.3)
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
transitivePeerDependencies:
- '@algorandfoundation/log-store'
- '@tanstack/store'
@@ -8245,6 +8369,11 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ '@babel/types@7.29.0':
+ dependencies:
+ '@babel/helper-string-parser': 7.29.7
+ '@babel/helper-validator-identifier': 7.29.7
+
'@babel/types@7.29.7':
dependencies:
'@babel/helper-string-parser': 7.29.7
@@ -8268,20 +8397,20 @@ snapshots:
'@config-plugins/react-native-webrtc@13.0.0(expo@54.0.35)':
dependencies:
- expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.8.3)
+ expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.3)
- '@craftzdog/react-native-buffer@6.1.0(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@craftzdog/react-native-buffer@6.1.0(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
dependencies:
ieee754: 1.2.1
- react-native-quick-base64: 2.2.2(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ react-native-quick-base64: 2.2.2(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
transitivePeerDependencies:
- react
- react-native
- '@craftzdog/react-native-buffer@6.1.2(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@craftzdog/react-native-buffer@6.1.2(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
dependencies:
ieee754: 1.2.1
- react-native-quick-base64: 3.0.0(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ react-native-quick-base64: 3.0.0(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
transitivePeerDependencies:
- react
- react-native
@@ -8461,7 +8590,7 @@ snapshots:
dependencies:
uuid: 11.1.1
- '@expo/cli@54.0.25(expo-router@6.0.24)(expo@54.0.35)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(typescript@5.8.3)':
+ '@expo/cli@54.0.25(expo-router@6.0.24)(expo@54.0.35)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(typescript@5.9.3)':
dependencies:
'@0no-co/graphql.web': 1.2.0(graphql@16.8.1)
'@expo/code-signing-certificates': 0.0.6
@@ -8469,14 +8598,14 @@ snapshots:
'@expo/config-plugins': 54.0.4
'@expo/devcert': 1.2.1
'@expo/env': 2.0.11
- '@expo/image-utils': 0.8.14(typescript@5.8.3)
+ '@expo/image-utils': 0.8.14(typescript@5.9.3)
'@expo/json-file': 10.2.0
'@expo/metro': 54.2.0
'@expo/metro-config': 54.0.16(expo@54.0.35)
'@expo/osascript': 2.6.0
'@expo/package-manager': 1.12.0
'@expo/plist': 0.4.9
- '@expo/prebuild-config': 54.0.8(expo@54.0.35)(typescript@5.8.3)
+ '@expo/prebuild-config': 54.0.8(expo@54.0.35)(typescript@5.9.3)
'@expo/schema-utils': 0.1.8
'@expo/spawn-async': 1.8.0
'@expo/ws-tunnel': 1.0.6
@@ -8495,7 +8624,7 @@ snapshots:
connect: 3.7.0
debug: 4.4.3(supports-color@8.1.1)
env-editor: 0.4.2
- expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.8.3)
+ expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.3)
expo-server: 1.0.7
freeport-async: 2.0.0
getenv: 2.0.0
@@ -8528,8 +8657,8 @@ snapshots:
wrap-ansi: 7.0.0
ws: 8.21.0
optionalDependencies:
- expo-router: 6.0.24(ace148d1f520ff029f39906dc9ee7269)
- react-native: 0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)
+ expo-router: 6.0.24(72aa1b4e09fcc05a20cea2fc14c00517)
+ react-native: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
transitivePeerDependencies:
- bufferutil
- graphql
@@ -8662,12 +8791,12 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@expo/config@55.0.10(typescript@5.8.3)':
+ '@expo/config@55.0.10(typescript@5.9.3)':
dependencies:
'@expo/config-plugins': 55.0.10
'@expo/config-types': 55.0.5
'@expo/json-file': 10.2.0
- '@expo/require-utils': 55.0.5(typescript@5.8.3)
+ '@expo/require-utils': 55.0.5(typescript@5.9.3)
deepmerge: 4.3.1
getenv: 2.0.0
glob: 13.0.6
@@ -8679,22 +8808,6 @@ snapshots:
- supports-color
- typescript
- '@expo/config@55.0.17(typescript@5.8.3)':
- dependencies:
- '@expo/config-plugins': 55.0.10
- '@expo/config-types': 55.0.5
- '@expo/json-file': 10.2.0
- '@expo/require-utils': 55.0.5(typescript@5.8.3)
- deepmerge: 4.3.1
- getenv: 2.0.0
- glob: 13.0.6
- resolve-workspace-root: 2.0.1
- semver: 7.8.1
- slugify: 1.6.9
- transitivePeerDependencies:
- - supports-color
- - typescript
-
'@expo/devcert@1.2.1':
dependencies:
'@expo/sudo-prompt': 9.3.2
@@ -8702,12 +8815,12 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@expo/devtools@0.1.8(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@expo/devtools@0.1.8(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
dependencies:
chalk: 4.1.2
optionalDependencies:
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
'@expo/eas-build-job@20.1.0':
dependencies:
@@ -8781,9 +8894,9 @@ snapshots:
temp-dir: 2.0.0
unique-string: 2.0.0
- '@expo/image-utils@0.8.14(typescript@5.8.3)':
+ '@expo/image-utils@0.8.14(typescript@5.9.3)':
dependencies:
- '@expo/require-utils': 55.0.5(typescript@5.8.3)
+ '@expo/require-utils': 55.0.5(typescript@5.9.3)
'@expo/spawn-async': 1.8.0
chalk: 4.1.2
getenv: 2.0.0
@@ -8850,19 +8963,19 @@ snapshots:
postcss: 8.5.15
resolve-from: 5.0.0
optionalDependencies:
- expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.8.3)
+ expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.3)
transitivePeerDependencies:
- bufferutil
- supports-color
- utf-8-validate
- '@expo/metro-runtime@6.1.2(expo@54.0.35)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@expo/metro-runtime@6.1.2(expo@54.0.35)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
dependencies:
anser: 1.4.10
- expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.8.3)
+ expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.3)
pretty-format: 29.7.0
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
stacktrace-parser: 0.1.11
whatwg-fetch: 3.6.20
optionalDependencies:
@@ -8926,40 +9039,40 @@ snapshots:
'@expo/plist@0.2.0':
dependencies:
- '@xmldom/xmldom': 0.9.10
+ '@xmldom/xmldom': 0.8.10
base64-js: 1.5.1
xmlbuilder: 14.0.0
'@expo/plist@0.2.2':
dependencies:
- '@xmldom/xmldom': 0.9.10
+ '@xmldom/xmldom': 0.8.10
base64-js: 1.5.1
xmlbuilder: 14.0.0
'@expo/plist@0.4.9':
dependencies:
- '@xmldom/xmldom': 0.9.10
+ '@xmldom/xmldom': 0.8.10
base64-js: 1.5.1
xmlbuilder: 15.1.1
'@expo/plist@0.5.4':
dependencies:
- '@xmldom/xmldom': 0.9.10
+ '@xmldom/xmldom': 0.8.10
base64-js: 1.5.1
xmlbuilder: 15.1.1
- '@expo/plugin-help@5.1.23(@types/node@22.19.19)(typescript@5.8.3)':
+ '@expo/plugin-help@5.1.23(@types/node@22.19.19)(typescript@5.9.3)':
dependencies:
- '@oclif/core': 2.16.0(@types/node@22.19.19)(typescript@5.8.3)
+ '@oclif/core': 2.16.0(@types/node@22.19.19)(typescript@5.9.3)
transitivePeerDependencies:
- '@swc/core'
- '@swc/wasm'
- '@types/node'
- typescript
- '@expo/plugin-warn-if-update-available@2.5.1(@types/node@22.19.19)(typescript@5.8.3)':
+ '@expo/plugin-warn-if-update-available@2.5.1(@types/node@22.19.19)(typescript@5.9.3)':
dependencies:
- '@oclif/core': 2.16.0(@types/node@22.19.19)(typescript@5.8.3)
+ '@oclif/core': 2.16.0(@types/node@22.19.19)(typescript@5.9.3)
chalk: 4.1.2
debug: 4.4.3(supports-color@8.1.1)
ejs: 3.1.10
@@ -8974,16 +9087,16 @@ snapshots:
- supports-color
- typescript
- '@expo/prebuild-config@54.0.8(expo@54.0.35)(typescript@5.8.3)':
+ '@expo/prebuild-config@54.0.8(expo@54.0.35)(typescript@5.9.3)':
dependencies:
'@expo/config': 12.0.13
'@expo/config-plugins': 54.0.4
'@expo/config-types': 54.0.10
- '@expo/image-utils': 0.8.14(typescript@5.8.3)
+ '@expo/image-utils': 0.8.14(typescript@5.9.3)
'@expo/json-file': 10.2.0
'@react-native/normalize-colors': 0.81.5
debug: 4.4.3(supports-color@8.1.1)
- expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.8.3)
+ expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.3)
resolve-from: 5.0.0
semver: 7.8.1
xml2js: 0.6.0
@@ -9007,13 +9120,13 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@expo/require-utils@55.0.5(typescript@5.8.3)':
+ '@expo/require-utils@55.0.5(typescript@5.9.3)':
dependencies:
'@babel/code-frame': 7.29.7
'@babel/core': 7.29.7
'@babel/plugin-transform-modules-commonjs': 7.29.7(@babel/core@7.29.7)
optionalDependencies:
- typescript: 5.8.3
+ typescript: 5.9.3
transitivePeerDependencies:
- supports-color
@@ -9033,8 +9146,6 @@ snapshots:
'@expo/schema-utils@0.1.8': {}
- '@expo/schema-utils@55.0.4': {}
-
'@expo/sdk-runtime-versions@1.0.0': {}
'@expo/spawn-async@1.7.2':
@@ -9068,11 +9179,11 @@ snapshots:
'@expo/logger': 20.0.0
'@expo/spawn-async': 1.8.0
- '@expo/vector-icons@15.1.1(expo-font@14.0.12(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@expo/vector-icons@15.1.1(expo-font@14.0.12(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
dependencies:
- expo-font: 14.0.12(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ expo-font: 14.0.12(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
'@expo/ws-tunnel@1.0.6': {}
@@ -9095,6 +9206,23 @@ snapshots:
- supports-color
- utf-8-validate
+ '@gorhom/bottom-sheet@5.2.14(@types/react@19.1.17)(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-reanimated@4.1.7(react-native-worklets@0.8.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ dependencies:
+ '@gorhom/portal': 1.0.14(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ invariant: 2.2.4
+ react: 19.1.0
+ react-native: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
+ react-native-gesture-handler: 2.28.0(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ react-native-reanimated: 4.1.7(react-native-worklets@0.8.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ optionalDependencies:
+ '@types/react': 19.1.17
+
+ '@gorhom/portal@1.0.14(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ dependencies:
+ nanoid: 3.3.12
+ react: 19.1.0
+ react-native: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
+
'@grammyjs/runner@2.0.3(grammy@1.43.0)':
dependencies:
abort-controller: 3.0.0
@@ -9160,7 +9288,7 @@ snapshots:
jest-util: 29.7.0
slash: 3.0.0
- '@jest/core@29.7.0(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.8.3))':
+ '@jest/core@29.7.0(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.9.3))':
dependencies:
'@jest/console': 29.7.0
'@jest/reporters': 29.7.0
@@ -9174,7 +9302,7 @@ snapshots:
exit: 0.1.2
graceful-fs: 4.2.11
jest-changed-files: 29.7.0
- jest-config: 29.7.0(@types/node@22.19.19)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.8.3))
+ jest-config: 29.7.0(@types/node@22.19.19)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.9.3))
jest-haste-map: 29.7.0
jest-message-util: 29.7.0
jest-regex-util: 29.6.3
@@ -9212,10 +9340,6 @@ snapshots:
dependencies:
jest-get-type: 29.6.3
- '@jest/expect-utils@30.4.1':
- dependencies:
- '@jest/get-type': 30.1.0
-
'@jest/expect@29.7.0':
dependencies:
expect: 29.7.0
@@ -9243,11 +9367,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@jest/pattern@30.4.0':
- dependencies:
- '@types/node': 22.19.19
- jest-regex-util: 30.4.0
-
'@jest/reporters@29.7.0':
dependencies:
'@bcoe/v8-coverage': 0.2.3
@@ -9334,16 +9453,6 @@ snapshots:
'@types/yargs': 17.0.35
chalk: 4.1.2
- '@jest/types@30.4.1':
- dependencies:
- '@jest/pattern': 30.4.0
- '@jest/schemas': 30.4.1
- '@types/istanbul-lib-coverage': 2.0.6
- '@types/istanbul-reports': 3.0.4
- '@types/node': 22.19.19
- '@types/yargs': 17.0.35
- chalk: 4.1.2
-
'@jridgewell/gen-mapping@0.3.13':
dependencies:
'@jridgewell/sourcemap-codec': 1.5.5
@@ -9530,7 +9639,7 @@ snapshots:
'@nodelib/fs.scandir': 2.1.5
fastq: 1.20.1
- '@oclif/core@2.16.0(@types/node@22.19.19)(typescript@5.8.3)':
+ '@oclif/core@2.16.0(@types/node@22.19.19)(typescript@5.9.3)':
dependencies:
'@types/cli-progress': 3.11.6
ansi-escapes: 4.3.2
@@ -9555,7 +9664,7 @@ snapshots:
strip-ansi: 6.0.1
supports-color: 8.1.1
supports-hyperlinks: 2.3.0
- ts-node: 10.9.2(@types/node@22.19.19)(typescript@5.8.3)
+ ts-node: 10.9.2(@types/node@22.19.19)(typescript@5.9.3)
tslib: 2.8.1
widest-line: 3.1.0
wordwrap: 1.0.0
@@ -9946,6 +10055,14 @@ snapshots:
- '@babel/core'
- supports-color
+ '@react-native/babel-plugin-codegen@0.86.0(@babel/core@7.29.7)':
+ dependencies:
+ '@babel/traverse': 7.29.7
+ '@react-native/codegen': 0.86.0(@babel/core@7.29.7)
+ transitivePeerDependencies:
+ - '@babel/core'
+ - supports-color
+
'@react-native/babel-preset@0.81.5(@babel/core@7.29.7)':
dependencies:
'@babel/core': 7.29.7
@@ -9996,6 +10113,44 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ '@react-native/babel-preset@0.86.0(@babel/core@7.29.7)':
+ dependencies:
+ '@babel/core': 7.29.7
+ '@babel/plugin-proposal-export-default-from': 7.29.7(@babel/core@7.29.7)
+ '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.29.7)
+ '@babel/plugin-syntax-export-default-from': 7.29.7(@babel/core@7.29.7)
+ '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.29.7)
+ '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.29.7)
+ '@babel/plugin-transform-async-generator-functions': 7.29.7(@babel/core@7.29.7)
+ '@babel/plugin-transform-async-to-generator': 7.29.7(@babel/core@7.29.7)
+ '@babel/plugin-transform-block-scoping': 7.29.7(@babel/core@7.29.7)
+ '@babel/plugin-transform-class-properties': 7.29.7(@babel/core@7.29.7)
+ '@babel/plugin-transform-classes': 7.29.7(@babel/core@7.29.7)
+ '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@7.29.7)
+ '@babel/plugin-transform-flow-strip-types': 7.29.7(@babel/core@7.29.7)
+ '@babel/plugin-transform-for-of': 7.29.7(@babel/core@7.29.7)
+ '@babel/plugin-transform-modules-commonjs': 7.29.7(@babel/core@7.29.7)
+ '@babel/plugin-transform-named-capturing-groups-regex': 7.29.7(@babel/core@7.29.7)
+ '@babel/plugin-transform-nullish-coalescing-operator': 7.29.7(@babel/core@7.29.7)
+ '@babel/plugin-transform-optional-catch-binding': 7.29.7(@babel/core@7.29.7)
+ '@babel/plugin-transform-optional-chaining': 7.29.7(@babel/core@7.29.7)
+ '@babel/plugin-transform-private-methods': 7.29.7(@babel/core@7.29.7)
+ '@babel/plugin-transform-private-property-in-object': 7.29.7(@babel/core@7.29.7)
+ '@babel/plugin-transform-react-display-name': 7.29.7(@babel/core@7.29.7)
+ '@babel/plugin-transform-react-jsx': 7.29.7(@babel/core@7.29.7)
+ '@babel/plugin-transform-react-jsx-self': 7.29.7(@babel/core@7.29.7)
+ '@babel/plugin-transform-react-jsx-source': 7.29.7(@babel/core@7.29.7)
+ '@babel/plugin-transform-regenerator': 7.29.7(@babel/core@7.29.7)
+ '@babel/plugin-transform-runtime': 7.29.7(@babel/core@7.29.7)
+ '@babel/plugin-transform-typescript': 7.29.7(@babel/core@7.29.7)
+ '@babel/plugin-transform-unicode-regex': 7.29.7(@babel/core@7.29.7)
+ '@react-native/babel-plugin-codegen': 0.86.0(@babel/core@7.29.7)
+ babel-plugin-syntax-hermes-parser: 0.36.0
+ babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.29.7)
+ react-refresh: 0.14.2
+ transitivePeerDependencies:
+ - supports-color
+
'@react-native/codegen@0.81.5(@babel/core@7.29.7)':
dependencies:
'@babel/core': 7.29.7
@@ -10006,7 +10161,17 @@ snapshots:
nullthrows: 1.1.1
yargs: 17.7.2
- '@react-native/community-cli-plugin@0.81.5':
+ '@react-native/codegen@0.86.0(@babel/core@7.29.7)':
+ dependencies:
+ '@babel/core': 7.29.7
+ '@babel/parser': 7.29.7
+ hermes-parser: 0.36.0
+ invariant: 2.2.4
+ nullthrows: 1.1.1
+ tinyglobby: 0.2.16
+ yargs: 17.7.2
+
+ '@react-native/community-cli-plugin@0.81.5(@react-native/metro-config@0.86.0(@babel/core@7.29.7))':
dependencies:
'@react-native/dev-middleware': 0.81.5
debug: 4.4.3(supports-color@8.1.1)
@@ -10015,6 +10180,8 @@ snapshots:
metro-config: 0.83.7
metro-core: 0.83.7
semver: 7.8.1
+ optionalDependencies:
+ '@react-native/metro-config': 0.86.0(@babel/core@7.29.7)
transitivePeerDependencies:
- bufferutil
- supports-color
@@ -10044,28 +10211,51 @@ snapshots:
'@react-native/js-polyfills@0.81.5': {}
+ '@react-native/js-polyfills@0.86.0': {}
+
+ '@react-native/metro-babel-transformer@0.86.0(@babel/core@7.29.7)':
+ dependencies:
+ '@babel/core': 7.29.7
+ '@react-native/babel-preset': 0.86.0(@babel/core@7.29.7)
+ hermes-parser: 0.36.0
+ nullthrows: 1.1.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@react-native/metro-config@0.86.0(@babel/core@7.29.7)':
+ dependencies:
+ '@react-native/js-polyfills': 0.86.0
+ '@react-native/metro-babel-transformer': 0.86.0(@babel/core@7.29.7)
+ metro-config: 0.84.4
+ metro-runtime: 0.84.4
+ transitivePeerDependencies:
+ - '@babel/core'
+ - bufferutil
+ - supports-color
+ - utf-8-validate
+
'@react-native/normalize-colors@0.76.2': {}
'@react-native/normalize-colors@0.81.5': {}
- '@react-native/virtualized-lists@0.81.5(@types/react@19.1.17)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@react-native/virtualized-lists@0.81.5(@types/react@19.1.17)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
dependencies:
invariant: 2.2.4
nullthrows: 1.1.1
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
optionalDependencies:
'@types/react': 19.1.17
- '@react-navigation/bottom-tabs@7.16.2(@react-navigation/native@7.2.5(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@react-navigation/bottom-tabs@7.16.2(@react-navigation/native@7.2.5(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
dependencies:
- '@react-navigation/elements': 2.9.19(@react-navigation/native@7.2.5(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- '@react-navigation/native': 7.2.5(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@react-navigation/elements': 2.9.19(@react-navigation/native@7.2.5(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@react-navigation/native': 7.2.5(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
color: 4.2.3
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)
- react-native-safe-area-context: 5.6.2(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- react-native-screens: 4.16.0(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
+ react-native-safe-area-context: 5.6.2(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ react-native-screens: 4.16.0(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
sf-symbols-typescript: 2.2.0
transitivePeerDependencies:
- '@react-native-masked-view/masked-view'
@@ -10082,38 +10272,38 @@ snapshots:
use-latest-callback: 0.2.6(react@19.1.0)
use-sync-external-store: 1.6.0(react@19.1.0)
- '@react-navigation/elements@2.9.19(@react-navigation/native@7.2.5(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@react-navigation/elements@2.9.19(@react-navigation/native@7.2.5(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
dependencies:
- '@react-navigation/native': 7.2.5(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@react-navigation/native': 7.2.5(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
color: 4.2.3
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)
- react-native-safe-area-context: 5.6.2(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
+ react-native-safe-area-context: 5.6.2(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
use-latest-callback: 0.2.6(react@19.1.0)
use-sync-external-store: 1.6.0(react@19.1.0)
- '@react-navigation/native-stack@7.16.0(@react-navigation/native@7.2.5(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@react-navigation/native-stack@7.16.0(@react-navigation/native@7.2.5(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
dependencies:
- '@react-navigation/elements': 2.9.19(@react-navigation/native@7.2.5(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- '@react-navigation/native': 7.2.5(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@react-navigation/elements': 2.9.19(@react-navigation/native@7.2.5(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@react-navigation/native': 7.2.5(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
color: 4.2.3
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)
- react-native-safe-area-context: 5.6.2(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- react-native-screens: 4.16.0(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
+ react-native-safe-area-context: 5.6.2(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ react-native-screens: 4.16.0(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
sf-symbols-typescript: 2.2.0
warn-once: 0.1.1
transitivePeerDependencies:
- '@react-native-masked-view/masked-view'
- '@react-navigation/native@7.2.5(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@react-navigation/native@7.2.5(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
dependencies:
'@react-navigation/core': 7.17.5(react@19.1.0)
escape-string-regexp: 4.0.0
fast-deep-equal: 3.1.3
nanoid: 3.3.12
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
use-latest-callback: 0.2.6(react@19.1.0)
'@react-navigation/routers@7.5.5':
@@ -10308,28 +10498,28 @@ snapshots:
'@tanstack/store@0.9.3': {}
- '@testing-library/jest-native@5.4.3(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react-test-renderer@19.1.0(react@19.1.0))(react@19.1.0)':
+ '@testing-library/jest-native@5.4.3(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react-test-renderer@19.1.0(react@19.1.0))(react@19.1.0)':
dependencies:
chalk: 4.1.2
jest-diff: 29.7.0
jest-matcher-utils: 29.7.0
pretty-format: 29.7.0
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
react-test-renderer: 19.1.0(react@19.1.0)
redent: 3.0.0
- '@testing-library/react-native@13.3.3(jest@29.7.0(@types/node@22.19.19)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.8.3)))(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react-test-renderer@19.1.0(react@19.1.0))(react@19.1.0)':
+ '@testing-library/react-native@13.3.3(jest@29.7.0(@types/node@22.19.19)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.9.3)))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react-test-renderer@19.1.0(react@19.1.0))(react@19.1.0)':
dependencies:
jest-matcher-utils: 30.4.1
picocolors: 1.1.1
pretty-format: 30.4.1
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
react-test-renderer: 19.1.0(react@19.1.0)
redent: 3.0.0
optionalDependencies:
- jest: 29.7.0(@types/node@22.19.19)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.8.3))
+ jest: 29.7.0(@types/node@22.19.19)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.9.3))
'@tokenizer/inflate@0.4.1':
dependencies:
@@ -10406,10 +10596,10 @@ snapshots:
dependencies:
'@types/istanbul-lib-report': 3.0.3
- '@types/jest@30.0.0':
+ '@types/jest@29.5.14':
dependencies:
- expect: 30.4.1
- pretty-format: 30.4.1
+ expect: 29.7.0
+ pretty-format: 29.7.0
'@types/jsdom@20.0.1':
dependencies:
@@ -10511,7 +10701,7 @@ snapshots:
loupe: 3.2.1
tinyrainbow: 2.0.0
- '@xmldom/xmldom@0.9.10': {}
+ '@xmldom/xmldom@0.8.10': {}
'@yarnpkg/lockfile@1.1.0': {}
@@ -10731,6 +10921,10 @@ snapshots:
dependencies:
hermes-parser: 0.29.1
+ babel-plugin-syntax-hermes-parser@0.36.0:
+ dependencies:
+ hermes-parser: 0.36.0
+
babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.29.7):
dependencies:
'@babel/plugin-syntax-flow': 7.29.7(@babel/core@7.29.7)
@@ -10783,7 +10977,7 @@ snapshots:
resolve-from: 5.0.0
optionalDependencies:
'@babel/runtime': 7.29.7
- expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.8.3)
+ expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.3)
transitivePeerDependencies:
- '@babel/core'
- supports-color
@@ -11005,8 +11199,6 @@ snapshots:
ci-info@3.9.0: {}
- ci-info@4.4.0: {}
-
cjs-module-lexer@1.4.3: {}
clawpdf@0.3.0: {}
@@ -11146,13 +11338,13 @@ snapshots:
object-assign: 4.1.1
vary: 1.1.2
- create-jest@29.7.0(@types/node@22.19.19)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.8.3)):
+ create-jest@29.7.0(@types/node@22.19.19)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.9.3)):
dependencies:
'@jest/types': 29.6.3
chalk: 4.1.2
exit: 0.1.2
graceful-fs: 4.2.11
- jest-config: 29.7.0(@types/node@22.19.19)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.8.3))
+ jest-config: 29.7.0(@types/node@22.19.19)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.9.3))
jest-util: 29.7.0
prompts: 2.4.2
transitivePeerDependencies:
@@ -11328,11 +11520,11 @@ snapshots:
es-errors: 1.3.0
gopd: 1.2.0
- eas-cli@20.1.0(@types/node@22.19.19)(typescript@5.8.3):
+ eas-cli@20.1.0(@types/node@22.19.19)(typescript@5.9.3):
dependencies:
'@expo/apple-utils': 2.1.19
'@expo/code-signing-certificates': 0.0.5
- '@expo/config': 55.0.10(typescript@5.8.3)
+ '@expo/config': 55.0.10(typescript@5.9.3)
'@expo/config-plugins': 55.0.7
'@expo/eas-build-job': 20.1.0
'@expo/eas-json': 20.1.0
@@ -11344,8 +11536,8 @@ snapshots:
'@expo/package-manager': 1.9.10
'@expo/pkcs12': 0.1.3
'@expo/plist': 0.2.0
- '@expo/plugin-help': 5.1.23(@types/node@22.19.19)(typescript@5.8.3)
- '@expo/plugin-warn-if-update-available': 2.5.1(@types/node@22.19.19)(typescript@5.8.3)
+ '@expo/plugin-help': 5.1.23(@types/node@22.19.19)(typescript@5.9.3)
+ '@expo/plugin-warn-if-update-available': 2.5.1(@types/node@22.19.19)(typescript@5.9.3)
'@expo/prebuild-config': 8.0.17
'@expo/results': 1.0.0
'@expo/rudder-sdk-node': 1.1.1
@@ -11646,52 +11838,48 @@ snapshots:
jest-message-util: 29.7.0
jest-util: 29.7.0
- expect@30.4.1:
+ expo-asset@12.0.13(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.3):
dependencies:
- '@jest/expect-utils': 30.4.1
- '@jest/get-type': 30.1.0
- jest-matcher-utils: 30.4.1
- jest-message-util: 30.4.1
- jest-mock: 30.4.1
- jest-util: 30.4.1
-
- expo-asset@12.0.13(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.8.3):
- dependencies:
- '@expo/image-utils': 0.8.14(typescript@5.8.3)
- expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.8.3)
- expo-constants: 18.0.13(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))
+ '@expo/image-utils': 0.8.14(typescript@5.9.3)
+ expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.3)
+ expo-constants: 18.0.13(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
transitivePeerDependencies:
- supports-color
- typescript
- expo-build-properties@55.0.14(expo@54.0.35):
+ expo-build-properties@1.0.10(expo@54.0.35):
dependencies:
- '@expo/schema-utils': 55.0.4
- expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.8.3)
- resolve-from: 5.0.0
+ ajv: 8.20.0
+ expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.3)
semver: 7.8.1
- expo-camera@17.0.10(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ expo-camera@17.0.10(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
dependencies:
- expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.8.3)
+ expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.3)
invariant: 2.2.4
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
- expo-constants@18.0.13(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)):
+ expo-clipboard@8.0.8(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ dependencies:
+ expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.3)
+ react: 19.1.0
+ react-native: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
+
+ expo-constants@18.0.13(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)):
dependencies:
'@expo/config': 12.0.13
'@expo/env': 2.0.11
- expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.8.3)
- react-native: 0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)
+ expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.3)
+ react-native: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
transitivePeerDependencies:
- supports-color
expo-dev-client@6.0.21(expo@54.0.35):
dependencies:
- expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.8.3)
+ expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.3)
expo-dev-launcher: 6.0.21(expo@54.0.35)
expo-dev-menu: 7.0.19(expo@54.0.35)
expo-dev-menu-interface: 2.0.0(expo@54.0.35)
@@ -11703,7 +11891,7 @@ snapshots:
expo-dev-launcher@6.0.21(expo@54.0.35):
dependencies:
ajv: 8.20.0
- expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.8.3)
+ expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.3)
expo-dev-menu: 7.0.19(expo@54.0.35)
expo-manifests: 1.0.11(expo@54.0.35)
transitivePeerDependencies:
@@ -11711,54 +11899,54 @@ snapshots:
expo-dev-menu-interface@2.0.0(expo@54.0.35):
dependencies:
- expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.8.3)
+ expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.3)
expo-dev-menu@7.0.19(expo@54.0.35):
dependencies:
- expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.8.3)
+ expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.3)
expo-dev-menu-interface: 2.0.0(expo@54.0.35)
expo-document-picker@14.0.8(expo@54.0.35):
dependencies:
- expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.8.3)
+ expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.3)
expo-eas-client@1.0.8: {}
- expo-file-system@19.0.23(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)):
+ expo-file-system@19.0.23(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)):
dependencies:
- expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.8.3)
- react-native: 0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)
+ expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.3)
+ react-native: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
- expo-font@14.0.12(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ expo-font@14.0.12(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
dependencies:
- expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.8.3)
+ expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.3)
fontfaceobserver: 2.3.0
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
expo-haptics@15.0.8(expo@54.0.35):
dependencies:
- expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.8.3)
+ expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.3)
- expo-image@3.0.11(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ expo-image@3.0.11(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
dependencies:
- expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.8.3)
+ expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.3)
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
expo-json-utils@0.15.0: {}
expo-keep-awake@15.0.8(expo@54.0.35)(react@19.1.0):
dependencies:
- expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.8.3)
+ expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.3)
react: 19.1.0
- expo-linking@8.0.12(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ expo-linking@8.0.12(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
dependencies:
- expo-constants: 18.0.13(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))
+ expo-constants: 18.0.13(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))
invariant: 2.2.4
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
transitivePeerDependencies:
- expo
- supports-color
@@ -11766,7 +11954,7 @@ snapshots:
expo-manifests@1.0.11(expo@54.0.35):
dependencies:
'@expo/config': 12.0.13
- expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.8.3)
+ expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.3)
expo-json-utils: 0.15.0
transitivePeerDependencies:
- supports-color
@@ -11779,27 +11967,27 @@ snapshots:
require-from-string: 2.0.2
resolve-from: 5.0.0
- expo-modules-core@3.0.30(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ expo-modules-core@3.0.30(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
dependencies:
invariant: 2.2.4
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
- expo-router@6.0.24(ace148d1f520ff029f39906dc9ee7269):
+ expo-router@6.0.24(72aa1b4e09fcc05a20cea2fc14c00517):
dependencies:
- '@expo/metro-runtime': 6.1.2(expo@54.0.35)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@expo/metro-runtime': 6.1.2(expo@54.0.35)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
'@expo/schema-utils': 0.1.8
'@radix-ui/react-slot': 1.2.0(@types/react@19.1.17)(react@19.1.0)
'@radix-ui/react-tabs': 1.1.13(@types/react@19.1.17)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
- '@react-navigation/bottom-tabs': 7.16.2(@react-navigation/native@7.2.5(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- '@react-navigation/native': 7.2.5(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- '@react-navigation/native-stack': 7.16.0(@react-navigation/native@7.2.5(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@react-navigation/bottom-tabs': 7.16.2(@react-navigation/native@7.2.5(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@react-navigation/native': 7.2.5(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@react-navigation/native-stack': 7.16.0(@react-navigation/native@7.2.5(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
client-only: 0.0.1
debug: 4.4.3(supports-color@8.1.1)
escape-string-regexp: 4.0.0
- expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.8.3)
- expo-constants: 18.0.13(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))
- expo-linking: 8.0.12(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.3)
+ expo-constants: 18.0.13(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))
+ expo-linking: 8.0.12(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
expo-server: 1.0.7
fast-deep-equal: 3.1.3
invariant: 2.2.4
@@ -11807,10 +11995,10 @@ snapshots:
query-string: 7.1.3
react: 19.1.0
react-fast-compare: 3.2.2
- react-native: 0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)
- react-native-is-edge-to-edge: 1.3.1(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- react-native-safe-area-context: 5.6.2(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- react-native-screens: 4.16.0(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
+ react-native-is-edge-to-edge: 1.3.1(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ react-native-safe-area-context: 5.6.2(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ react-native-screens: 4.16.0(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
semver: 7.6.3
server-only: 0.0.1
sf-symbols-typescript: 2.2.0
@@ -11818,10 +12006,10 @@ snapshots:
use-latest-callback: 0.2.6(react@19.1.0)
vaul: 1.1.2(@types/react@19.1.17)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
optionalDependencies:
- '@testing-library/react-native': 13.3.3(jest@29.7.0(@types/node@22.19.19)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.8.3)))(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react-test-renderer@19.1.0(react@19.1.0))(react@19.1.0)
+ '@testing-library/react-native': 13.3.3(jest@29.7.0(@types/node@22.19.19)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.9.3)))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react-test-renderer@19.1.0(react@19.1.0))(react@19.1.0)
react-dom: 19.1.0(react@19.1.0)
- react-native-gesture-handler: 2.28.0(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- react-native-reanimated: 3.19.5(@babel/core@7.29.7)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ react-native-gesture-handler: 2.28.0(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ react-native-reanimated: 4.1.7(react-native-worklets@0.8.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
transitivePeerDependencies:
- '@react-native-masked-view/masked-view'
- '@types/react'
@@ -11830,51 +12018,51 @@ snapshots:
expo-screen-capture@8.0.9(expo@54.0.35)(react@19.1.0):
dependencies:
- expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.8.3)
+ expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.3)
react: 19.1.0
expo-server@1.0.7: {}
expo-sharing@14.0.8(expo@54.0.35):
dependencies:
- expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.8.3)
+ expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.3)
- expo-splash-screen@31.0.13(expo@54.0.35)(typescript@5.8.3):
+ expo-splash-screen@31.0.13(expo@54.0.35)(typescript@5.9.3):
dependencies:
- '@expo/prebuild-config': 54.0.8(expo@54.0.35)(typescript@5.8.3)
- expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.8.3)
+ '@expo/prebuild-config': 54.0.8(expo@54.0.35)(typescript@5.9.3)
+ expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.3)
transitivePeerDependencies:
- supports-color
- typescript
- expo-status-bar@3.0.9(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ expo-status-bar@3.0.9(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
dependencies:
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)
- react-native-is-edge-to-edge: 1.3.1(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
+ react-native-is-edge-to-edge: 1.3.1(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
expo-structured-headers@5.0.0: {}
- expo-symbols@1.0.8(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)):
+ expo-symbols@1.0.8(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)):
dependencies:
- expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.8.3)
- react-native: 0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)
+ expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.3)
+ react-native: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
sf-symbols-typescript: 2.2.0
- expo-system-ui@6.0.9(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)):
+ expo-system-ui@6.0.9(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)):
dependencies:
'@react-native/normalize-colors': 0.81.5
debug: 4.4.3(supports-color@8.1.1)
- expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.8.3)
- react-native: 0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)
+ expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.3)
+ react-native: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
transitivePeerDependencies:
- supports-color
expo-updates-interface@2.0.0(expo@54.0.35):
dependencies:
- expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.8.3)
+ expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.3)
- expo-updates@29.0.18(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ expo-updates@29.0.18(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
dependencies:
'@expo/code-signing-certificates': 0.0.6
'@expo/plist': 0.4.9
@@ -11882,7 +12070,7 @@ snapshots:
arg: 4.1.0
chalk: 4.1.2
debug: 4.4.3(supports-color@8.1.1)
- expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.8.3)
+ expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.3)
expo-eas-client: 1.0.8
expo-manifests: 1.0.11(expo@54.0.35)
expo-structured-headers: 5.0.0
@@ -11891,43 +12079,43 @@ snapshots:
glob: 13.0.6
ignore: 5.3.2
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
resolve-from: 5.0.0
transitivePeerDependencies:
- supports-color
- expo-web-browser@15.0.11(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)):
+ expo-web-browser@15.0.11(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)):
dependencies:
- expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.8.3)
- react-native: 0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)
+ expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.3)
+ react-native: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
- expo@54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.8.3):
+ expo@54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.3):
dependencies:
'@babel/runtime': 7.29.7
- '@expo/cli': 54.0.25(expo-router@6.0.24)(expo@54.0.35)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(typescript@5.8.3)
+ '@expo/cli': 54.0.25(expo-router@6.0.24)(expo@54.0.35)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(typescript@5.9.3)
'@expo/config': 12.0.13
'@expo/config-plugins': 54.0.4
- '@expo/devtools': 0.1.8(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@expo/devtools': 0.1.8(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
'@expo/fingerprint': 0.15.5
'@expo/metro': 54.2.0
'@expo/metro-config': 54.0.16(expo@54.0.35)
- '@expo/vector-icons': 15.1.1(expo-font@14.0.12(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@expo/vector-icons': 15.1.1(expo-font@14.0.12(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
'@ungap/structured-clone': 1.3.1
babel-preset-expo: 54.0.11(@babel/core@7.29.7)(@babel/runtime@7.29.7)(expo@54.0.35)(react-refresh@0.14.2)
- expo-asset: 12.0.13(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.8.3)
- expo-constants: 18.0.13(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))
- expo-file-system: 19.0.23(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))
- expo-font: 14.0.12(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ expo-asset: 12.0.13(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.3)
+ expo-constants: 18.0.13(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))
+ expo-file-system: 19.0.23(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))
+ expo-font: 14.0.12(expo@54.0.35)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
expo-keep-awake: 15.0.8(expo@54.0.35)(react@19.1.0)
expo-modules-autolinking: 3.0.26
- expo-modules-core: 3.0.30(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ expo-modules-core: 3.0.30(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
pretty-format: 29.7.0
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
react-refresh: 0.14.2
whatwg-url-without-unicode: 8.0.0-3
optionalDependencies:
- '@expo/metro-runtime': 6.1.2(expo@54.0.35)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@expo/metro-runtime': 6.1.2(expo@54.0.35)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
transitivePeerDependencies:
- '@babel/core'
- bufferutil
@@ -12329,6 +12517,8 @@ snapshots:
hermes-estree@0.35.0: {}
+ hermes-estree@0.36.0: {}
+
hermes-parser@0.29.1:
dependencies:
hermes-estree: 0.29.1
@@ -12341,6 +12531,10 @@ snapshots:
dependencies:
hermes-estree: 0.35.0
+ hermes-parser@0.36.0:
+ dependencies:
+ hermes-estree: 0.36.0
+
hi-base32@0.5.1: {}
highlight.js@11.11.1: {}
@@ -12626,16 +12820,16 @@ snapshots:
- babel-plugin-macros
- supports-color
- jest-cli@29.7.0(@types/node@22.19.19)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.8.3)):
+ jest-cli@29.7.0(@types/node@22.19.19)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.9.3)):
dependencies:
- '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.8.3))
+ '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.9.3))
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
chalk: 4.1.2
- create-jest: 29.7.0(@types/node@22.19.19)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.8.3))
+ create-jest: 29.7.0(@types/node@22.19.19)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.9.3))
exit: 0.1.2
import-local: 3.2.0
- jest-config: 29.7.0(@types/node@22.19.19)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.8.3))
+ jest-config: 29.7.0(@types/node@22.19.19)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.9.3))
jest-util: 29.7.0
jest-validate: 29.7.0
yargs: 17.7.2
@@ -12645,7 +12839,7 @@ snapshots:
- supports-color
- ts-node
- jest-config@29.7.0(@types/node@22.19.19)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.8.3)):
+ jest-config@29.7.0(@types/node@22.19.19)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.9.3)):
dependencies:
'@babel/core': 7.29.7
'@jest/test-sequencer': 29.7.0
@@ -12671,7 +12865,7 @@ snapshots:
strip-json-comments: 3.1.1
optionalDependencies:
'@types/node': 22.19.19
- ts-node: 10.9.2(@types/node@22.19.19)(typescript@5.8.3)
+ ts-node: 10.9.2(@types/node@22.19.19)(typescript@5.9.3)
transitivePeerDependencies:
- babel-plugin-macros
- supports-color
@@ -12728,21 +12922,21 @@ snapshots:
jest-mock: 29.7.0
jest-util: 29.7.0
- jest-expo@55.0.18(@babel/core@7.29.7)(canvas@2.11.2)(expo@54.0.35)(jest@29.7.0(@types/node@22.19.19)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.8.3)))(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.8.3):
+ jest-expo@54.0.17(@babel/core@7.29.7)(canvas@2.11.2)(expo@54.0.35)(jest@29.7.0(@types/node@22.19.19)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.9.3)))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
dependencies:
- '@expo/config': 55.0.17(typescript@5.8.3)
+ '@expo/config': 12.0.13
'@expo/json-file': 10.2.0
'@jest/create-cache-key-function': 29.7.0
'@jest/globals': 29.7.0
babel-jest: 29.7.0(@babel/core@7.29.7)
- expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.8.3)
+ expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.3)
jest-environment-jsdom: 29.7.0(canvas@2.11.2)
jest-snapshot: 29.7.0
jest-watch-select-projects: 2.0.0
- jest-watch-typeahead: 2.2.1(jest@29.7.0(@types/node@22.19.19)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.8.3)))
+ jest-watch-typeahead: 2.2.1(jest@29.7.0(@types/node@22.19.19)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.9.3)))
json5: 2.2.3
lodash: 4.18.1
- react-native: 0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
react-test-renderer: 19.1.0(react@19.1.0)
server-only: 0.0.1
stacktrace-js: 2.0.2
@@ -12753,7 +12947,6 @@ snapshots:
- jest
- react
- supports-color
- - typescript
- utf-8-validate
jest-get-type@29.6.3: {}
@@ -12805,39 +12998,18 @@ snapshots:
slash: 3.0.0
stack-utils: 2.0.6
- jest-message-util@30.4.1:
- dependencies:
- '@babel/code-frame': 7.29.7
- '@jest/types': 30.4.1
- '@types/stack-utils': 2.0.3
- chalk: 4.1.2
- graceful-fs: 4.2.11
- jest-util: 30.4.1
- picomatch: 4.0.4
- pretty-format: 30.4.1
- slash: 3.0.0
- stack-utils: 2.0.6
-
jest-mock@29.7.0:
dependencies:
'@jest/types': 29.6.3
'@types/node': 22.19.19
jest-util: 29.7.0
- jest-mock@30.4.1:
- dependencies:
- '@jest/types': 30.4.1
- '@types/node': 22.19.19
- jest-util: 30.4.1
-
jest-pnp-resolver@1.2.3(jest-resolve@29.7.0):
optionalDependencies:
jest-resolve: 29.7.0
jest-regex-util@29.6.3: {}
- jest-regex-util@30.4.0: {}
-
jest-resolve-dependencies@29.7.0:
dependencies:
jest-regex-util: 29.6.3
@@ -12944,15 +13116,6 @@ snapshots:
graceful-fs: 4.2.11
picomatch: 2.3.2
- jest-util@30.4.1:
- dependencies:
- '@jest/types': 30.4.1
- '@types/node': 22.19.19
- chalk: 4.1.2
- ci-info: 4.4.0
- graceful-fs: 4.2.11
- picomatch: 4.0.4
-
jest-validate@29.7.0:
dependencies:
'@jest/types': 29.6.3
@@ -12968,11 +13131,11 @@ snapshots:
chalk: 3.0.0
prompts: 2.4.2
- jest-watch-typeahead@2.2.1(jest@29.7.0(@types/node@22.19.19)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.8.3))):
+ jest-watch-typeahead@2.2.1(jest@29.7.0(@types/node@22.19.19)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.9.3))):
dependencies:
ansi-escapes: 6.2.1
chalk: 4.1.2
- jest: 29.7.0(@types/node@22.19.19)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.8.3))
+ jest: 29.7.0(@types/node@22.19.19)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.9.3))
jest-regex-util: 29.6.3
jest-watcher: 29.7.0
slash: 5.1.0
@@ -12997,12 +13160,12 @@ snapshots:
merge-stream: 2.0.0
supports-color: 8.1.1
- jest@29.7.0(@types/node@22.19.19)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.8.3)):
+ jest@29.7.0(@types/node@22.19.19)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.9.3)):
dependencies:
- '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.8.3))
+ '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.9.3))
'@jest/types': 29.6.3
import-local: 3.2.0
- jest-cli: 29.7.0(@types/node@22.19.19)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.8.3))
+ jest-cli: 29.7.0(@types/node@22.19.19)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.9.3))
transitivePeerDependencies:
- '@types/node'
- babel-plugin-macros
@@ -13382,6 +13545,16 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ metro-babel-transformer@0.84.4:
+ dependencies:
+ '@babel/core': 7.29.7
+ flow-enums-runtime: 0.0.6
+ hermes-parser: 0.35.0
+ metro-cache-key: 0.84.4
+ nullthrows: 1.1.1
+ transitivePeerDependencies:
+ - supports-color
+
metro-cache-key@0.83.3:
dependencies:
flow-enums-runtime: 0.0.6
@@ -13390,6 +13563,10 @@ snapshots:
dependencies:
flow-enums-runtime: 0.0.6
+ metro-cache-key@0.84.4:
+ dependencies:
+ flow-enums-runtime: 0.0.6
+
metro-cache@0.83.3:
dependencies:
exponential-backoff: 3.1.3
@@ -13408,6 +13585,15 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ metro-cache@0.84.4:
+ dependencies:
+ exponential-backoff: 3.1.3
+ flow-enums-runtime: 0.0.6
+ https-proxy-agent: 7.0.6
+ metro-core: 0.84.4
+ transitivePeerDependencies:
+ - supports-color
+
metro-config@0.83.3:
dependencies:
connect: 3.7.0
@@ -13438,6 +13624,21 @@ snapshots:
- supports-color
- utf-8-validate
+ metro-config@0.84.4:
+ dependencies:
+ connect: 3.7.0
+ flow-enums-runtime: 0.0.6
+ jest-validate: 29.7.0
+ metro: 0.84.4
+ metro-cache: 0.84.4
+ metro-core: 0.84.4
+ metro-runtime: 0.84.4
+ yaml: 2.9.0
+ transitivePeerDependencies:
+ - bufferutil
+ - supports-color
+ - utf-8-validate
+
metro-core@0.83.3:
dependencies:
flow-enums-runtime: 0.0.6
@@ -13450,6 +13651,12 @@ snapshots:
lodash.throttle: 4.1.1
metro-resolver: 0.83.7
+ metro-core@0.84.4:
+ dependencies:
+ flow-enums-runtime: 0.0.6
+ lodash.throttle: 4.1.1
+ metro-resolver: 0.84.4
+
metro-file-map@0.83.3:
dependencies:
debug: 4.4.3(supports-color@8.1.1)
@@ -13478,6 +13685,20 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ metro-file-map@0.84.4:
+ dependencies:
+ debug: 4.4.3(supports-color@8.1.1)
+ fb-watchman: 2.0.2
+ flow-enums-runtime: 0.0.6
+ graceful-fs: 4.2.11
+ invariant: 2.2.4
+ jest-worker: 29.7.0
+ micromatch: 4.0.8
+ nullthrows: 1.1.1
+ walker: 1.0.8
+ transitivePeerDependencies:
+ - supports-color
+
metro-minify-terser@0.83.3:
dependencies:
flow-enums-runtime: 0.0.6
@@ -13488,6 +13709,11 @@ snapshots:
flow-enums-runtime: 0.0.6
terser: 5.48.0
+ metro-minify-terser@0.84.4:
+ dependencies:
+ flow-enums-runtime: 0.0.6
+ terser: 5.48.0
+
metro-resolver@0.83.3:
dependencies:
flow-enums-runtime: 0.0.6
@@ -13496,6 +13722,10 @@ snapshots:
dependencies:
flow-enums-runtime: 0.0.6
+ metro-resolver@0.84.4:
+ dependencies:
+ flow-enums-runtime: 0.0.6
+
metro-runtime@0.83.3:
dependencies:
'@babel/runtime': 7.29.7
@@ -13506,6 +13736,11 @@ snapshots:
'@babel/runtime': 7.29.7
flow-enums-runtime: 0.0.6
+ metro-runtime@0.84.4:
+ dependencies:
+ '@babel/runtime': 7.29.7
+ flow-enums-runtime: 0.0.6
+
metro-source-map@0.83.3:
dependencies:
'@babel/traverse': 7.29.7
@@ -13535,6 +13770,20 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ metro-source-map@0.84.4:
+ dependencies:
+ '@babel/traverse': 7.29.7
+ '@babel/types': 7.29.7
+ flow-enums-runtime: 0.0.6
+ invariant: 2.2.4
+ metro-symbolicate: 0.84.4
+ nullthrows: 1.1.1
+ ob1: 0.84.4
+ source-map: 0.5.7
+ vlq: 1.0.1
+ transitivePeerDependencies:
+ - supports-color
+
metro-symbolicate@0.83.3:
dependencies:
flow-enums-runtime: 0.0.6
@@ -13557,6 +13806,17 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ metro-symbolicate@0.84.4:
+ dependencies:
+ flow-enums-runtime: 0.0.6
+ invariant: 2.2.4
+ metro-source-map: 0.84.4
+ nullthrows: 1.1.1
+ source-map: 0.5.7
+ vlq: 1.0.1
+ transitivePeerDependencies:
+ - supports-color
+
metro-transform-plugins@0.83.3:
dependencies:
'@babel/core': 7.29.7
@@ -13579,6 +13839,17 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ metro-transform-plugins@0.84.4:
+ dependencies:
+ '@babel/core': 7.29.7
+ '@babel/generator': 7.29.7
+ '@babel/template': 7.29.7
+ '@babel/traverse': 7.29.7
+ flow-enums-runtime: 0.0.6
+ nullthrows: 1.1.1
+ transitivePeerDependencies:
+ - supports-color
+
metro-transform-worker@0.83.3:
dependencies:
'@babel/core': 7.29.7
@@ -13619,6 +13890,26 @@ snapshots:
- supports-color
- utf-8-validate
+ metro-transform-worker@0.84.4:
+ dependencies:
+ '@babel/core': 7.29.7
+ '@babel/generator': 7.29.7
+ '@babel/parser': 7.29.7
+ '@babel/types': 7.29.7
+ flow-enums-runtime: 0.0.6
+ metro: 0.84.4
+ metro-babel-transformer: 0.84.4
+ metro-cache: 0.84.4
+ metro-cache-key: 0.84.4
+ metro-minify-terser: 0.84.4
+ metro-source-map: 0.84.4
+ metro-transform-plugins: 0.84.4
+ nullthrows: 1.1.1
+ transitivePeerDependencies:
+ - bufferutil
+ - supports-color
+ - utf-8-validate
+
metro@0.83.3:
dependencies:
'@babel/code-frame': 7.29.7
@@ -13712,6 +14003,52 @@ snapshots:
- supports-color
- utf-8-validate
+ metro@0.84.4:
+ dependencies:
+ '@babel/code-frame': 7.29.7
+ '@babel/core': 7.29.7
+ '@babel/generator': 7.29.7
+ '@babel/parser': 7.29.7
+ '@babel/template': 7.29.7
+ '@babel/traverse': 7.29.7
+ '@babel/types': 7.29.7
+ accepts: 2.0.0
+ ci-info: 2.0.0
+ connect: 3.7.0
+ debug: 4.4.3(supports-color@8.1.1)
+ error-stack-parser: 2.1.4
+ flow-enums-runtime: 0.0.6
+ graceful-fs: 4.2.11
+ hermes-parser: 0.35.0
+ image-size: 1.2.1
+ invariant: 2.2.4
+ jest-worker: 29.7.0
+ jsc-safe-url: 0.2.4
+ lodash.throttle: 4.1.1
+ metro-babel-transformer: 0.84.4
+ metro-cache: 0.84.4
+ metro-cache-key: 0.84.4
+ metro-config: 0.84.4
+ metro-core: 0.84.4
+ metro-file-map: 0.84.4
+ metro-resolver: 0.84.4
+ metro-runtime: 0.84.4
+ metro-source-map: 0.84.4
+ metro-symbolicate: 0.84.4
+ metro-transform-plugins: 0.84.4
+ metro-transform-worker: 0.84.4
+ mime-types: 3.0.2
+ nullthrows: 1.1.1
+ serialize-error: 2.1.0
+ source-map: 0.5.7
+ throat: 5.0.0
+ ws: 7.5.11
+ yargs: 17.7.2
+ transitivePeerDependencies:
+ - bufferutil
+ - supports-color
+ - utf-8-validate
+
micromatch@4.0.8:
dependencies:
braces: 3.0.3
@@ -13914,6 +14251,10 @@ snapshots:
dependencies:
flow-enums-runtime: 0.0.6
+ ob1@0.84.4:
+ dependencies:
+ flow-enums-runtime: 0.0.6
+
object-assign@4.1.1: {}
object-inspect@1.13.4: {}
@@ -14207,7 +14548,7 @@ snapshots:
plist@3.1.1:
dependencies:
- '@xmldom/xmldom': 0.9.10
+ '@xmldom/xmldom': 0.8.10
base64-js: 1.5.1
xmlbuilder: 15.1.1
@@ -14426,149 +14767,162 @@ snapshots:
react-is@19.2.6: {}
- react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
dependencies:
'@egjs/hammerjs': 2.0.17
hoist-non-react-statics: 3.3.2
invariant: 2.2.4
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)
-
- react-native-is-edge-to-edge@1.1.7(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
- dependencies:
- react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
- react-native-is-edge-to-edge@1.3.1(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ react-native-is-edge-to-edge@1.3.1(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
dependencies:
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
- react-native-json-tree@1.5.0(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ react-native-json-tree@1.5.0(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
dependencies:
prop-types: 15.8.1
react: 19.1.0
react-base16-styling: 0.8.2
- react-native: 0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
react-native-keychain@10.0.0: {}
- react-native-mmkv@4.1.2(react-native-nitro-modules@0.35.9(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ react-native-mmkv@4.1.2(react-native-nitro-modules@0.35.9(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
dependencies:
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)
- react-native-nitro-modules: 0.35.9(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
+ react-native-nitro-modules: 0.35.9(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- react-native-mmkv@4.3.1(react-native-nitro-modules@0.35.9(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ react-native-mmkv@4.3.1(react-native-nitro-modules@0.35.9(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
dependencies:
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)
- react-native-nitro-modules: 0.35.9(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
+ react-native-nitro-modules: 0.35.9(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- react-native-nitro-modules@0.35.9(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ react-native-nitro-modules@0.35.9(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
dependencies:
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
- react-native-passkey@3.4.0(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ react-native-passkey@3.4.0(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
dependencies:
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
- react-native-quick-base64@2.2.2(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ react-native-quick-base64@2.2.2(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
dependencies:
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
- react-native-quick-base64@3.0.0(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ react-native-quick-base64@3.0.0(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
dependencies:
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
- react-native-quick-crypto@1.0.18(expo-build-properties@55.0.14(expo@54.0.35))(expo@54.0.35)(react-native-nitro-modules@0.35.9(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-quick-base64@3.0.0(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ react-native-quick-crypto@1.0.18(expo-build-properties@1.0.10(expo@54.0.35))(expo@54.0.35)(react-native-nitro-modules@0.35.9(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-quick-base64@2.2.2(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
dependencies:
- '@craftzdog/react-native-buffer': 6.1.0(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@craftzdog/react-native-buffer': 6.1.0(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
events: 3.3.0
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)
- react-native-nitro-modules: 0.35.9(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- react-native-quick-base64: 3.0.0(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
+ react-native-nitro-modules: 0.35.9(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ react-native-quick-base64: 2.2.2(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
readable-stream: 4.5.2
safe-buffer: 5.2.1
string_decoder: 1.3.0
util: 0.12.5
optionalDependencies:
- expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.8.3)
- expo-build-properties: 55.0.14(expo@54.0.35)
+ expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.3)
+ expo-build-properties: 1.0.10(expo@54.0.35)
- react-native-quick-crypto@1.1.5(expo-build-properties@55.0.14(expo@54.0.35))(expo@54.0.35)(react-native-nitro-modules@0.35.9(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-quick-base64@3.0.0(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ react-native-quick-crypto@1.1.5(expo-build-properties@1.0.10(expo@54.0.35))(expo@54.0.35)(react-native-nitro-modules@0.35.9(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-quick-base64@2.2.2(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
dependencies:
- '@craftzdog/react-native-buffer': 6.1.2(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@craftzdog/react-native-buffer': 6.1.2(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
events: 3.3.0
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)
- react-native-nitro-modules: 0.35.9(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- react-native-quick-base64: 3.0.0(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
+ react-native-nitro-modules: 0.35.9(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ react-native-quick-base64: 2.2.2(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
readable-stream: 4.7.0
safe-buffer: 5.2.1
string_decoder: 1.3.0
util: 0.12.5
optionalDependencies:
- expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.8.3)
- expo-build-properties: 55.0.14(expo@54.0.35)
+ expo: 54.0.35(@babel/core@7.29.7)(@expo/metro-runtime@6.1.2)(expo-router@6.0.24)(graphql@16.8.1)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.3)
+ expo-build-properties: 1.0.10(expo@54.0.35)
- react-native-reanimated@3.19.5(@babel/core@7.29.7)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ react-native-reanimated@4.1.7(react-native-worklets@0.8.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
dependencies:
- '@babel/core': 7.29.7
- '@babel/plugin-transform-arrow-functions': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-class-properties': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-classes': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-nullish-coalescing-operator': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-optional-chaining': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-shorthand-properties': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-template-literals': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-unicode-regex': 7.29.7(@babel/core@7.29.7)
- '@babel/preset-typescript': 7.29.7(@babel/core@7.29.7)
- convert-source-map: 2.0.0
- invariant: 2.2.4
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)
- react-native-is-edge-to-edge: 1.1.7(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- transitivePeerDependencies:
- - supports-color
+ react-native: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
+ react-native-is-edge-to-edge: 1.3.1(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ react-native-worklets: 0.8.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ semver: 7.8.1
- react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
dependencies:
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
- react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
dependencies:
react: 19.1.0
react-freeze: 1.0.4(react@19.1.0)
- react-native: 0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)
- react-native-is-edge-to-edge: 1.3.1(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
+ react-native-is-edge-to-edge: 1.3.1(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
warn-once: 0.1.1
- react-native-webrtc@124.0.7(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)):
+ react-native-unistyles@3.2.5(@react-native/normalize-colors@0.81.5)(react-native-nitro-modules@0.35.9(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-reanimated@4.1.7(react-native-worklets@0.8.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ dependencies:
+ '@babel/types': 7.29.0
+ '@react-native/normalize-colors': 0.81.5
+ react: 19.1.0
+ react-native: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
+ react-native-nitro-modules: 0.35.9(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ optionalDependencies:
+ react-native-reanimated: 4.1.7(react-native-worklets@0.8.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+
+ react-native-webrtc@124.0.7(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)):
dependencies:
base64-js: 1.5.1
debug: 4.3.4
event-target-shim: 6.0.2
- react-native: 0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
+ transitivePeerDependencies:
+ - supports-color
+
+ react-native-worklets@0.8.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ dependencies:
+ '@babel/core': 7.29.7
+ '@babel/plugin-transform-arrow-functions': 7.29.7(@babel/core@7.29.7)
+ '@babel/plugin-transform-class-properties': 7.29.7(@babel/core@7.29.7)
+ '@babel/plugin-transform-classes': 7.29.7(@babel/core@7.29.7)
+ '@babel/plugin-transform-nullish-coalescing-operator': 7.29.7(@babel/core@7.29.7)
+ '@babel/plugin-transform-optional-chaining': 7.29.7(@babel/core@7.29.7)
+ '@babel/plugin-transform-shorthand-properties': 7.29.7(@babel/core@7.29.7)
+ '@babel/plugin-transform-template-literals': 7.29.7(@babel/core@7.29.7)
+ '@babel/plugin-transform-unicode-regex': 7.29.7(@babel/core@7.29.7)
+ '@babel/preset-typescript': 7.29.7(@babel/core@7.29.7)
+ '@react-native/metro-config': 0.86.0(@babel/core@7.29.7)
+ convert-source-map: 2.0.0
+ react: 19.1.0
+ react-native: 0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0)
+ semver: 7.8.1
transitivePeerDependencies:
- supports-color
- react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0):
+ react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0):
dependencies:
'@jest/create-cache-key-function': 29.7.0
'@react-native/assets-registry': 0.81.5
'@react-native/codegen': 0.81.5(@babel/core@7.29.7)
- '@react-native/community-cli-plugin': 0.81.5
+ '@react-native/community-cli-plugin': 0.81.5(@react-native/metro-config@0.86.0(@babel/core@7.29.7))
'@react-native/gradle-plugin': 0.81.5
'@react-native/js-polyfills': 0.81.5
'@react-native/normalize-colors': 0.81.5
- '@react-native/virtualized-lists': 0.81.5(@types/react@19.1.17)(react-native@0.81.5(@babel/core@7.29.7)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@react-native/virtualized-lists': 0.81.5(@types/react@19.1.17)(react-native@0.81.5(@babel/core@7.29.7)(@react-native/metro-config@0.86.0(@babel/core@7.29.7))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
abort-controller: 3.0.0
anser: 1.4.10
ansi-regex: 5.0.1
@@ -15371,7 +15725,7 @@ snapshots:
ts-interface-checker@0.1.13: {}
- ts-node@10.9.2(@types/node@22.19.19)(typescript@5.8.3):
+ ts-node@10.9.2(@types/node@22.19.19)(typescript@5.9.3):
dependencies:
'@cspotcode/source-map-support': 0.8.1
'@tsconfig/node10': 1.0.12
@@ -15385,7 +15739,7 @@ snapshots:
create-require: 1.1.1
diff: 8.0.4
make-error: 1.3.6
- typescript: 5.8.3
+ typescript: 5.9.3
v8-compile-cache-lib: 3.0.1
yn: 3.1.1
@@ -15423,6 +15777,8 @@ snapshots:
typescript@5.8.3: {}
+ typescript@5.9.3: {}
+
typescript@6.0.3: {}
uhyphen@0.2.0: {}
diff --git a/unistyles.ts b/unistyles.ts
new file mode 100644
index 0000000..37aa7a0
--- /dev/null
+++ b/unistyles.ts
@@ -0,0 +1,210 @@
+import { StyleSheet } from 'react-native-unistyles';
+
+// ─── Palette ──────────────────────────────────────────────────────────────────
+
+export const palette = {
+ blue: {
+ 100: '#e3f2fd',
+ 300: '#81c0ff',
+ 400: '#4da3f7',
+ 500: '#1a73e8',
+ 700: '#1557b0',
+ 900: '#1c2f4d',
+ },
+ neutral: {
+ 0: '#ffffff',
+ 50: '#f8f9fa',
+ 100: '#f1f3f4',
+ 200: '#e8eaed',
+ 300: '#dadce0',
+ 400: '#9aa0a6',
+ 500: '#5f6368',
+ 700: '#3c4043',
+ 800: '#2d2d2d',
+ 850: '#242424',
+ 900: '#202124',
+ 925: '#1e1e1e',
+ 950: '#111111',
+ },
+ green: {
+ 400: '#5dba71',
+ 500: '#34a853',
+ },
+ red: {
+ 400: '#f28b82',
+ 500: '#ea4335',
+ },
+ yellow: {
+ 100: '#fff8e1',
+ 400: '#fdd663',
+ 500: '#fbbc05',
+ },
+ black: '#000000',
+} as const;
+
+// ─── Shared Tokens ────────────────────────────────────────────────────────────
+
+const spacing = {
+ gap: (v: number) => v * 8,
+ xs: 4,
+ sm: 8,
+ md: 12,
+ base: 16,
+ lg: 20,
+ xl: 24,
+};
+
+const borderRadius = {
+ xs: 4,
+ sm: 8,
+ md: 12,
+ lg: 16,
+ xl: 20,
+ full: 9999,
+} as const;
+
+const typography = {
+ fonts: {
+ regular: 'PlusJakartaSans-Regular',
+ medium: 'PlusJakartaSans-Regular_Medium',
+ semiBold: 'PlusJakartaSans-Regular_SemiBold',
+ bold: 'PlusJakartaSans-Regular_Bold',
+ },
+ sizes: {
+ xs: 9,
+ sm: 11,
+ md: 13,
+ base: 14,
+ lg: 17,
+ xl: 18,
+ },
+ lineHeights: {
+ tight: 1.2,
+ normal: 1.4,
+ relaxed: 1.6,
+ },
+ weights: {
+ regular: '400' as const,
+ medium: '500' as const,
+ semiBold: '600' as const,
+ bold: '700' as const,
+ },
+} as const;
+
+const shadows = {
+ sm: {
+ shadowColor: palette.black,
+ shadowOffset: { width: 0, height: 1 },
+ shadowOpacity: 0.08,
+ shadowRadius: 2,
+ elevation: 1,
+ },
+ md: {
+ shadowColor: palette.black,
+ shadowOffset: { width: 0, height: 2 },
+ shadowOpacity: 0.15,
+ shadowRadius: 6,
+ elevation: 3,
+ },
+ lg: {
+ shadowColor: palette.black,
+ shadowOffset: { width: 0, height: 4 },
+ shadowOpacity: 0.2,
+ shadowRadius: 12,
+ elevation: 6,
+ },
+ primary: {
+ shadowColor: palette.blue[500],
+ shadowOffset: { width: 0, height: 2 },
+ shadowOpacity: 0.3,
+ shadowRadius: 6,
+ elevation: 3,
+ },
+} as const;
+
+// ─── Themes ───────────────────────────────────────────────────────────────────
+
+const createColors = (mode: 'light' | 'dark') => {
+ const isLight = mode === 'light';
+ return {
+ brand: {
+ primary: isLight ? palette.blue[500] : palette.blue[400],
+ hover: isLight ? palette.blue[700] : palette.blue[300],
+ soft: isLight ? palette.blue[100] : palette.blue[900],
+ },
+ fg: {
+ default: isLight ? palette.neutral[900] : palette.neutral[200],
+ muted: isLight ? palette.neutral[500] : palette.neutral[400],
+ inverse: isLight ? palette.neutral[0] : palette.neutral[800],
+ onLight: palette.neutral[950],
+ primary: isLight ? palette.blue[500] : palette.blue[400],
+ success: isLight ? palette.green[500] : palette.green[400],
+ danger: isLight ? palette.red[500] : palette.red[400],
+ warning: isLight ? palette.yellow[500] : palette.yellow[400],
+ },
+ bg: {
+ app: isLight ? palette.neutral[100] : palette.neutral[925],
+ surface: isLight ? palette.neutral[0] : palette.neutral[800],
+ white: palette.neutral[0],
+ chat: isLight ? palette.neutral[50] : palette.neutral[850],
+ dark: palette.neutral[950],
+ darkAlt: isLight ? palette.neutral[900] : palette.neutral[200],
+ header: palette.neutral[950],
+ bubbleUser: isLight ? palette.blue[100] : palette.blue[900],
+ bubbleBot: isLight ? palette.neutral[0] : palette.neutral[800],
+ },
+ border: {
+ default: isLight ? palette.neutral[300] : palette.neutral[700],
+ },
+ state: {
+ success: isLight ? palette.green[500] : palette.green[400],
+ danger: isLight ? palette.red[500] : palette.red[400],
+ warning: isLight ? palette.yellow[500] : palette.yellow[400],
+ },
+ };
+};
+
+const createTheme = (mode: 'light' | 'dark') => ({
+ palette,
+ colors: createColors(mode),
+ spacing,
+ borderRadius,
+ typography,
+ shadows,
+});
+
+const lightTheme = createTheme('light');
+const darkTheme = createTheme('dark');
+
+const appThemes = {
+ light: lightTheme,
+ dark: darkTheme,
+};
+
+// ─── Breakpoints ──────────────────────────────────────────────────────────────
+
+const breakpoints = {
+ xs: 0,
+ sm: 300,
+ md: 500,
+ lg: 800,
+ xl: 1200,
+};
+
+// ─── Module Augmentation ──────────────────────────────────────────────────────
+
+type AppBreakpoints = typeof breakpoints;
+type AppThemes = typeof appThemes;
+
+declare module 'react-native-unistyles' {
+ export interface UnistylesThemes extends AppThemes {}
+ export interface UnistylesBreakpoints extends AppBreakpoints {}
+}
+
+StyleSheet.configure({
+ settings: {
+ initialTheme: 'light',
+ },
+ breakpoints,
+ themes: appThemes,
+});