diff --git a/apps/cafe/app.config.ts b/apps/cafe/app.config.ts index 8c508f6c..56bd29ab 100644 --- a/apps/cafe/app.config.ts +++ b/apps/cafe/app.config.ts @@ -1,3 +1,4 @@ +import "dotenv/config"; import type { ConfigContext, ExpoConfig } from "expo/config"; export default ({ config }: ConfigContext): ExpoConfig => ({ @@ -34,4 +35,10 @@ export default ({ config }: ConfigContext): ExpoConfig => ({ typedRoutes: true, baseUrl: "/app-factory/cafe", }, + extra: { + NAVER_CLIENT_ID: process.env.NAVER_CLIENT_ID, + NAVER_CLIENT_SECRET: process.env.NAVER_CLIENT_SECRET, + SUPABASE_URL: process.env.EXPO_PUBLIC_SUPABASE_URL, + SUPABASE_ANON_KEY: process.env.EXPO_PUBLIC_SUPABASE_ANON_KEY, + }, }); diff --git a/apps/cafe/package.json b/apps/cafe/package.json index cae3dda3..3ddc2500 100644 --- a/apps/cafe/package.json +++ b/apps/cafe/package.json @@ -18,9 +18,12 @@ }, "dependencies": { "@expo/vector-icons": "^14.0.4", + "@react-native-async-storage/async-storage": "^2.1.0", "@react-navigation/native": "^7.1.14", + "@supabase/supabase-js": "^2.45.4", "clsx": "^2.1.1", "expo": "~52.0.47", + "expo-auth-session": "~6.0.2", "expo-constants": "~17.0.8", "expo-font": "~13.0.4", "expo-linking": "~7.0.5", @@ -40,6 +43,7 @@ "react-native-reanimated": "~3.16.7", "react-native-safe-area-context": "4.12.0", "react-native-screens": "4.4.0", + "react-native-url-polyfill": "^2.0.0", "react-native-web": "~0.19.13", "tailwindcss": "catalog:" }, diff --git a/apps/cafe/src/app/(tabs)/mypage.tsx b/apps/cafe/src/app/(tabs)/mypage.tsx index fbdba55b..f0decfc7 100644 --- a/apps/cafe/src/app/(tabs)/mypage.tsx +++ b/apps/cafe/src/app/(tabs)/mypage.tsx @@ -10,11 +10,20 @@ import { User, } from "lucide-react-native"; import { useState } from "react"; -import { Image, Modal, Pressable, ScrollView, View } from "react-native"; - +import { + Image, + type ImageSourcePropType, + Modal, + Pressable, + ScrollView, + TextInput, + TouchableOpacity, + View, +} from "react-native"; import { ThemedText } from "@/components/ThemedText"; import { ThemedView } from "@/components/ThemedView"; -import { TouchableOpacity } from "react-native"; +import { useAuth } from "@/features/auth/auth-context"; +import { useSupabaseAuth } from "@/features/auth/supabase/auth-context"; interface MenuItem { icon: LucideIcon; @@ -27,8 +36,7 @@ interface RecentOrder { name: string; price: string; date: string; - // biome-ignore lint/suspicious/noExplicitAny: - image: any; + image: ImageSourcePropType; } const recentOrders: RecentOrder[] = [ @@ -61,16 +69,49 @@ const MenuItem = ({ icon: Icon, label, onPress }: MenuItem) => ( onPress={onPress} > - + {label} - + ); export default function MyPage() { - // biome-ignore lint/correctness/noUnusedVariables: const [isBottomSheetVisible, setIsBottomSheetVisible] = useState(false); + // Naver auth + const { + isSignedIn: isNaverSignedIn, + user: naverUser, + isLoading: isNaverLoading, + signInWithNaver, + signOut: signOutNaver, + } = useAuth(); + // Supabase auth + const { + isSignedIn: isSupabaseSignedIn, + user: supabaseUser, + isLoading: isSupabaseLoading, + signIn, + signUp, + signOut: signOutSupabase, + } = useSupabaseAuth(); + + // Combined auth view state + const isSignedIn = isNaverSignedIn || isSupabaseSignedIn; + const isLoading = isNaverLoading || isSupabaseLoading; + const user = naverUser + ? naverUser + : supabaseUser && { + id: supabaseUser.id, + email: supabaseUser.email ?? undefined, + }; + + const [email, setEmail] = useState(""); + const [password, setPassword] = useState(""); + + const signOut = async () => { + await Promise.allSettled([signOutSupabase(), signOutNaver()]); + }; const menuItems: MenuItem[] = [ { icon: ShoppingBag, label: "주문 내역" }, @@ -89,17 +130,125 @@ export default function MyPage() { - - - 사용자님 - - user@example.com - - + {isSignedIn ? ( + <> + {user?.profile_image ? ( + + ) : ( + + )} + + + {user?.nickname || user?.name || "네이버 사용자"} + + {!!user?.email && ( + + {user.email} + + )} + + + ) : ( + <> + + + 로그인이 필요합니다 + + 네이버 또는 이메일로 로그인해 주세요. + + + {/* Supabase Email/Password Auth */} + + + + + signIn(email.trim(), password)} + style={{ + flex: 1, + backgroundColor: "white", + paddingVertical: 10, + borderRadius: 8, + alignItems: "center", + }} + > + + 이메일로 로그인 + + + signUp(email.trim(), password)} + style={{ + flex: 1, + backgroundColor: "white", + paddingVertical: 10, + borderRadius: 8, + alignItems: "center", + }} + > + + 회원가입 + + + + + + + {/* Naver OAuth */} + + + {isLoading ? "로그인 중..." : "네이버로 로그인"} + + + + )} - + 나의 설정 {menuItems.map((item, index) => ( @@ -108,18 +257,18 @@ export default function MyPage() { - + 최근 주문 {recentOrders.map((order) => ( {order.name} @@ -138,10 +287,10 @@ export default function MyPage() { setIsBottomSheetVisible(false)} + transparent={true} + visible={isBottomSheetVisible} > - + 설정 @@ -192,20 +341,20 @@ export default function MyPage() { 개인정보 처리방침 - + 로그아웃 setIsBottomSheetVisible(false)} style={{ backgroundColor: "#e5e7eb", alignItems: "center", paddingVertical: 12, borderRadius: 8, }} - onPress={() => setIsBottomSheetVisible(false)} > 닫기 diff --git a/apps/cafe/src/app/_layout.tsx b/apps/cafe/src/app/_layout.tsx index 231abe65..f1607d17 100644 --- a/apps/cafe/src/app/_layout.tsx +++ b/apps/cafe/src/app/_layout.tsx @@ -1,4 +1,5 @@ import "../global.css"; + import { DarkTheme, DefaultTheme, @@ -13,6 +14,9 @@ import "react-native-reanimated"; import "@/i18n"; +import { AuthProvider } from "@/features/auth/auth-context"; +import { SupabaseAuthProvider } from "@/features/auth/supabase/auth-context"; + // Prevent the splash screen from auto-hiding before asset loading is complete. SplashScreen.preventAutoHideAsync(); @@ -35,12 +39,19 @@ export default function RootLayout() { } return ( - - - - - - - + + + + + + + + + + + + ); } diff --git a/apps/cafe/src/app/auth.tsx b/apps/cafe/src/app/auth.tsx new file mode 100644 index 00000000..d4223293 --- /dev/null +++ b/apps/cafe/src/app/auth.tsx @@ -0,0 +1,44 @@ +import { useLocalSearchParams, useRouter } from "expo-router"; +import { useEffect, useState } from "react"; +import { ActivityIndicator, View } from "react-native"; +import { ThemedText } from "@/components/ThemedText"; +import { ThemedView } from "@/components/ThemedView"; +import { supabase } from "@/supabase/supabase"; + +export default function AuthCallback() { + const params = useLocalSearchParams(); + const router = useRouter(); + const [message, setMessage] = useState("처리 중..."); + + useEffect(() => { + // Handle OAuth / Magic Link code exchange if present + const code = (params.code as string) || undefined; + if (!code) { + setMessage("코드가 없습니다. 이 탭을 닫아주세요."); + return; + } + (async () => { + try { + const { data, error } = + await supabase.auth.exchangeCodeForSession(code); + if (error) throw error; + if (data.session) { + setMessage("로그인 완료! 잠시 후 이전 화면으로 이동합니다."); + setTimeout(() => router.replace("/(tabs)/mypage"), 500); + } else { + setMessage("세션이 생성되지 않았습니다. 다시 시도해 주세요."); + } + } catch (_e) { + setMessage("로그인 처리 중 오류가 발생했습니다."); + } + })(); + }, [params, router]); + + return ( + + + + {message} + + ); +} diff --git a/apps/cafe/src/assets/images/adaptive-icon.png b/apps/cafe/src/assets/images/adaptive-icon.png index 03d6f6b6..e69de29b 100644 Binary files a/apps/cafe/src/assets/images/adaptive-icon.png and b/apps/cafe/src/assets/images/adaptive-icon.png differ diff --git a/apps/cafe/src/features/auth/auth-context.tsx b/apps/cafe/src/features/auth/auth-context.tsx new file mode 100644 index 00000000..c06fd136 --- /dev/null +++ b/apps/cafe/src/features/auth/auth-context.tsx @@ -0,0 +1,103 @@ +import type React from "react"; + +import * as WebBrowser from "expo-web-browser"; +import { + createContext, + useCallback, + useContext, + useMemo, + useState, +} from "react"; +import { + type NaverAuthResult, + revokeNaverToken, + signInWithNaver, +} from "./naver"; + +export interface AuthUserProfile { + id: string; + nickname?: string; + name?: string; + email?: string; + profile_image?: string; +} + +export interface AuthState { + isLoading: boolean; + isSignedIn: boolean; + user?: AuthUserProfile; + accessToken?: string; +} + +interface AuthContextValue extends AuthState { + signInWithNaver: () => Promise; + signOut: () => Promise; +} + +const AuthContext = createContext(undefined); + +export function AuthProvider({ children }: { children: React.ReactNode }) { + const [state, setState] = useState({ + isLoading: false, + isSignedIn: false, + }); + + // Required for Android to properly handle auth session results when app is foregrounded + WebBrowser.maybeCompleteAuthSession(); + + const handleSignInWithNaver = useCallback(async () => { + setState((s) => ({ ...s, isLoading: true })); + try { + const result: NaverAuthResult | null = await signInWithNaver(); + if (result?.tokens?.access_token) { + setState({ + isLoading: false, + isSignedIn: true, + accessToken: result.tokens.access_token, + user: result.profile + ? { + id: result.profile.id, + nickname: result.profile.nickname, + name: result.profile.name, + email: result.profile.email, + profile_image: result.profile.profile_image, + } + : undefined, + }); + } else { + setState((s) => ({ ...s, isLoading: false })); + } + } catch (_e) { + setState((s) => ({ ...s, isLoading: false })); + } + }, []); + + const handleSignOut = useCallback(async () => { + const token = state.accessToken; + setState({ isLoading: false, isSignedIn: false }); + if (token) { + try { + await revokeNaverToken(token); + } catch (_e) { + // Best-effort revoke; ignore errors to avoid blocking sign-out UX + } + } + }, [state.accessToken]); + + const value = useMemo( + () => ({ + ...state, + signInWithNaver: handleSignInWithNaver, + signOut: handleSignOut, + }), + [state, handleSignInWithNaver, handleSignOut], + ); + + return {children}; +} + +export function useAuth() { + const ctx = useContext(AuthContext); + if (!ctx) throw new Error("useAuth must be used within AuthProvider"); + return ctx; +} diff --git a/apps/cafe/src/features/auth/naver.ts b/apps/cafe/src/features/auth/naver.ts new file mode 100644 index 00000000..00846fc3 --- /dev/null +++ b/apps/cafe/src/features/auth/naver.ts @@ -0,0 +1,141 @@ +import { AuthRequest, makeRedirectUri, ResponseType } from "expo-auth-session"; +import Constants from "expo-constants"; + +export interface NaverTokenResponse { + access_token: string; + refresh_token?: string; + token_type: string; // "bearer" + expires_in: number | string; +} + +export interface NaverProfileResponse { + resultcode: string; // "00" on success + message: string; + response?: { + id: string; + nickname?: string; + name?: string; + email?: string; + profile_image?: string; + age?: string; + gender?: string; // M | F + birthday?: string; + mobile?: string; + }; +} + +const NAVER_AUTHORIZE_ENDPOINT = "https://nid.naver.com/oauth2.0/authorize"; +const NAVER_TOKEN_ENDPOINT = "https://nid.naver.com/oauth2.0/token"; +const NAVER_PROFILE_ENDPOINT = "https://openapi.naver.com/v1/nid/me"; + +function getEnv() { + const extra = (Constants.expoConfig?.extra || {}) as Record; + return { + clientId: String( + extra.NAVER_CLIENT_ID ?? process.env.NAVER_CLIENT_ID ?? "", + ), + clientSecret: String( + extra.NAVER_CLIENT_SECRET ?? process.env.NAVER_CLIENT_SECRET ?? "", + ), + }; +} + +export type NaverAuthResult = { + tokens: NaverTokenResponse; + profile?: NaverProfileResponse["response"]; +}; + +export async function signInWithNaver(): Promise { + const { clientId, clientSecret } = getEnv(); + if (!(clientId && clientSecret)) { + console.error( + "NAVER_CLIENT_ID or NAVER_CLIENT_SECRET is not configured in app.config.ts -> extra", + ); + } + + // Build redirect URI (native: cafe://, web: current origin) + const redirectUri = makeRedirectUri({ + scheme: Constants.expoConfig?.scheme as string, + // On web with GitHub Pages we preserve path; AuthSession will infer correctly + // If you want a custom path, add `path: "auth"` and register the same at Naver console + }); + + const state = Math.random().toString(36).slice(2); + + // Prepare an OAuth request using the modern API + const request = new AuthRequest({ + clientId, + redirectUri, + responseType: ResponseType.Code, + state, + }); + + const discovery = { authorizationEndpoint: NAVER_AUTHORIZE_ENDPOINT }; + + // Ensure URL is constructed (mainly for web correctness) + await request.makeAuthUrlAsync(discovery); + + // Launch the browser and wait for the redirect back into the app + const result = await request.promptAsync(discovery); + if (result.type !== "success") return null; + + const { code, state: returnedState } = (result.params || {}) as Record< + string, + string + >; + if (!code) return null; + if (returnedState && returnedState !== state) { + console.error("State mismatch in Naver login"); + } + + // Exchange code for token + const tokenRes = await fetch(NAVER_TOKEN_ENDPOINT, { + method: "POST", + headers: { + "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8", + }, + body: new URLSearchParams({ + grant_type: "authorization_code", + client_id: clientId, + client_secret: clientSecret, + code, + state, + redirect_uri: redirectUri, + }).toString(), + }); + + if (!tokenRes.ok) { + const text = await tokenRes.text(); + throw new Error(`Failed to get Naver token: ${tokenRes.status} ${text}`); + } + + const tokens = (await tokenRes.json()) as NaverTokenResponse; + + // Fetch profile (requires Authorization header) + let profile: NaverAuthResult["profile"] | undefined; + try { + const profileRes = await fetch(NAVER_PROFILE_ENDPOINT, { + headers: { Authorization: `Bearer ${tokens.access_token}` }, + }); + const profileJson = (await profileRes.json()) as NaverProfileResponse; + if (profileJson.resultcode === "00" && profileJson.response) { + profile = profileJson.response; + } + } catch (e) { + console.error("Failed to fetch Naver profile", e); + } + + return { tokens, profile }; +} + +export function revokeNaverToken(accessToken: string) { + // Naver supports token deletion via: https://nid.naver.com/oauth2.0/token?grant_type=delete&client_id=...&client_secret=...&access_token=...&service_provider=NAVER + const { clientId, clientSecret } = getEnv(); + const url = new URL(NAVER_TOKEN_ENDPOINT); + url.searchParams.set("grant_type", "delete"); + url.searchParams.set("client_id", clientId); + url.searchParams.set("client_secret", clientSecret); + url.searchParams.set("access_token", accessToken); + url.searchParams.set("service_provider", "NAVER"); + return fetch(url.toString(), { method: "GET" }); +} diff --git a/apps/cafe/src/features/auth/supabase/auth-context.tsx b/apps/cafe/src/features/auth/supabase/auth-context.tsx new file mode 100644 index 00000000..b9460a4e --- /dev/null +++ b/apps/cafe/src/features/auth/supabase/auth-context.tsx @@ -0,0 +1,132 @@ +import type React from "react"; + +import { + createContext, + useCallback, + useContext, + useEffect, + useMemo, + useState, +} from "react"; +import { supabase } from "@/supabase/supabase"; + +export interface SupabaseUserInfo { + id: string; + email?: string | null; +} + +export interface SupabaseAuthState { + isLoading: boolean; + isSignedIn: boolean; + user?: SupabaseUserInfo; +} + +interface SupabaseAuthContextValue extends SupabaseAuthState { + signIn: (email: string, password: string) => Promise; + signUp: (email: string, password: string) => Promise; + signOut: () => Promise; +} + +const SupabaseAuthContext = createContext( + undefined, +); + +export function SupabaseAuthProvider({ + children, +}: { + children: React.ReactNode; +}) { + const [state, setState] = useState({ + isLoading: true, + isSignedIn: false, + }); + + useEffect(() => { + // Restore session on mount + supabase.auth.getSession().then(({ data }) => { + const session = data.session; + setState({ + isLoading: false, + isSignedIn: !!session, + user: session?.user + ? { id: session.user.id, email: session.user.email } + : undefined, + }); + }); + + // Listen for auth changes + const { data: sub } = supabase.auth.onAuthStateChange((_event, session) => { + setState({ + isLoading: false, + isSignedIn: !!session, + user: session?.user + ? { id: session.user.id, email: session.user.email } + : undefined, + }); + }); + + return () => { + sub.subscription.unsubscribe(); + }; + }, []); + + const signIn = useCallback(async (email: string, password: string) => { + setState((s) => ({ ...s, isLoading: true })); + const { error, data } = await supabase.auth.signInWithPassword({ + email, + password, + }); + if (error) { + console.error("[Supabase] signIn error", error.message); + } + setState({ + isLoading: false, + isSignedIn: !!data.session, + user: data.session?.user + ? { id: data.session.user.id, email: data.session.user.email } + : undefined, + }); + }, []); + + const signUp = useCallback(async (email: string, password: string) => { + setState((s) => ({ ...s, isLoading: true })); + const { error, data } = await supabase.auth.signUp({ email, password }); + if (error) { + console.error("[Supabase] signUp error", error.message); + } + setState((s) => ({ ...s, isLoading: false })); + if (data.user && !data.session) { + // Email confirmations enabled case + console.error( + "[Supabase] Sign up successful. Please check your email to confirm.", + ); + } + }, []); + + const signOut = useCallback(async () => { + setState((s) => ({ ...s, isLoading: true })); + const { error } = await supabase.auth.signOut(); + if (error) { + console.error("[Supabase] signOut error", error.message); + } + setState({ isLoading: false, isSignedIn: false }); + }, []); + + const value = useMemo( + () => ({ ...state, signIn, signUp, signOut }), + [state, signIn, signUp, signOut], + ); + + return ( + + {children} + + ); +} + +export function useSupabaseAuth() { + const ctx = useContext(SupabaseAuthContext); + if (!ctx) + throw new Error("useSupabaseAuth must be used within SupabaseAuthProvider"); + return ctx; +} diff --git a/apps/cafe/src/supabase/supabase.ts b/apps/cafe/src/supabase/supabase.ts new file mode 100644 index 00000000..bd01dc8d --- /dev/null +++ b/apps/cafe/src/supabase/supabase.ts @@ -0,0 +1,77 @@ +import "react-native-url-polyfill/auto"; + +import { createClient } from "@supabase/supabase-js"; +import Constants from "expo-constants"; +import { Platform } from "react-native"; + +// Prefer Expo extra (native + dev/prod builds), but fall back to process.env on web +const extra = (Constants.expoConfig?.extra || {}) as Record; +const supabaseUrl = String( + (extra.SUPABASE_URL as string | undefined) ?? + process.env.EXPO_PUBLIC_SUPABASE_URL ?? + "", +); +const supabaseAnonKey = String( + (extra.SUPABASE_ANON_KEY as string | undefined) ?? + process.env.EXPO_PUBLIC_SUPABASE_ANON_KEY ?? + "", +); + +if (!(supabaseUrl && supabaseAnonKey)) { + // Avoid passing empty strings to createClient (causes runtime error) + throw new Error( + "[Supabase] Missing env. Configure EXPO_PUBLIC_SUPABASE_URL and EXPO_PUBLIC_SUPABASE_ANON_KEY in .env and ensure apps/cafe/app.config.ts injects them into extra. Restart Expo (expo start -c).", + ); +} + +// SSR-safe in-memory storage (used when window is unavailable on web SSR) +const memoryStorage = (() => { + const store = new Map(); + return { + getItem: (key: string) => store.get(key) ?? null, + setItem: (key: string, value: string) => { + store.set(key, value); + }, + removeItem: (key: string) => { + store.delete(key); + }, + } as Storage; +})(); + +// Resolve a storage implementation per platform/runtime without breaking SSR +// Define a union type that matches web Storage (sync) and React Native AsyncStorage (async) +type AsyncStorageLike = { + getItem: (key: string) => Promise; + setItem: (key: string, value: string) => Promise; + removeItem: (key: string) => Promise; +}; + +type StorageLike = Storage | AsyncStorageLike; + +let storage: StorageLike; +if (Platform.OS === "web") { + // Browser web vs. SSR + if ( + typeof window !== "undefined" && + typeof window.localStorage !== "undefined" + ) { + storage = window.localStorage; + } else { + storage = memoryStorage; + } +} else { + // Native platforms: require AsyncStorage lazily so it isn't loaded on web/SSR + const AsyncStorage = require("@react-native-async-storage/async-storage") + .default as AsyncStorageLike; + storage = AsyncStorage; +} + +export const supabase = createClient(supabaseUrl, supabaseAnonKey, { + auth: { + storage, + autoRefreshToken: true, + persistSession: true, + // On web, allow Supabase to parse code from URL. We still keep /auth route for explicit flows. + detectSessionInUrl: Platform.OS === "web", + }, +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d83e6586..3f70ac32 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -113,6 +113,9 @@ importers: expo: specifier: ~52.0.47 version: 52.0.47(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1)))(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) + expo-auth-session: + specifier: ~6.0.2 + version: 6.0.3(expo@52.0.47(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1)))(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) expo-constants: specifier: ~17.0.8 version: 17.0.8(expo@52.0.47(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1)))(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1)) @@ -986,7 +989,7 @@ importers: version: 4.5.1 nativewind: specifier: 'catalog:' - version: 4.1.23(react-native-reanimated@3.16.7(@babel/core@7.28.0)(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.12.0(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.18(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.3.3))) + version: 4.1.23(react-native-reanimated@3.16.7(@babel/core@7.28.0)(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.12.0(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native-svg@15.12.0(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.18(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.3.3))) react: specifier: ^18.3.1 version: 18.3.1 @@ -1188,250 +1191,6 @@ importers: specifier: 'catalog:' version: 5.8.3 - apps/reaction-speed-test: - dependencies: - '@expo/html-elements': - specifier: 0.10.1 - version: 0.10.1 - '@expo/vector-icons': - specifier: ^14.0.4 - version: 14.1.0(expo-font@13.0.4(expo@52.0.47(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1)))(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) - '@gluestack-ui/actionsheet': - specifier: ^0.2.45 - version: 0.2.53(react-dom@18.3.1(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) - '@gluestack-ui/button': - specifier: ^1.0.7 - version: 1.0.14(react-dom@18.3.1(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) - '@gluestack-ui/checkbox': - specifier: ^0.1.39 - version: 0.1.39(react-dom@18.3.1(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) - '@gluestack-ui/form-control': - specifier: ^0.1.19 - version: 0.1.19(react-dom@18.3.1(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) - '@gluestack-ui/icon': - specifier: ^0.1.25 - version: 0.1.27(react-dom@18.3.1(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) - '@gluestack-ui/input': - specifier: ^0.1.32 - version: 0.1.38(react-dom@18.3.1(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) - '@gluestack-ui/nativewind-utils': - specifier: 1.0.23 - version: 1.0.23(nativewind@4.1.23(react-native-reanimated@3.16.7(@babel/core@7.28.0)(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.12.0(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native-svg@15.12.0(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.3.3))))(react@18.3.1)(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.3.3))) - '@gluestack-ui/overlay': - specifier: ^0.1.15 - version: 0.1.22(react-dom@18.3.1(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) - '@gluestack-ui/select': - specifier: ^0.1.29 - version: 0.1.31(react-dom@18.3.1(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) - '@gluestack-ui/toast': - specifier: ^1.0.7 - version: 1.0.9(react-dom@18.3.1(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) - '@infinite-loop-factory/common': - specifier: workspace:^ - version: link:../../packages/common - '@legendapp/motion': - specifier: ^2.4.0 - version: 2.4.0(nativewind@4.1.23(react-native-reanimated@3.16.7(@babel/core@7.28.0)(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.12.0(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native-svg@15.12.0(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.3.3))))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) - '@react-native-async-storage/async-storage': - specifier: 1.23.1 - version: 1.23.1(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1)) - '@react-navigation/native': - specifier: ^7.1.14 - version: 7.1.14(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) - '@reactuses/core': - specifier: ^5.0.23 - version: 5.0.23(react@18.3.1) - '@supabase/supabase-js': - specifier: ^2.47.10 - version: 2.52.0 - '@t3-oss/env-core': - specifier: ^0.13.8 - version: 0.13.8(typescript@5.3.3)(zod@4.1.12) - assert: - specifier: ^2.1.0 - version: 2.1.0 - babel-plugin-module-resolver: - specifier: ^5.0.2 - version: 5.0.2 - browserify-zlib: - specifier: ^0.2.0 - version: 0.2.0 - buffer: - specifier: ^6.0.3 - version: 6.0.3 - clsx: - specifier: ^2.1.1 - version: 2.1.1 - crypto-browserify: - specifier: ^3.12.1 - version: 3.12.1 - expo: - specifier: ~52.0.47 - version: 52.0.47(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1)))(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) - expo-constants: - specifier: ~17.0.8 - version: 17.0.8(expo@52.0.47(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1)))(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1)) - expo-font: - specifier: ~13.0.4 - version: 13.0.4(expo@52.0.47(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1)))(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react@18.3.1) - expo-intent-launcher: - specifier: ~12.0.2 - version: 12.0.2(expo@52.0.47(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1)))(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)) - expo-linking: - specifier: ~7.0.5 - version: 7.0.5(expo@52.0.47(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1)))(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) - expo-localization: - specifier: ~16.0.1 - version: 16.0.1(expo@52.0.47(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1)))(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react@18.3.1) - expo-router: - specifier: ~4.0.21 - version: 4.0.21(a16f8d4aeebb78770c57b7c321d73c03) - expo-splash-screen: - specifier: ~0.29.24 - version: 0.29.24(expo@52.0.47(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1)))(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)) - expo-status-bar: - specifier: ~2.0.1 - version: 2.0.1(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) - expo-system-ui: - specifier: ~4.0.9 - version: 4.0.9(expo@52.0.47(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1)))(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native-web@0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1)) - expo-web-browser: - specifier: ~14.0.2 - version: 14.0.2(expo@52.0.47(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1)))(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1)) - https-browserify: - specifier: ^1.0.0 - version: 1.0.0 - i18n-js: - specifier: ^4.4.3 - version: 4.5.1 - lucide-react-native: - specifier: 'catalog:' - version: 0.525.0(react-native-svg@15.12.0(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) - luxon: - specifier: ^3.5.0 - version: 3.7.1 - nativewind: - specifier: 'catalog:' - version: 4.1.23(react-native-reanimated@3.16.7(@babel/core@7.28.0)(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.12.0(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native-svg@15.12.0(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.3.3))) - os-browserify: - specifier: ^0.3.0 - version: 0.3.0 - path-browserify: - specifier: ^1.0.1 - version: 1.0.1 - react: - specifier: 18.3.1 - version: 18.3.1 - react-dom: - specifier: 18.3.1 - version: 18.3.1(react@18.3.1) - react-native: - specifier: 0.76.9 - version: 0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1) - react-native-crypto: - specifier: ^2.2.0 - version: 2.2.1(react-native-randombytes@3.6.2) - react-native-css-interop: - specifier: 'catalog:' - version: 0.1.22(react-native-reanimated@3.16.7(@babel/core@7.28.0)(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.12.0(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native-svg@15.12.0(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.3.3))) - react-native-gesture-handler: - specifier: ~2.20.2 - version: 2.20.2(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) - react-native-reanimated: - specifier: ~3.16.7 - version: 3.16.7(@babel/core@7.28.0)(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) - react-native-safe-area-context: - specifier: 4.12.0 - version: 4.12.0(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) - react-native-screens: - specifier: 4.4.0 - version: 4.4.0(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) - react-native-svg: - specifier: 'catalog:' - version: 15.12.0(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) - react-native-tcp-socket: - specifier: ^6.2.0 - version: 6.3.0(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1)) - react-native-url-polyfill: - specifier: ^2.0.0 - version: 2.0.0(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1)) - react-native-web: - specifier: ~0.19.13 - version: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-native-websocket: - specifier: ^1.0.2 - version: 1.0.2 - readable-stream: - specifier: ^4.6.0 - version: 4.7.0 - stream-browserify: - specifier: ^3.0.0 - version: 3.0.0 - stream-http: - specifier: ^3.2.0 - version: 3.2.0 - tailwindcss: - specifier: ^3.4.14 - version: 3.4.17(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.3.3)) - url: - specifier: ^0.11.4 - version: 0.11.4 - util: - specifier: ^0.12.5 - version: 0.12.5 - zod: - specifier: ^4.1.12 - version: 4.1.12 - devDependencies: - '@babel/core': - specifier: ^7.20.0 - version: 7.28.0 - '@biomejs/biome': - specifier: 'catalog:' - version: 2.2.5 - '@infinite-loop-factory/config-typescript': - specifier: workspace:^ - version: link:../../packages/config-typescript - '@testing-library/react-native': - specifier: ^12.7.2 - version: 12.9.0(jest@29.7.0(@types/node@24.0.15)(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.3.3)))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react-test-renderer@18.3.1(react@18.3.1))(react@18.3.1) - '@types/jest': - specifier: ^29.5.13 - version: 29.5.14 - '@types/luxon': - specifier: ^3.4.2 - version: 3.6.2 - '@types/react': - specifier: ^18.3.3 - version: 18.3.23 - '@types/react-test-renderer': - specifier: ^18.3.0 - version: 18.3.1 - cross-env: - specifier: ^7.0.3 - version: 7.0.3 - dotenv: - specifier: ^16.4.7 - version: 16.6.1 - gh-pages: - specifier: ^6.2.0 - version: 6.3.0 - jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.0.15)(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.3.3)) - jest-expo: - specifier: ~52.0.6 - version: 52.0.6(@babel/core@7.28.0)(expo@52.0.47(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1)))(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(jest@29.7.0(@types/node@24.0.15)(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.3.3)))(react-dom@18.3.1(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)(webpack@5.100.2) - jscodeshift: - specifier: 0.15.2 - version: 0.15.2(@babel/preset-env@7.28.0(@babel/core@7.28.0)) - type-fest: - specifier: 'catalog:' - version: 5.0.1 - typescript: - specifier: ^5.3.3 - version: 5.3.3 - packages/common: dependencies: clsx: @@ -1469,7 +1228,7 @@ importers: dependencies: nativewind: specifier: 'catalog:' - version: 4.1.23(react-native-reanimated@3.16.7(@babel/core@7.28.0)(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.18(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.8.3))) + version: 4.1.23(react-native-reanimated@3.16.7(@babel/core@7.28.0)(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.12.0(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native-svg@15.12.0(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.18(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.8.3))) tailwind-variants: specifier: ^0.2.1 version: 0.2.1(tailwindcss@3.4.18(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.8.3))) @@ -6386,6 +6145,11 @@ packages: resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + expo-application@6.0.2: + resolution: {integrity: sha512-qcj6kGq3mc7x5yIb5KxESurFTJCoEKwNEL34RdPEvTB/xhl7SeVZlu05sZBqxB1V4Ryzq/LsCb7NHNfBbb3L7A==} + peerDependencies: + expo: '*' + expo-application@6.1.5: resolution: {integrity: sha512-ToImFmzw8luY043pWFJhh2ZMm4IwxXoHXxNoGdlhD4Ym6+CCmkAvCglg0FK8dMLzAb+/XabmOE7Rbm8KZb6NZg==} peerDependencies: @@ -6398,6 +6162,12 @@ packages: react: '*' react-native: '*' + expo-auth-session@6.0.3: + resolution: {integrity: sha512-s7LmmMPiiY1NXrlcXkc4+09Hlfw9X1CpaQOCDkwfQEodG1uCYGQi/WImTnDzw5YDkWI79uC8F1mB8EIerilkDA==} + peerDependencies: + react: '*' + react-native: '*' + expo-auth-session@6.2.1: resolution: {integrity: sha512-9KgqrGpW7PoNOhxJ7toofi/Dz5BU2TE4Q+ktJZsmDXLoFcNOcvBokh2+mkhG58Qvd/xJ9Z5sAt/5QoOFaPb9wA==} peerDependencies: @@ -6432,6 +6202,11 @@ packages: expo: '*' react-native: '*' + expo-crypto@14.0.2: + resolution: {integrity: sha512-WRc9PBpJraJN29VD5Ef7nCecxJmZNyRKcGkNiDQC1nhY5agppzwhqh7zEzNFarE/GqDgSiaDHS8yd5EgFhP9AQ==} + peerDependencies: + expo: '*' + expo-crypto@14.1.5: resolution: {integrity: sha512-ZXJoUMoUeiMNEoSD4itItFFz3cKrit6YJ/BR0hjuwNC+NczbV9rorvhvmeJmrU9O2cFQHhJQQR1fjQnt45Vu4Q==} peerDependencies: @@ -9772,11 +9547,6 @@ packages: peerDependencies: tailwindcss: '*' - tailwindcss@3.4.17: - resolution: {integrity: sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==} - engines: {node: '>=14.0.0'} - hasBin: true - tailwindcss@3.4.18: resolution: {integrity: sha512-6A2rnmW5xZMdw11LYjhcI5846rt9pbLSabY5XPxo+XWdxwZaFEn47Go4NzFiHu9sNNmr/kXivP1vStfvMaK1GQ==} engines: {node: '>=14.0.0'} @@ -12054,21 +11824,6 @@ snapshots: transitivePeerDependencies: - react-native - '@gluestack-ui/checkbox@0.1.39(react-dom@18.3.1(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)': - dependencies: - '@gluestack-ui/form-control': 0.1.19(react-dom@18.3.1(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) - '@gluestack-ui/utils': 0.1.15(react-dom@18.3.1(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) - '@react-aria/visually-hidden': 3.8.25(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@react-native-aria/checkbox': 0.2.10(react-dom@18.3.1(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) - '@react-native-aria/focus': 0.2.9(react-dom@18.3.1(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) - '@react-native-aria/interactions': 0.2.16(react-dom@18.3.1(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) - '@react-native-aria/utils': 0.2.12(react-dom@18.3.1(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) - '@react-stately/checkbox': 3.6.15(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - transitivePeerDependencies: - - react-native - '@gluestack-ui/core@3.0.2(react-dom@18.3.1(react@18.3.1))(react-native-web@0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.18(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.3.3)))': dependencies: '@gluestack-ui/utils': 3.0.3(react-dom@18.3.1(react@18.3.1))(react-native-web@0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.18(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.3.3))) @@ -12183,16 +11938,6 @@ snapshots: transitivePeerDependencies: - react-native - '@gluestack-ui/nativewind-utils@1.0.23(nativewind@4.1.23(react-native-reanimated@3.16.7(@babel/core@7.28.0)(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.12.0(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native-svg@15.12.0(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.3.3))))(react@18.3.1)(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.3.3)))': - dependencies: - find-yarn-workspace-root: 2.0.0 - nativewind: 4.1.23(react-native-reanimated@3.16.7(@babel/core@7.28.0)(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.12.0(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native-svg@15.12.0(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.3.3))) - patch-package: 8.0.0 - react: 18.3.1 - tailwind-variants: 0.1.20(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.3.3))) - transitivePeerDependencies: - - tailwindcss - '@gluestack-ui/nativewind-utils@1.0.26(nativewind@4.1.23(react-native-reanimated@3.16.7(@babel/core@7.28.0)(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.12.0(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native-svg@15.12.0(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.18(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.3.3))))(react@18.3.1)(tailwindcss@3.4.18(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.3.3)))': dependencies: find-yarn-workspace-root: 2.0.0 @@ -12769,13 +12514,6 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.4 - '@legendapp/motion@2.4.0(nativewind@4.1.23(react-native-reanimated@3.16.7(@babel/core@7.28.0)(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.12.0(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native-svg@15.12.0(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.3.3))))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)': - dependencies: - '@legendapp/tools': 2.0.1(react@18.3.1) - nativewind: 4.1.23(react-native-reanimated@3.16.7(@babel/core@7.28.0)(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.12.0(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native-svg@15.12.0(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.3.3))) - react: 18.3.1 - react-native: 0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1) - '@legendapp/motion@2.4.0(nativewind@4.1.23(react-native-reanimated@3.16.7(@babel/core@7.28.0)(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.12.0(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native-svg@15.12.0(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.18(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.3.3))))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)': dependencies: '@legendapp/tools': 2.0.1(react@18.3.1) @@ -17093,6 +16831,10 @@ snapshots: jest-message-util: 29.7.0 jest-util: 29.7.0 + expo-application@6.0.2(expo@52.0.47(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1)))(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)): + dependencies: + expo: 52.0.47(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1)))(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) + expo-application@6.1.5(expo@52.0.47(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1)))(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)): dependencies: expo: 52.0.47(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1)))(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) @@ -17109,6 +16851,20 @@ snapshots: transitivePeerDependencies: - supports-color + expo-auth-session@6.0.3(expo@52.0.47(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1)))(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1): + dependencies: + expo-application: 6.0.2(expo@52.0.47(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1)))(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)) + expo-constants: 17.0.8(expo@52.0.47(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1)))(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1)) + expo-crypto: 14.0.2(expo@52.0.47(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1)))(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)) + expo-linking: 7.0.5(expo@52.0.47(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1)))(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) + expo-web-browser: 14.0.2(expo@52.0.47(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1)))(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1)) + invariant: 2.2.4 + react: 18.3.1 + react-native: 0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1) + transitivePeerDependencies: + - expo + - supports-color + expo-auth-session@6.2.1(expo@52.0.47(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1)))(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1): dependencies: expo-application: 6.1.5(expo@52.0.47(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1)))(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)) @@ -17155,6 +16911,11 @@ snapshots: transitivePeerDependencies: - supports-color + expo-crypto@14.0.2(expo@52.0.47(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1)))(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)): + dependencies: + base64-js: 1.5.1 + expo: 52.0.47(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1)))(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) + expo-crypto@14.1.5(expo@52.0.47(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1)))(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)): dependencies: base64-js: 1.5.1 @@ -19492,20 +19253,6 @@ snapshots: nanoid@3.3.11: {} - nativewind@4.1.23(react-native-reanimated@3.16.7(@babel/core@7.28.0)(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.12.0(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native-svg@15.12.0(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.3.3))): - dependencies: - comment-json: 4.2.5 - debug: 4.4.1 - react-native-css-interop: 0.1.22(react-native-reanimated@3.16.7(@babel/core@7.28.0)(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.12.0(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native-svg@15.12.0(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.3.3))) - tailwindcss: 3.4.17(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.3.3)) - transitivePeerDependencies: - - react - - react-native - - react-native-reanimated - - react-native-safe-area-context - - react-native-svg - - supports-color - nativewind@4.1.23(react-native-reanimated@3.16.7(@babel/core@7.28.0)(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.12.0(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native-svg@15.12.0(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.18(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.3.3))): dependencies: comment-json: 4.2.5 @@ -19534,34 +19281,6 @@ snapshots: - react-native-svg - supports-color - nativewind@4.1.23(react-native-reanimated@3.16.7(@babel/core@7.28.0)(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.12.0(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.18(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.3.3))): - dependencies: - comment-json: 4.2.5 - debug: 4.4.1 - react-native-css-interop: 0.1.22(react-native-reanimated@3.16.7(@babel/core@7.28.0)(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.12.0(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.18(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.3.3))) - tailwindcss: 3.4.18(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.3.3)) - transitivePeerDependencies: - - react - - react-native - - react-native-reanimated - - react-native-safe-area-context - - react-native-svg - - supports-color - - nativewind@4.1.23(react-native-reanimated@3.16.7(@babel/core@7.28.0)(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.18(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.8.3))): - dependencies: - comment-json: 4.2.5 - debug: 4.4.1 - react-native-css-interop: 0.1.22(react-native-reanimated@3.16.7(@babel/core@7.28.0)(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.18(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.8.3))) - tailwindcss: 3.4.18(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.8.3)) - transitivePeerDependencies: - - react - - react-native - - react-native-reanimated - - react-native-safe-area-context - - react-native-svg - - supports-color - natural-compare@1.4.0: {} negotiator@0.6.3: {} @@ -20329,24 +20048,6 @@ snapshots: randomfill: 1.0.4 react-native-randombytes: 3.6.2 - react-native-css-interop@0.1.22(react-native-reanimated@3.16.7(@babel/core@7.28.0)(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.12.0(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native-svg@15.12.0(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.3.3))): - dependencies: - '@babel/helper-module-imports': 7.27.1 - '@babel/traverse': 7.28.0 - '@babel/types': 7.28.1 - debug: 4.4.1 - lightningcss: 1.30.1 - react: 18.3.1 - react-native: 0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1) - react-native-reanimated: 3.16.7(@babel/core@7.28.0)(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) - semver: 7.7.2 - tailwindcss: 3.4.17(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.3.3)) - optionalDependencies: - react-native-safe-area-context: 4.12.0(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) - react-native-svg: 15.12.0(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) - transitivePeerDependencies: - - supports-color - react-native-css-interop@0.1.22(react-native-reanimated@3.16.7(@babel/core@7.28.0)(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.12.0(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native-svg@15.12.0(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.18(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.3.3))): dependencies: '@babel/helper-module-imports': 7.27.1 @@ -20383,38 +20084,6 @@ snapshots: transitivePeerDependencies: - supports-color - react-native-css-interop@0.1.22(react-native-reanimated@3.16.7(@babel/core@7.28.0)(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.12.0(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.18(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.3.3))): - dependencies: - '@babel/helper-module-imports': 7.27.1 - '@babel/traverse': 7.28.0 - '@babel/types': 7.28.1 - debug: 4.4.1 - lightningcss: 1.30.1 - react: 18.3.1 - react-native: 0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1) - react-native-reanimated: 3.16.7(@babel/core@7.28.0)(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) - semver: 7.7.2 - tailwindcss: 3.4.18(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.3.3)) - optionalDependencies: - react-native-safe-area-context: 4.12.0(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) - transitivePeerDependencies: - - supports-color - - react-native-css-interop@0.1.22(react-native-reanimated@3.16.7(@babel/core@7.28.0)(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.18(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.8.3))): - dependencies: - '@babel/helper-module-imports': 7.27.1 - '@babel/traverse': 7.28.0 - '@babel/types': 7.28.1 - debug: 4.4.1 - lightningcss: 1.30.1 - react: 18.3.1 - react-native: 0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1) - react-native-reanimated: 3.16.7(@babel/core@7.28.0)(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) - semver: 7.7.2 - tailwindcss: 3.4.18(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.8.3)) - transitivePeerDependencies: - - supports-color - react-native-elements@3.4.3(react-native-safe-area-context@4.12.0(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native-vector-icons@10.2.0)(react-native@0.76.9(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1): dependencies: '@types/react-native-vector-icons': 6.4.18 @@ -21363,11 +21032,6 @@ snapshots: tailwind-merge: 1.14.0 tailwindcss: 3.4.18(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.8.3)) - tailwind-variants@0.1.20(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.3.3))): - dependencies: - tailwind-merge: 1.14.0 - tailwindcss: 3.4.17(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.3.3)) - tailwind-variants@0.1.20(tailwindcss@3.4.18(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.3.3))): dependencies: tailwind-merge: 1.14.0 @@ -21383,33 +21047,6 @@ snapshots: tailwind-merge: 2.6.0 tailwindcss: 3.4.18(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.8.3)) - tailwindcss@3.4.17(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.3.3)): - dependencies: - '@alloc/quick-lru': 5.2.0 - arg: 5.0.2 - chokidar: 3.6.0 - didyoumean: 1.2.2 - dlv: 1.1.3 - fast-glob: 3.3.3 - glob-parent: 6.0.2 - is-glob: 4.0.3 - jiti: 1.21.7 - lilconfig: 3.1.3 - micromatch: 4.0.8 - normalize-path: 3.0.0 - object-hash: 3.0.0 - picocolors: 1.1.1 - postcss: 8.5.6 - postcss-import: 15.1.0(postcss@8.5.6) - postcss-js: 4.0.1(postcss@8.5.6) - postcss-load-config: 4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.3.3)) - postcss-nested: 6.2.0(postcss@8.5.6) - postcss-selector-parser: 6.1.2 - resolve: 1.22.10 - sucrase: 3.35.0 - transitivePeerDependencies: - - ts-node - tailwindcss@3.4.18(ts-node@10.9.2(@types/node@24.0.15)(typescript@5.3.3)): dependencies: '@alloc/quick-lru': 5.2.0