@metacells/mcellui-core 0.1.2 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index-DtYPPizh.d.ts +682 -0
- package/dist/index.d.ts +3851 -0
- package/dist/index.js +7191 -0
- package/dist/index.js.map +1 -0
- package/dist/shadows-CwlbfJco.d.ts +194 -0
- package/dist/tokens/index.d.ts +17 -0
- package/dist/tokens/index.js +176 -0
- package/dist/tokens/index.js.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.js +4150 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +18 -11
- package/src/components/ErrorBoundary.tsx +0 -188
- package/src/components/index.ts +0 -6
- package/src/config/ConfigProvider.tsx +0 -145
- package/src/config/defineConfig.ts +0 -75
- package/src/config/index.ts +0 -42
- package/src/config/types.ts +0 -185
- package/src/constants.ts +0 -203
- package/src/index.ts +0 -144
- package/src/primitives/Portal.tsx +0 -185
- package/src/primitives/Pressable.tsx +0 -114
- package/src/primitives/Slot.tsx +0 -177
- package/src/primitives/index.ts +0 -19
- package/src/theme/ThemeProvider.tsx +0 -506
- package/src/theme/animations.ts +0 -381
- package/src/theme/colors.ts +0 -266
- package/src/theme/components.ts +0 -267
- package/src/theme/index.ts +0 -130
- package/src/theme/presets.ts +0 -341
- package/src/theme/radius.ts +0 -175
- package/src/theme/shadows.ts +0 -166
- package/src/theme/spacing.ts +0 -41
- package/src/theme/typography.ts +0 -389
- package/src/tokens/colors.ts +0 -67
- package/src/tokens/index.ts +0 -29
- package/src/tokens/radius.ts +0 -18
- package/src/tokens/shadows.ts +0 -38
- package/src/tokens/spacing.ts +0 -45
- package/src/tokens/typography.ts +0 -70
- package/src/utils/accessibility.ts +0 -112
- package/src/utils/cn.ts +0 -58
- package/src/utils/expoGo.ts +0 -72
- package/src/utils/haptics.ts +0 -125
- package/src/utils/index.ts +0 -33
- package/src/utils/platform.ts +0 -66
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/expo-modules-core/src/NativeModulesProxy.ts","../../../node_modules/expo-modules-core/src/TurboModuleToExpoModuleProxy.ts","../../../node_modules/expo-modules-core/src/ensureNativeModulesAreInstalled.ts","../../../node_modules/expo-modules-core/src/requireNativeModule.ts","../../../node_modules/expo-modules-core/src/sweet/NativeJSLogger.ts","../../../node_modules/expo-modules-core/src/environment/browser.ts","../../../node_modules/expo-modules-core/src/Platform.ts","../../../node_modules/expo-modules-core/src/errors/CodedError.ts","../../../node_modules/expo-modules-core/src/sweet/setUpJsLogger.fx.ts","../../../node_modules/expo-modules-core/src/errors/UnavailabilityError.ts","../../../node_modules/expo-modules-core/src/registerWebModule.ts","../../../node_modules/expo-modules-core/src/TypedArrays.types.ts","../../../node_modules/expo-modules-core/src/PermissionsInterface.ts","../../../node_modules/expo-modules-core/src/PermissionsHook.ts","../../../node_modules/expo-modules-core/src/Refs.ts","../../../node_modules/expo-modules-core/src/hooks/useReleasingSharedObject.ts","../../../node_modules/expo-modules-core/src/reload.ts","../../../node_modules/expo-modules-core/src/index.ts","../../../node_modules/react-refresh/cjs/react-refresh-runtime.production.min.js","../../../node_modules/react-refresh/cjs/react-refresh-runtime.development.js","../../../node_modules/react-refresh/runtime.js","../../../node_modules/expo/src/async-require/setupFastRefresh.ts","../../../node_modules/metro-runtime/src/modules/vendor/eventemitter3.js","../../../node_modules/metro-runtime/src/modules/HMRClient.js","../../../node_modules/@expo/metro/metro-runtime/modules/HMRClient.js","../../../node_modules/pretty-format/node_modules/ansi-styles/index.js","../../../node_modules/pretty-format/build/collections.js","../../../node_modules/pretty-format/build/plugins/AsymmetricMatcher.js","../../../node_modules/pretty-format/build/plugins/DOMCollection.js","../../../node_modules/pretty-format/build/plugins/lib/escapeHTML.js","../../../node_modules/pretty-format/build/plugins/lib/markup.js","../../../node_modules/pretty-format/build/plugins/DOMElement.js","../../../node_modules/pretty-format/build/plugins/Immutable.js","../../../node_modules/pretty-format/node_modules/react-is/cjs/react-is.production.min.js","../../../node_modules/pretty-format/node_modules/react-is/cjs/react-is.development.js","../../../node_modules/pretty-format/node_modules/react-is/index.js","../../../node_modules/pretty-format/build/plugins/ReactElement.js","../../../node_modules/pretty-format/build/plugins/ReactTestComponent.js","../../../node_modules/pretty-format/build/index.js","../../../node_modules/expo/src/async-require/hmr.ts","../../../node_modules/expo/src/async-require/setupHMR.ts","../../../node_modules/expo/src/async-require/messageSocket.ts","../../../node_modules/expo/src/async-require/setup.ts","../../../node_modules/expo/src/utils/getBundleUrl.ts","../../../node_modules/expo/src/winter/ImportMetaRegistry.ts","../../../node_modules/expo/src/winter/runtime.ts","../../../node_modules/expo/src/winter/index.ts","../../../node_modules/expo/src/async-require/getDevServer.ts","../../../node_modules/expo/src/async-require/buildUrlForBundle.ts","../../../node_modules/expo/src/async-require/errors.ts","../../../node_modules/expo/src/async-require/fetchAsync.ts","../../../node_modules/expo/src/async-require/fetchThenEvalJs.ts","../../../node_modules/expo/src/async-require/fetchThenEval.ts","../../../node_modules/expo/src/async-require/loadBundle.ts","../../../node_modules/expo/src/async-require/buildAsyncRequire.ts","../../../node_modules/expo/src/async-require/index.ts","../../../node_modules/expo-constants/src/Constants.types.ts","../../../node_modules/expo-constants/src/ExponentConstants.ts","../../../node_modules/expo-constants/src/Constants.ts","../../../node_modules/expo/src/environment/ExpoGo.ts","../../../node_modules/expo/src/errors/AppEntryNotFound.tsx","../../../node_modules/expo/src/errors/ExpoErrorManager.ts","../../../node_modules/expo/src/Expo.fx.tsx","../../../node_modules/expo/src/Expo.ts","../../../node_modules/expo-haptics/src/ExpoHaptics.ts","../../../node_modules/expo-haptics/src/Haptics.types.ts","../../../node_modules/expo-haptics/src/Haptics.ts","../src/theme/colors.ts","../src/theme/spacing.ts","../src/theme/radius.ts","../src/theme/typography.ts","../src/theme/shadows.ts","../src/theme/animations.ts","../src/theme/components.ts","../src/theme/presets.ts","../src/utils/haptics.ts","../src/utils/expoGo.ts","../src/theme/ThemeProvider.tsx","../src/tokens/colors.ts","../src/tokens/spacing.ts","../src/tokens/typography.ts","../src/tokens/radius.ts","../src/tokens/shadows.ts","../src/config/types.ts","../src/config/defineConfig.ts","../src/config/ConfigProvider.tsx","../src/utils/cn.ts","../src/utils/platform.ts","../src/utils/accessibility.ts","../src/utils/typography.ts","../src/primitives/Pressable.tsx","../src/primitives/Portal.tsx","../src/primitives/Slot.tsx","../src/components/ErrorBoundary.tsx","../src/constants.ts"],"names":["name","Platform","ReactNativePlatform","code","exports","id","module","EventEmitter","url","require_HMRClient","styles","Symbol","colors","Fragment","Portal","nodeInterop","plugins","HMRClient","prettyFormat","MetroHMRClient","AppOwnership","ExecutionEnvironment","UserInterfaceIdiom","NativeModules","NotificationFeedbackType","ImpactFeedbackStyle","AndroidHaptics","shadows","useState","useEffect","useCallback","useMemo","typography","radius","componentRadius","jsx","spacing","fontFamily","fontSize","fontWeight","lineHeight","letterSpacing","createContext","useContext","StyleSheet","React","RNPressable","jsxs","View","mergeStyles","Text","Pressable"],"mappings":"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","file":"index.js","sourcesContent":["import type { ProxyNativeModule } from './NativeModulesProxy.types';\n\n// We default to an empty object shim wherever we don't have an environment-specific implementation\n\n/**\n * @deprecated `NativeModulesProxy` is deprecated and might be removed in the future releases.\n * Use `requireNativeModule` or `requireOptionalNativeModule` instead.\n */\nexport default {} as Record<string, ProxyNativeModule>;\n","// Copyright © 2024 650 Industries.\nimport type { TurboModule } from 'react-native';\n\nexport function createTurboModuleToExpoProxy(turboModule: TurboModule | null, name: string) {\n return null;\n}\n","// Installs the expo global on web\nimport './polyfill';\n\n/**\n * Ensures that the native modules are installed in the current runtime.\n * Otherwise, it synchronously calls a native function that installs them.\n */\nexport function ensureNativeModulesAreInstalled(): void {\n // No-op on web\n}\n","import { TurboModuleRegistry } from 'react-native';\n\nimport NativeModulesProxy from './NativeModulesProxy';\nimport { createTurboModuleToExpoProxy } from './TurboModuleToExpoModuleProxy';\nimport { ensureNativeModulesAreInstalled } from './ensureNativeModulesAreInstalled';\n\n/**\n * Imports the native module registered with given name. In the first place it tries to load\n * the module installed through the JSI host object and then falls back to the bridge proxy module.\n * Notice that the modules loaded from the proxy may not support some features like synchronous functions.\n *\n * @param moduleName Name of the requested native module.\n * @returns Object representing the native module.\n * @throws Error when there is no native module with given name.\n */\nexport function requireNativeModule<ModuleType = any>(moduleName: string): ModuleType {\n const nativeModule = requireOptionalNativeModule<ModuleType>(moduleName);\n\n if (!nativeModule) {\n throw new Error(`Cannot find native module '${moduleName}'`);\n }\n return nativeModule;\n}\n\n/**\n * Imports the native module registered with the given name. The same as `requireNativeModule`,\n * but returns `null` when the module cannot be found instead of throwing an error.\n *\n * @param moduleName Name of the requested native module.\n * @returns Object representing the native module or `null` when it cannot be found.\n */\nexport function requireOptionalNativeModule<ModuleType = any>(\n moduleName: string\n): ModuleType | null {\n ensureNativeModulesAreInstalled();\n\n try {\n return (\n globalThis.expo?.modules?.[moduleName] ??\n NativeModulesProxy[moduleName] ??\n createTurboModuleToExpoProxy(TurboModuleRegistry.get(moduleName), moduleName) ??\n null\n );\n } catch (e) {\n const error = e as Error;\n console.warn(`An error occurred while requiring the '${moduleName}' module: ${error.message}`);\n return null;\n }\n}\n","import { requireOptionalNativeModule } from '../requireNativeModule';\n\nexport default requireOptionalNativeModule('ExpoModulesCoreJSLogger');\n","declare const global: any;\n\n// In standard node environments there is no DOM API\nexport const isDOMAvailable = false;\nexport const canUseEventListeners = false;\nexport const canUseViewport = false;\n\nexport let isAsyncDebugging: boolean = false;\n\nif (__DEV__) {\n // These native globals are injected by native React runtimes and not standard browsers\n // we can use them to determine if the JS is being executed in Chrome.\n isAsyncDebugging =\n !global.nativeExtensions && !global.nativeCallSyncHook && !global.RN$Bridgeless;\n}\n","import { PlatformOSType, Platform as ReactNativePlatform } from 'react-native';\n\nimport {\n isDOMAvailable,\n canUseEventListeners,\n canUseViewport,\n isAsyncDebugging,\n} from './environment/browser';\n\nexport type PlatformSelectOSType = PlatformOSType | 'native' | 'electron' | 'default';\n\nexport type PlatformSelect = <T>(specifics: { [platform in PlatformSelectOSType]?: T }) => T;\n\nif (__DEV__ && typeof process.env.EXPO_OS === 'undefined') {\n console.warn(\n `The global process.env.EXPO_OS is not defined. This should be inlined by babel-preset-expo during transformation.`\n );\n}\n\nconst nativeSelect =\n typeof window !== 'undefined'\n ? ReactNativePlatform.select\n : // process.env.EXPO_OS is injected by `babel-preset-expo` and available in both client and `react-server` environments.\n // Opt to use the env var when possible, and fallback to the React Native Platform module when it's not (arbitrary bundlers and transformers).\n function select<T>(specifics: { [platform in PlatformSelectOSType]?: T }): T | undefined {\n if (!process.env.EXPO_OS) return undefined;\n if (specifics.hasOwnProperty(process.env.EXPO_OS)) {\n return specifics[process.env.EXPO_OS as PlatformSelectOSType]!;\n } else if (process.env.EXPO_OS !== 'web' && specifics.hasOwnProperty('native')) {\n return specifics.native!;\n } else if (specifics.hasOwnProperty('default')) {\n return specifics.default!;\n }\n // do nothing...\n return undefined;\n };\n\nconst Platform = {\n /**\n * Denotes the currently running platform.\n * Can be one of ios, android, web.\n */\n OS: process.env.EXPO_OS || ReactNativePlatform.OS,\n /**\n * Returns the value with the matching platform.\n * Object keys can be any of ios, android, native, web, default.\n *\n * @ios ios, native, default\n * @android android, native, default\n * @web web, default\n */\n select: nativeSelect as PlatformSelect,\n /**\n * Denotes if the DOM API is available in the current environment.\n * The DOM is not available in native React runtimes and Node.js.\n */\n isDOMAvailable,\n /**\n * Denotes if the current environment can attach event listeners\n * to the window. This will return false in native React\n * runtimes and Node.js.\n */\n canUseEventListeners,\n /**\n * Denotes if the current environment can inspect properties of the\n * screen on which the current window is being rendered. This will\n * return false in native React runtimes and Node.js.\n */\n canUseViewport,\n /**\n * If the JavaScript is being executed in a remote JavaScript environment.\n * When `true`, synchronous native invocations cannot be executed.\n */\n isAsyncDebugging,\n};\n\nexport default Platform;\n","/**\n * A general error class that should be used for all errors in Expo modules.\n * Guarantees a `code` field that can be used to differentiate between different\n * types of errors without further subclassing Error.\n */\nexport class CodedError extends Error {\n code: string;\n info?: any;\n\n constructor(code: string, message: string) {\n super(message);\n this.code = code;\n }\n}\n","import NativeJSLogger from './NativeJSLogger';\nimport Platform from '../Platform';\nimport { CodedError } from '../errors/CodedError';\n\ntype LogListener = {\n action: (...data: any[]) => void;\n eventName: string;\n};\n\nif (__DEV__ && (Platform.OS === 'android' || Platform.OS === 'ios') && NativeJSLogger) {\n const onNewException: LogListener = {\n eventName: 'ExpoModulesCoreJSLogger.onNewError',\n action: console.error,\n };\n\n const onNewWarning: LogListener = {\n eventName: 'ExpoModulesCoreJSLogger.onNewWarning',\n action: console.warn,\n };\n\n const onNewDebug: LogListener = {\n eventName: 'ExpoModulesCoreJSLogger.onNewDebug',\n action: console.debug,\n };\n\n const onNewInfo: LogListener = {\n eventName: 'ExpoModulesCoreJSLogger.onNewInfo',\n action: console.info,\n };\n\n const onNewTrace: LogListener = {\n eventName: 'ExpoModulesCoreJSLogger.onNewTrace',\n action: console.trace,\n };\n\n const listeners: LogListener[] = [\n onNewException,\n onNewWarning,\n onNewDebug,\n onNewInfo,\n onNewTrace,\n ];\n\n for (const listener of listeners) {\n NativeJSLogger.addListener(listener.eventName, ({ message }: { message: string }) => {\n listener.action(message);\n });\n }\n}\n\ndeclare namespace globalThis {\n let ExpoModulesCore_CodedError: undefined | typeof CodedError;\n}\n\n// We have to export `CodedError` via global object to use in later in the C++ code.\nglobalThis.ExpoModulesCore_CodedError = CodedError;\n","import { CodedError } from './CodedError';\nimport Platform from '../Platform';\n\n/**\n * A class for errors to be thrown when a property is accessed which is\n * unavailable, unsupported, or not currently implemented on the running\n * platform.\n */\nexport class UnavailabilityError extends CodedError {\n constructor(moduleName: string, propertyName: string) {\n super(\n 'ERR_UNAVAILABLE',\n `The method or property ${moduleName}.${propertyName} is not available on ${Platform.OS}, are you sure you've linked all the native dependencies properly?`\n );\n }\n}\n","import { ensureNativeModulesAreInstalled } from './ensureNativeModulesAreInstalled';\nimport type { NativeModule } from './ts-declarations/NativeModule';\n\n/**\n * Registers a web module.\n * @param moduleImplementation A class that extends `NativeModule`. The class is registered under `globalThis.expo.modules[className]`.\n * @param moduleName – a name to register the module under `globalThis.expo.modules[className]`.\n * @returns A singleton instance of the class passed into arguments.\n */\n\nexport function registerWebModule<\n EventsMap extends Record<never, never>,\n ModuleType extends typeof NativeModule<EventsMap>,\n>(moduleImplementation: ModuleType, moduleName: string): ModuleType {\n ensureNativeModulesAreInstalled();\n\n moduleName = moduleName ?? moduleImplementation.name;\n if (!moduleName) {\n throw new Error(\n 'Web module implementation is missing a name - it is either not a class or has been minified. Pass the name as a second argument to the `registerWebModule` function.'\n );\n }\n if (!globalThis?.expo?.modules) {\n globalThis.expo.modules = {};\n }\n if (globalThis.expo.modules[moduleName]) {\n return globalThis.expo.modules[moduleName];\n }\n globalThis.expo.modules[moduleName] = new moduleImplementation();\n return globalThis.expo.modules[moduleName];\n}\n","/** A union type for all integer based [`TypedArray` objects](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#typedarray_objects). */\nexport type IntBasedTypedArray = Int8Array | Int16Array | Int32Array;\n\n/** A union type for all unsigned integer based [`TypedArray` objects](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#typedarray_objects). */\nexport type UintBasedTypedArray = Uint8Array | Uint8ClampedArray | Uint16Array | Uint32Array;\n\n/** A union type for all floating point based [`TypedArray` objects](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#typedarray_objects). */\nexport type FloatBasedTypedArray = Float32Array | Float64Array;\n\n/** A [`TypedArray`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray) describes an array-like view of an underlying binary data buffer. */\nexport type TypedArray = IntBasedTypedArray | UintBasedTypedArray | FloatBasedTypedArray;\n","export enum PermissionStatus {\n /**\n * User has granted the permission.\n */\n GRANTED = 'granted',\n /**\n * User hasn't granted or denied the permission yet.\n */\n UNDETERMINED = 'undetermined',\n /**\n * User has denied the permission.\n */\n DENIED = 'denied',\n}\n\n/**\n * Permission expiration time. Currently, all permissions are granted permanently.\n */\nexport type PermissionExpiration = 'never' | number;\n\n/**\n * An object obtained by permissions get and request functions.\n */\nexport type PermissionResponse = {\n /**\n * Determines the status of the permission.\n */\n status: PermissionStatus;\n /**\n * Determines time when the permission expires.\n */\n expires: PermissionExpiration;\n /**\n * A convenience boolean that indicates if the permission is granted.\n */\n granted: boolean;\n /**\n * Indicates if user can be asked again for specific permission.\n * If not, one should be directed to the Settings app\n * in order to enable/disable the permission.\n */\n canAskAgain: boolean;\n};\n","// Copyright © 2024 650 Industries.\n\n'use client';\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { PermissionResponse } from './PermissionsInterface';\n\n// These types are identical, but improves the readability for suggestions in editors\ntype RequestPermissionMethod<Permission extends PermissionResponse> = () => Promise<Permission>;\ntype GetPermissionMethod<Permission extends PermissionResponse> = () => Promise<Permission>;\n\ntype PermissionHookMethods<Permission extends PermissionResponse, Options = never> = {\n /** The permission method that requests the user to grant permission. */\n requestMethod: (options?: Options) => Promise<Permission>;\n /** The permission method that only fetches the current permission status. */\n getMethod: (options?: Options) => Promise<Permission>;\n};\n\ntype PermissionHookBehavior = {\n /** If the hook should automatically fetch the current permission status, without asking the user. */\n get?: boolean;\n /** If the hook should automatically request the user to grant permission. */\n request?: boolean;\n};\n\nexport type PermissionHookOptions<Options extends object> = PermissionHookBehavior & Options;\n\n/**\n * Get or request permission for protected functionality within the app.\n * It uses separate permission requesters to interact with a single permission.\n * By default, the hook will only retrieve the permission status.\n */\nfunction usePermission<Permission extends PermissionResponse, Options extends object>(\n methods: PermissionHookMethods<Permission, Options>,\n options?: PermissionHookOptions<Options>\n): [Permission | null, RequestPermissionMethod<Permission>, GetPermissionMethod<Permission>] {\n const isMounted = useRef(true);\n const [status, setStatus] = useState<Permission | null>(null);\n const { get = true, request = false, ...permissionOptions } = options || {};\n\n const getPermission = useCallback(async () => {\n let response: Permission;\n if (Object.keys(permissionOptions).length > 0) {\n response = await methods.getMethod(permissionOptions as Options);\n } else {\n response = await methods.getMethod();\n }\n if (isMounted.current) setStatus(response);\n return response;\n }, [methods.getMethod]);\n\n const requestPermission = useCallback(async () => {\n let response: Permission;\n if (Object.keys(permissionOptions).length > 0) {\n response = await methods.requestMethod(permissionOptions as Options);\n } else {\n response = await methods.requestMethod();\n }\n if (isMounted.current) setStatus(response);\n return response;\n }, [methods.requestMethod]);\n\n useEffect(\n function runMethods() {\n if (request) requestPermission();\n if (!request && get) getPermission();\n },\n [get, request, requestPermission, getPermission]\n );\n\n // Workaround for unmounting components receiving state updates\n useEffect(function didMount() {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n }, []);\n\n return [status, requestPermission, getPermission];\n}\n\n/**\n * Create a new permission hook with the permission methods built-in.\n * This can be used to quickly create specific permission hooks in every module.\n */\nexport function createPermissionHook<Permission extends PermissionResponse, Options extends object>(\n methods: PermissionHookMethods<Permission, Options>\n) {\n return (options?: PermissionHookOptions<Options>) =>\n usePermission<Permission, Options>(methods, options);\n}\n","import { createRef, type RefObject } from 'react';\n\n/**\n * Create a React ref object that is friendly for snapshots.\n * It will be represented as `[React.ref]` in snapshots.\n * @returns A React ref object.\n */\nexport function createSnapshotFriendlyRef<T>(): RefObject<T | null> {\n return createRef<T>();\n}\n","'use client';\n\nimport { DependencyList, useRef, useMemo, useEffect } from 'react';\n\nimport type { SharedObject } from '../ts-declarations/SharedObject';\n\n/**\n * Returns a shared object, which is automatically cleaned up when the component is unmounted.\n */\nexport function useReleasingSharedObject<TSharedObject extends SharedObject>(\n factory: () => TSharedObject,\n dependencies: DependencyList\n): TSharedObject {\n const objectRef = useRef<TSharedObject | null>(null);\n const isFastRefresh = useRef(false);\n const previousDependencies = useRef<DependencyList>(dependencies);\n\n if (objectRef.current == null) {\n objectRef.current = factory();\n }\n\n const object = useMemo(() => {\n let newObject = objectRef.current;\n const dependenciesAreEqual =\n previousDependencies.current?.length === dependencies.length &&\n dependencies.every((value, index) => value === previousDependencies.current[index]);\n\n // If the dependencies have changed, release the previous object and create a new one, otherwise this has been called\n // because of an unrelated fast refresh, and we don't want to release the object.\n if (!newObject || !dependenciesAreEqual) {\n objectRef.current?.release();\n newObject = factory();\n objectRef.current = newObject;\n previousDependencies.current = dependencies;\n }\n return newObject;\n }, dependencies);\n\n useMemo(() => {\n isFastRefresh.current = true;\n }, []);\n\n useEffect(() => {\n isFastRefresh.current = false;\n\n return () => {\n // This will be called on every fast refresh and on unmount, but we only want to release the object on unmount.\n if (!isFastRefresh.current && objectRef.current) {\n objectRef.current.release();\n }\n };\n }, []);\n\n return object;\n}\n","/**\n * Reloads the app. This method works for both release and debug builds.\n *\n * Unlike [`Updates.reloadAsync()`](/versions/latest/sdk/updates/#updatesreloadasync),\n * this function does not use a new update even if one is available. It only reloads the app using the same JavaScript bundle that is currently running.\n *\n * @param reason The reason for reloading the app. This is used only for some platforms.\n */\nexport async function reloadAppAsync(reason: string = 'Reloaded from JS call'): Promise<void> {\n await globalThis.expo?.reloadAppAsync(reason);\n}\n","import './sweet/setUpJsLogger.fx';\nimport './polyfill';\n\nexport type * from './ts-declarations/global';\n\nexport { EventEmitter, type EventSubscription } from './EventEmitter';\nexport { NativeModule } from './NativeModule';\nexport { SharedObject } from './SharedObject';\nexport { SharedRef } from './SharedRef';\n\nexport { default as Platform } from './Platform';\nexport { default as uuid } from './uuid';\n\nexport type { ProxyNativeModule } from './NativeModulesProxy.types';\nexport { requireNativeViewManager } from './NativeViewManagerAdapter';\n\nexport * from './requireNativeModule';\nexport * from './registerWebModule';\nexport * from './TypedArrays.types';\n\nexport * from './PermissionsInterface';\nexport * from './PermissionsHook';\n\nexport * from './Refs';\n\nexport * from './hooks/useReleasingSharedObject';\nexport * from './reload';\n\n// Errors\nexport { CodedError } from './errors/CodedError';\nexport { UnavailabilityError } from './errors/UnavailabilityError';\n\n// Deprecated\nexport { LegacyEventEmitter } from './LegacyEventEmitter';\nexport { default as NativeModulesProxy } from './NativeModulesProxy';\n","/**\n * @license React\n * react-refresh-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';throw Error(\"React Refresh runtime should not be included in the production bundle.\");\n","/**\n * @license React\n * react-refresh-runtime.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// ATTENTION\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\n\nvar PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map; // We never remove these associations.\n// It's OK to reference families, but use WeakMap/Set for types.\n\nvar allFamiliesByID = new Map();\nvar allFamiliesByType = new PossiblyWeakMap();\nvar allSignaturesByType = new PossiblyWeakMap(); // This WeakMap is read by React, so we only put families\n// that have actually been edited here. This keeps checks fast.\n// $FlowIssue\n\nvar updatedFamiliesByType = new PossiblyWeakMap(); // This is cleared on every performReactRefresh() call.\n// It is an array of [Family, NextType] tuples.\n\nvar pendingUpdates = []; // This is injected by the renderer via DevTools global hook.\n\nvar helpersByRendererID = new Map();\nvar helpersByRoot = new Map(); // We keep track of mounted roots so we can schedule updates.\n\nvar mountedRoots = new Set(); // If a root captures an error, we remember it so we can retry on edit.\n\nvar failedRoots = new Set(); // In environments that support WeakMap, we also remember the last element for every root.\n// It needs to be weak because we do this even for roots that failed to mount.\n// If there is no WeakMap, we won't attempt to do retrying.\n// $FlowIssue\n\nvar rootElements = // $FlowIssue\ntypeof WeakMap === 'function' ? new WeakMap() : null;\nvar isPerformingRefresh = false;\n\nfunction computeFullKey(signature) {\n if (signature.fullKey !== null) {\n return signature.fullKey;\n }\n\n var fullKey = signature.ownKey;\n var hooks;\n\n try {\n hooks = signature.getCustomHooks();\n } catch (err) {\n // This can happen in an edge case, e.g. if expression like Foo.useSomething\n // depends on Foo which is lazily initialized during rendering.\n // In that case just assume we'll have to remount.\n signature.forceReset = true;\n signature.fullKey = fullKey;\n return fullKey;\n }\n\n for (var i = 0; i < hooks.length; i++) {\n var hook = hooks[i];\n\n if (typeof hook !== 'function') {\n // Something's wrong. Assume we need to remount.\n signature.forceReset = true;\n signature.fullKey = fullKey;\n return fullKey;\n }\n\n var nestedHookSignature = allSignaturesByType.get(hook);\n\n if (nestedHookSignature === undefined) {\n // No signature means Hook wasn't in the source code, e.g. in a library.\n // We'll skip it because we can assume it won't change during this session.\n continue;\n }\n\n var nestedHookKey = computeFullKey(nestedHookSignature);\n\n if (nestedHookSignature.forceReset) {\n signature.forceReset = true;\n }\n\n fullKey += '\\n---\\n' + nestedHookKey;\n }\n\n signature.fullKey = fullKey;\n return fullKey;\n}\n\nfunction haveEqualSignatures(prevType, nextType) {\n var prevSignature = allSignaturesByType.get(prevType);\n var nextSignature = allSignaturesByType.get(nextType);\n\n if (prevSignature === undefined && nextSignature === undefined) {\n return true;\n }\n\n if (prevSignature === undefined || nextSignature === undefined) {\n return false;\n }\n\n if (computeFullKey(prevSignature) !== computeFullKey(nextSignature)) {\n return false;\n }\n\n if (nextSignature.forceReset) {\n return false;\n }\n\n return true;\n}\n\nfunction isReactClass(type) {\n return type.prototype && type.prototype.isReactComponent;\n}\n\nfunction canPreserveStateBetween(prevType, nextType) {\n if (isReactClass(prevType) || isReactClass(nextType)) {\n return false;\n }\n\n if (haveEqualSignatures(prevType, nextType)) {\n return true;\n }\n\n return false;\n}\n\nfunction resolveFamily(type) {\n // Only check updated types to keep lookups fast.\n return updatedFamiliesByType.get(type);\n} // If we didn't care about IE11, we could use new Map/Set(iterable).\n\n\nfunction cloneMap(map) {\n var clone = new Map();\n map.forEach(function (value, key) {\n clone.set(key, value);\n });\n return clone;\n}\n\nfunction cloneSet(set) {\n var clone = new Set();\n set.forEach(function (value) {\n clone.add(value);\n });\n return clone;\n} // This is a safety mechanism to protect against rogue getters and Proxies.\n\n\nfunction getProperty(object, property) {\n try {\n return object[property];\n } catch (err) {\n // Intentionally ignore.\n return undefined;\n }\n}\n\nfunction performReactRefresh() {\n\n if (pendingUpdates.length === 0) {\n return null;\n }\n\n if (isPerformingRefresh) {\n return null;\n }\n\n isPerformingRefresh = true;\n\n try {\n var staleFamilies = new Set();\n var updatedFamilies = new Set();\n var updates = pendingUpdates;\n pendingUpdates = [];\n updates.forEach(function (_ref) {\n var family = _ref[0],\n nextType = _ref[1];\n // Now that we got a real edit, we can create associations\n // that will be read by the React reconciler.\n var prevType = family.current;\n updatedFamiliesByType.set(prevType, family);\n updatedFamiliesByType.set(nextType, family);\n family.current = nextType; // Determine whether this should be a re-render or a re-mount.\n\n if (canPreserveStateBetween(prevType, nextType)) {\n updatedFamilies.add(family);\n } else {\n staleFamilies.add(family);\n }\n }); // TODO: rename these fields to something more meaningful.\n\n var update = {\n updatedFamilies: updatedFamilies,\n // Families that will re-render preserving state\n staleFamilies: staleFamilies // Families that will be remounted\n\n };\n helpersByRendererID.forEach(function (helpers) {\n // Even if there are no roots, set the handler on first update.\n // This ensures that if *new* roots are mounted, they'll use the resolve handler.\n helpers.setRefreshHandler(resolveFamily);\n });\n var didError = false;\n var firstError = null; // We snapshot maps and sets that are mutated during commits.\n // If we don't do this, there is a risk they will be mutated while\n // we iterate over them. For example, trying to recover a failed root\n // may cause another root to be added to the failed list -- an infinite loop.\n\n var failedRootsSnapshot = cloneSet(failedRoots);\n var mountedRootsSnapshot = cloneSet(mountedRoots);\n var helpersByRootSnapshot = cloneMap(helpersByRoot);\n failedRootsSnapshot.forEach(function (root) {\n var helpers = helpersByRootSnapshot.get(root);\n\n if (helpers === undefined) {\n throw new Error('Could not find helpers for a root. This is a bug in React Refresh.');\n }\n\n if (!failedRoots.has(root)) {// No longer failed.\n }\n\n if (rootElements === null) {\n return;\n }\n\n if (!rootElements.has(root)) {\n return;\n }\n\n var element = rootElements.get(root);\n\n try {\n helpers.scheduleRoot(root, element);\n } catch (err) {\n if (!didError) {\n didError = true;\n firstError = err;\n } // Keep trying other roots.\n\n }\n });\n mountedRootsSnapshot.forEach(function (root) {\n var helpers = helpersByRootSnapshot.get(root);\n\n if (helpers === undefined) {\n throw new Error('Could not find helpers for a root. This is a bug in React Refresh.');\n }\n\n if (!mountedRoots.has(root)) {// No longer mounted.\n }\n\n try {\n helpers.scheduleRefresh(root, update);\n } catch (err) {\n if (!didError) {\n didError = true;\n firstError = err;\n } // Keep trying other roots.\n\n }\n });\n\n if (didError) {\n throw firstError;\n }\n\n return update;\n } finally {\n isPerformingRefresh = false;\n }\n}\nfunction register(type, id) {\n {\n if (type === null) {\n return;\n }\n\n if (typeof type !== 'function' && typeof type !== 'object') {\n return;\n } // This can happen in an edge case, e.g. if we register\n // return value of a HOC but it returns a cached component.\n // Ignore anything but the first registration for each type.\n\n\n if (allFamiliesByType.has(type)) {\n return;\n } // Create family or remember to update it.\n // None of this bookkeeping affects reconciliation\n // until the first performReactRefresh() call above.\n\n\n var family = allFamiliesByID.get(id);\n\n if (family === undefined) {\n family = {\n current: type\n };\n allFamiliesByID.set(id, family);\n } else {\n pendingUpdates.push([family, type]);\n }\n\n allFamiliesByType.set(type, family); // Visit inner types because we might not have registered them.\n\n if (typeof type === 'object' && type !== null) {\n switch (getProperty(type, '$$typeof')) {\n case REACT_FORWARD_REF_TYPE:\n register(type.render, id + '$render');\n break;\n\n case REACT_MEMO_TYPE:\n register(type.type, id + '$type');\n break;\n }\n }\n }\n}\nfunction setSignature(type, key) {\n var forceReset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var getCustomHooks = arguments.length > 3 ? arguments[3] : undefined;\n\n {\n if (!allSignaturesByType.has(type)) {\n allSignaturesByType.set(type, {\n forceReset: forceReset,\n ownKey: key,\n fullKey: null,\n getCustomHooks: getCustomHooks || function () {\n return [];\n }\n });\n } // Visit inner types because we might not have signed them.\n\n\n if (typeof type === 'object' && type !== null) {\n switch (getProperty(type, '$$typeof')) {\n case REACT_FORWARD_REF_TYPE:\n setSignature(type.render, key, forceReset, getCustomHooks);\n break;\n\n case REACT_MEMO_TYPE:\n setSignature(type.type, key, forceReset, getCustomHooks);\n break;\n }\n }\n }\n} // This is lazily called during first render for a type.\n// It captures Hook list at that time so inline requires don't break comparisons.\n\nfunction collectCustomHooksForSignature(type) {\n {\n var signature = allSignaturesByType.get(type);\n\n if (signature !== undefined) {\n computeFullKey(signature);\n }\n }\n}\nfunction getFamilyByID(id) {\n {\n return allFamiliesByID.get(id);\n }\n}\nfunction getFamilyByType(type) {\n {\n return allFamiliesByType.get(type);\n }\n}\nfunction findAffectedHostInstances(families) {\n {\n var affectedInstances = new Set();\n mountedRoots.forEach(function (root) {\n var helpers = helpersByRoot.get(root);\n\n if (helpers === undefined) {\n throw new Error('Could not find helpers for a root. This is a bug in React Refresh.');\n }\n\n var instancesForRoot = helpers.findHostInstancesForRefresh(root, families);\n instancesForRoot.forEach(function (inst) {\n affectedInstances.add(inst);\n });\n });\n return affectedInstances;\n }\n}\nfunction injectIntoGlobalHook(globalObject) {\n {\n // For React Native, the global hook will be set up by require('react-devtools-core').\n // That code will run before us. So we need to monkeypatch functions on existing hook.\n // For React Web, the global hook will be set up by the extension.\n // This will also run before us.\n var hook = globalObject.__REACT_DEVTOOLS_GLOBAL_HOOK__;\n\n if (hook === undefined) {\n // However, if there is no DevTools extension, we'll need to set up the global hook ourselves.\n // Note that in this case it's important that renderer code runs *after* this method call.\n // Otherwise, the renderer will think that there is no global hook, and won't do the injection.\n var nextID = 0;\n globalObject.__REACT_DEVTOOLS_GLOBAL_HOOK__ = hook = {\n renderers: new Map(),\n supportsFiber: true,\n inject: function (injected) {\n return nextID++;\n },\n onScheduleFiberRoot: function (id, root, children) {},\n onCommitFiberRoot: function (id, root, maybePriorityLevel, didError) {},\n onCommitFiberUnmount: function () {}\n };\n }\n\n if (hook.isDisabled) {\n // This isn't a real property on the hook, but it can be set to opt out\n // of DevTools integration and associated warnings and logs.\n // Using console['warn'] to evade Babel and ESLint\n console['warn']('Something has shimmed the React DevTools global hook (__REACT_DEVTOOLS_GLOBAL_HOOK__). ' + 'Fast Refresh is not compatible with this shim and will be disabled.');\n return;\n } // Here, we just want to get a reference to scheduleRefresh.\n\n\n var oldInject = hook.inject;\n\n hook.inject = function (injected) {\n var id = oldInject.apply(this, arguments);\n\n if (typeof injected.scheduleRefresh === 'function' && typeof injected.setRefreshHandler === 'function') {\n // This version supports React Refresh.\n helpersByRendererID.set(id, injected);\n }\n\n return id;\n }; // Do the same for any already injected roots.\n // This is useful if ReactDOM has already been initialized.\n // https://github.com/facebook/react/issues/17626\n\n\n hook.renderers.forEach(function (injected, id) {\n if (typeof injected.scheduleRefresh === 'function' && typeof injected.setRefreshHandler === 'function') {\n // This version supports React Refresh.\n helpersByRendererID.set(id, injected);\n }\n }); // We also want to track currently mounted roots.\n\n var oldOnCommitFiberRoot = hook.onCommitFiberRoot;\n\n var oldOnScheduleFiberRoot = hook.onScheduleFiberRoot || function () {};\n\n hook.onScheduleFiberRoot = function (id, root, children) {\n if (!isPerformingRefresh) {\n // If it was intentionally scheduled, don't attempt to restore.\n // This includes intentionally scheduled unmounts.\n failedRoots.delete(root);\n\n if (rootElements !== null) {\n rootElements.set(root, children);\n }\n }\n\n return oldOnScheduleFiberRoot.apply(this, arguments);\n };\n\n hook.onCommitFiberRoot = function (id, root, maybePriorityLevel, didError) {\n var helpers = helpersByRendererID.get(id);\n\n if (helpers !== undefined) {\n helpersByRoot.set(root, helpers);\n var current = root.current;\n var alternate = current.alternate; // We need to determine whether this root has just (un)mounted.\n // This logic is copy-pasted from similar logic in the DevTools backend.\n // If this breaks with some refactoring, you'll want to update DevTools too.\n\n if (alternate !== null) {\n var wasMounted = alternate.memoizedState != null && alternate.memoizedState.element != null && mountedRoots.has(root);\n var isMounted = current.memoizedState != null && current.memoizedState.element != null;\n\n if (!wasMounted && isMounted) {\n // Mount a new root.\n mountedRoots.add(root);\n failedRoots.delete(root);\n } else if (wasMounted && isMounted) ; else if (wasMounted && !isMounted) {\n // Unmount an existing root.\n mountedRoots.delete(root);\n\n if (didError) {\n // We'll remount it on future edits.\n failedRoots.add(root);\n } else {\n helpersByRoot.delete(root);\n }\n } else if (!wasMounted && !isMounted) {\n if (didError) {\n // We'll remount it on future edits.\n failedRoots.add(root);\n }\n }\n } else {\n // Mount a new root.\n mountedRoots.add(root);\n }\n } // Always call the decorated DevTools hook.\n\n\n return oldOnCommitFiberRoot.apply(this, arguments);\n };\n }\n}\nfunction hasUnrecoverableErrors() {\n // TODO: delete this after removing dependency in RN.\n return false;\n} // Exposed for testing.\n\nfunction _getMountedRootCount() {\n {\n return mountedRoots.size;\n }\n} // This is a wrapper over more primitive functions for setting signature.\n// Signatures let us decide whether the Hook order has changed on refresh.\n//\n// This function is intended to be used as a transform target, e.g.:\n// var _s = createSignatureFunctionForTransform()\n//\n// function Hello() {\n// const [foo, setFoo] = useState(0);\n// const value = useCustomHook();\n// _s(); /* Call without arguments triggers collecting the custom Hook list.\n// * This doesn't happen during the module evaluation because we\n// * don't want to change the module order with inline requires.\n// * Next calls are noops. */\n// return <h1>Hi</h1>;\n// }\n//\n// /* Call with arguments attaches the signature to the type: */\n// _s(\n// Hello,\n// 'useState{[foo, setFoo]}(0)',\n// () => [useCustomHook], /* Lazy to avoid triggering inline requires */\n// );\n\nfunction createSignatureFunctionForTransform() {\n {\n var savedType;\n var hasCustomHooks;\n var didCollectHooks = false;\n return function (type, key, forceReset, getCustomHooks) {\n if (typeof key === 'string') {\n // We're in the initial phase that associates signatures\n // with the functions. Note this may be called multiple times\n // in HOC chains like _s(hoc1(_s(hoc2(_s(actualFunction))))).\n if (!savedType) {\n // We're in the innermost call, so this is the actual type.\n savedType = type;\n hasCustomHooks = typeof getCustomHooks === 'function';\n } // Set the signature for all types (even wrappers!) in case\n // they have no signatures of their own. This is to prevent\n // problems like https://github.com/facebook/react/issues/20417.\n\n\n if (type != null && (typeof type === 'function' || typeof type === 'object')) {\n setSignature(type, key, forceReset, getCustomHooks);\n }\n\n return type;\n } else {\n // We're in the _s() call without arguments, which means\n // this is the time to collect custom Hook signatures.\n // Only do this once. This path is hot and runs *inside* every render!\n if (!didCollectHooks && hasCustomHooks) {\n didCollectHooks = true;\n collectCustomHooksForSignature(savedType);\n }\n }\n };\n }\n}\nfunction isLikelyComponentType(type) {\n {\n switch (typeof type) {\n case 'function':\n {\n // First, deal with classes.\n if (type.prototype != null) {\n if (type.prototype.isReactComponent) {\n // React class.\n return true;\n }\n\n var ownNames = Object.getOwnPropertyNames(type.prototype);\n\n if (ownNames.length > 1 || ownNames[0] !== 'constructor') {\n // This looks like a class.\n return false;\n } // eslint-disable-next-line no-proto\n\n\n if (type.prototype.__proto__ !== Object.prototype) {\n // It has a superclass.\n return false;\n } // Pass through.\n // This looks like a regular function with empty prototype.\n\n } // For plain functions and arrows, use name as a heuristic.\n\n\n var name = type.name || type.displayName;\n return typeof name === 'string' && /^[A-Z]/.test(name);\n }\n\n case 'object':\n {\n if (type != null) {\n switch (getProperty(type, '$$typeof')) {\n case REACT_FORWARD_REF_TYPE:\n case REACT_MEMO_TYPE:\n // Definitely React components.\n return true;\n\n default:\n return false;\n }\n }\n\n return false;\n }\n\n default:\n {\n return false;\n }\n }\n }\n}\n\nexports._getMountedRootCount = _getMountedRootCount;\nexports.collectCustomHooksForSignature = collectCustomHooksForSignature;\nexports.createSignatureFunctionForTransform = createSignatureFunctionForTransform;\nexports.findAffectedHostInstances = findAffectedHostInstances;\nexports.getFamilyByID = getFamilyByID;\nexports.getFamilyByType = getFamilyByType;\nexports.hasUnrecoverableErrors = hasUnrecoverableErrors;\nexports.injectIntoGlobalHook = injectIntoGlobalHook;\nexports.isLikelyComponentType = isLikelyComponentType;\nexports.performReactRefresh = performReactRefresh;\nexports.register = register;\nexports.setSignature = setSignature;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-refresh-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-refresh-runtime.development.js');\n}\n","// This needs to run before the renderer initializes.\n\nconst ReactRefreshRuntime = require('react-refresh/runtime');\nReactRefreshRuntime.injectIntoGlobalHook(global);\n\nconst Refresh = {\n performFullRefresh() {\n location.reload();\n },\n\n createSignatureFunctionForTransform: ReactRefreshRuntime.createSignatureFunctionForTransform,\n\n isLikelyComponentType: ReactRefreshRuntime.isLikelyComponentType,\n\n getFamilyByType: ReactRefreshRuntime.getFamilyByType,\n\n register: ReactRefreshRuntime.register,\n\n performReactRefresh() {\n if (ReactRefreshRuntime.hasUnrecoverableErrors()) {\n location.reload();\n return;\n }\n ReactRefreshRuntime.performReactRefresh();\n },\n};\n\n// The metro require polyfill can not have dependencies (applies for all polyfills).\n// Expose `Refresh` by assigning it to global to make it available in the polyfill.\nglobal[(global.__METRO_GLOBAL_PREFIX__ || '') + '__ReactRefresh'] = Refresh;\n","\"use strict\";\n\nvar has = Object.prototype.hasOwnProperty,\n prefix = \"~\";\nfunction Events() {}\nif (Object.create) {\n Events.prototype = Object.create(null);\n if (!new Events().__proto__) prefix = false;\n}\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"The listener must be a function\");\n }\n var listener = new EE(fn, context || emitter, once),\n evt = prefix ? prefix + event : event;\n if (!emitter._events[evt])\n ((emitter._events[evt] = listener), emitter._eventsCount++);\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n return emitter;\n}\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = [],\n events,\n name;\n if (this._eventsCount === 0) return names;\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n return names;\n};\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event,\n handlers = this._events[evt];\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n return ee;\n};\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event,\n listeners = this._events[evt];\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n if (!this._events[evt]) return false;\n var listeners = this._events[evt],\n len = arguments.length,\n args,\n i;\n if (listeners.fn) {\n if (listeners.once)\n this.removeListener(event, listeners.fn, undefined, true);\n switch (len) {\n case 1:\n return (listeners.fn.call(listeners.context), true);\n case 2:\n return (listeners.fn.call(listeners.context, a1), true);\n case 3:\n return (listeners.fn.call(listeners.context, a1, a2), true);\n case 4:\n return (listeners.fn.call(listeners.context, a1, a2, a3), true);\n case 5:\n return (listeners.fn.call(listeners.context, a1, a2, a3, a4), true);\n case 6:\n return (listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true);\n }\n for (i = 1, args = new Array(len - 1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length,\n j;\n for (i = 0; i < length; i++) {\n if (listeners[i].once)\n this.removeListener(event, listeners[i].fn, undefined, true);\n switch (len) {\n case 1:\n listeners[i].fn.call(listeners[i].context);\n break;\n case 2:\n listeners[i].fn.call(listeners[i].context, a1);\n break;\n case 3:\n listeners[i].fn.call(listeners[i].context, a1, a2);\n break;\n case 4:\n listeners[i].fn.call(listeners[i].context, a1, a2, a3);\n break;\n default:\n if (!args)\n for (j = 1, args = new Array(len - 1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n return true;\n};\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\nEventEmitter.prototype.removeListener = function removeListener(\n event,\n fn,\n context,\n once,\n) {\n var evt = prefix ? prefix + event : event;\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n var listeners = this._events[evt];\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n if (events.length)\n this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n return this;\n};\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n return this;\n};\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\nEventEmitter.prefixed = prefix;\nEventEmitter.EventEmitter = EventEmitter;\nif (\"undefined\" !== typeof module) {\n module.exports = EventEmitter;\n}\n","\"use strict\";\n\nconst EventEmitter = require(\"./vendor/eventemitter3\");\nconst inject = ({ module: [id, code], sourceURL }) => {\n if (global.globalEvalWithSourceUrl) {\n global.globalEvalWithSourceUrl(code, sourceURL);\n } else {\n eval(code);\n }\n};\nconst injectUpdate = (update) => {\n update.added.forEach(inject);\n update.modified.forEach(inject);\n};\nclass HMRClient extends EventEmitter {\n _isEnabled = false;\n _pendingUpdate = null;\n _queue = [];\n _state = \"opening\";\n constructor(url) {\n super();\n this._ws = new global.WebSocket(url);\n this._ws.onopen = () => {\n this._state = \"open\";\n this.emit(\"open\");\n this._flushQueue();\n };\n this._ws.onerror = (error) => {\n this.emit(\"connection-error\", error);\n };\n this._ws.onclose = (closeEvent) => {\n this._state = \"closed\";\n this.emit(\"close\", closeEvent);\n };\n this._ws.onmessage = (message) => {\n const data = JSON.parse(String(message.data));\n switch (data.type) {\n case \"bundle-registered\":\n this.emit(\"bundle-registered\");\n break;\n case \"update-start\":\n this.emit(\"update-start\", data.body);\n break;\n case \"update\":\n this.emit(\"update\", data.body);\n break;\n case \"update-done\":\n this.emit(\"update-done\");\n break;\n case \"error\":\n this.emit(\"error\", data.body);\n break;\n default:\n this.emit(\"error\", {\n type: \"unknown-message\",\n message: data,\n });\n }\n };\n this.on(\"update\", (update) => {\n if (this._isEnabled) {\n injectUpdate(update);\n } else if (this._pendingUpdate == null) {\n this._pendingUpdate = update;\n } else {\n this._pendingUpdate = mergeUpdates(this._pendingUpdate, update);\n }\n });\n }\n close() {\n this._ws.close();\n }\n send(message) {\n switch (this._state) {\n case \"opening\":\n this._queue.push(message);\n break;\n case \"open\":\n this._ws.send(message);\n break;\n case \"closed\":\n break;\n default:\n throw new Error(\"[WebSocketHMRClient] Unknown state: \" + this._state);\n }\n }\n _flushQueue() {\n this._queue.forEach((message) => this.send(message));\n this._queue.length = 0;\n }\n enable() {\n this._isEnabled = true;\n const update = this._pendingUpdate;\n this._pendingUpdate = null;\n if (update != null) {\n injectUpdate(update);\n }\n }\n disable() {\n this._isEnabled = false;\n }\n isEnabled() {\n return this._isEnabled;\n }\n hasPendingUpdates() {\n return this._pendingUpdate != null;\n }\n}\nfunction mergeUpdates(base, next) {\n const addedIDs = new Set();\n const deletedIDs = new Set();\n const moduleMap = new Map();\n applyUpdateLocally(base);\n applyUpdateLocally(next);\n function applyUpdateLocally(update) {\n update.deleted.forEach((id) => {\n if (addedIDs.has(id)) {\n addedIDs.delete(id);\n } else {\n deletedIDs.add(id);\n }\n moduleMap.delete(id);\n });\n update.added.forEach((item) => {\n const id = item.module[0];\n if (deletedIDs.has(id)) {\n deletedIDs.delete(id);\n } else {\n addedIDs.add(id);\n }\n moduleMap.set(id, item);\n });\n update.modified.forEach((item) => {\n const id = item.module[0];\n moduleMap.set(id, item);\n });\n }\n const result = {\n isInitialUpdate: next.isInitialUpdate,\n revisionId: next.revisionId,\n added: [],\n modified: [],\n deleted: [],\n };\n deletedIDs.forEach((id) => {\n result.deleted.push(id);\n });\n moduleMap.forEach((item, id) => {\n if (deletedIDs.has(id)) {\n return;\n }\n if (addedIDs.has(id)) {\n result.added.push(item);\n } else {\n result.modified.push(item);\n }\n });\n return result;\n}\nmodule.exports = HMRClient;\n","module.exports = require(\"metro-runtime/src/modules/HMRClient.js\");","'use strict';\n\nconst ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\toverline: [53, 55],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\n\t\t\t// Bright color\n\t\t\tblackBright: [90, 39],\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Alias bright black as gray (and grey)\n\tstyles.color.gray = styles.color.blackBright;\n\tstyles.bgColor.bgGray = styles.bgColor.bgBlackBright;\n\tstyles.color.grey = styles.color.blackBright;\n\tstyles.bgColor.bgGrey = styles.bgColor.bgBlackBright;\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue: (red, green, blue) => {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16 +\n\t\t\t\t\t(36 * Math.round(red / 255 * 5)) +\n\t\t\t\t\t(6 * Math.round(green / 255 * 5)) +\n\t\t\t\t\tMath.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue: hex => {\n\t\t\t\tconst matches = /(?<colorString>[a-f\\d]{6}|[a-f\\d]{3})/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet {colorString} = matches.groups;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = colorString.split('').map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false\n\t\t}\n\t});\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.printIteratorEntries = printIteratorEntries;\nexports.printIteratorValues = printIteratorValues;\nexports.printListItems = printListItems;\nexports.printObjectProperties = printObjectProperties;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nconst getKeysOfEnumerableProperties = (object, compareKeys) => {\n const rawKeys = Object.keys(object);\n const keys = compareKeys !== null ? rawKeys.sort(compareKeys) : rawKeys;\n if (Object.getOwnPropertySymbols) {\n Object.getOwnPropertySymbols(object).forEach(symbol => {\n if (Object.getOwnPropertyDescriptor(object, symbol).enumerable) {\n keys.push(symbol);\n }\n });\n }\n return keys;\n};\n\n/**\n * Return entries (for example, of a map)\n * with spacing, indentation, and comma\n * without surrounding punctuation (for example, braces)\n */\nfunction printIteratorEntries(\n iterator,\n config,\n indentation,\n depth,\n refs,\n printer,\n // Too bad, so sad that separator for ECMAScript Map has been ' => '\n // What a distracting diff if you change a data structure to/from\n // ECMAScript Object or Immutable.Map/OrderedMap which use the default.\n separator = ': '\n) {\n let result = '';\n let width = 0;\n let current = iterator.next();\n if (!current.done) {\n result += config.spacingOuter;\n const indentationNext = indentation + config.indent;\n while (!current.done) {\n result += indentationNext;\n if (width++ === config.maxWidth) {\n result += '…';\n break;\n }\n const name = printer(\n current.value[0],\n config,\n indentationNext,\n depth,\n refs\n );\n const value = printer(\n current.value[1],\n config,\n indentationNext,\n depth,\n refs\n );\n result += name + separator + value;\n current = iterator.next();\n if (!current.done) {\n result += `,${config.spacingInner}`;\n } else if (!config.min) {\n result += ',';\n }\n }\n result += config.spacingOuter + indentation;\n }\n return result;\n}\n\n/**\n * Return values (for example, of a set)\n * with spacing, indentation, and comma\n * without surrounding punctuation (braces or brackets)\n */\nfunction printIteratorValues(\n iterator,\n config,\n indentation,\n depth,\n refs,\n printer\n) {\n let result = '';\n let width = 0;\n let current = iterator.next();\n if (!current.done) {\n result += config.spacingOuter;\n const indentationNext = indentation + config.indent;\n while (!current.done) {\n result += indentationNext;\n if (width++ === config.maxWidth) {\n result += '…';\n break;\n }\n result += printer(current.value, config, indentationNext, depth, refs);\n current = iterator.next();\n if (!current.done) {\n result += `,${config.spacingInner}`;\n } else if (!config.min) {\n result += ',';\n }\n }\n result += config.spacingOuter + indentation;\n }\n return result;\n}\n\n/**\n * Return items (for example, of an array)\n * with spacing, indentation, and comma\n * without surrounding punctuation (for example, brackets)\n **/\nfunction printListItems(list, config, indentation, depth, refs, printer) {\n let result = '';\n if (list.length) {\n result += config.spacingOuter;\n const indentationNext = indentation + config.indent;\n for (let i = 0; i < list.length; i++) {\n result += indentationNext;\n if (i === config.maxWidth) {\n result += '…';\n break;\n }\n if (i in list) {\n result += printer(list[i], config, indentationNext, depth, refs);\n }\n if (i < list.length - 1) {\n result += `,${config.spacingInner}`;\n } else if (!config.min) {\n result += ',';\n }\n }\n result += config.spacingOuter + indentation;\n }\n return result;\n}\n\n/**\n * Return properties of an object\n * with spacing, indentation, and comma\n * without surrounding punctuation (for example, braces)\n */\nfunction printObjectProperties(val, config, indentation, depth, refs, printer) {\n let result = '';\n const keys = getKeysOfEnumerableProperties(val, config.compareKeys);\n if (keys.length) {\n result += config.spacingOuter;\n const indentationNext = indentation + config.indent;\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const name = printer(key, config, indentationNext, depth, refs);\n const value = printer(val[key], config, indentationNext, depth, refs);\n result += `${indentationNext + name}: ${value}`;\n if (i < keys.length - 1) {\n result += `,${config.spacingInner}`;\n } else if (!config.min) {\n result += ',';\n }\n }\n result += config.spacingOuter + indentation;\n }\n return result;\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _collections = require('../collections');\nvar Symbol = globalThis['jest-symbol-do-not-touch'] || globalThis.Symbol;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nconst asymmetricMatcher =\n typeof Symbol === 'function' && Symbol.for\n ? Symbol.for('jest.asymmetricMatcher')\n : 0x1357a5;\nconst SPACE = ' ';\nconst serialize = (val, config, indentation, depth, refs, printer) => {\n const stringedValue = val.toString();\n if (\n stringedValue === 'ArrayContaining' ||\n stringedValue === 'ArrayNotContaining'\n ) {\n if (++depth > config.maxDepth) {\n return `[${stringedValue}]`;\n }\n return `${stringedValue + SPACE}[${(0, _collections.printListItems)(\n val.sample,\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`;\n }\n if (\n stringedValue === 'ObjectContaining' ||\n stringedValue === 'ObjectNotContaining'\n ) {\n if (++depth > config.maxDepth) {\n return `[${stringedValue}]`;\n }\n return `${stringedValue + SPACE}{${(0, _collections.printObjectProperties)(\n val.sample,\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n }\n if (\n stringedValue === 'StringMatching' ||\n stringedValue === 'StringNotMatching'\n ) {\n return (\n stringedValue +\n SPACE +\n printer(val.sample, config, indentation, depth, refs)\n );\n }\n if (\n stringedValue === 'StringContaining' ||\n stringedValue === 'StringNotContaining'\n ) {\n return (\n stringedValue +\n SPACE +\n printer(val.sample, config, indentation, depth, refs)\n );\n }\n if (typeof val.toAsymmetricMatcher !== 'function') {\n throw new Error(\n `Asymmetric matcher ${val.constructor.name} does not implement toAsymmetricMatcher()`\n );\n }\n return val.toAsymmetricMatcher();\n};\nexports.serialize = serialize;\nconst test = val => val && val.$$typeof === asymmetricMatcher;\nexports.test = test;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _collections = require('../collections');\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nconst SPACE = ' ';\nconst OBJECT_NAMES = ['DOMStringMap', 'NamedNodeMap'];\nconst ARRAY_REGEXP = /^(HTML\\w*Collection|NodeList)$/;\nconst testName = name =>\n OBJECT_NAMES.indexOf(name) !== -1 || ARRAY_REGEXP.test(name);\nconst test = val =>\n val &&\n val.constructor &&\n !!val.constructor.name &&\n testName(val.constructor.name);\nexports.test = test;\nconst isNamedNodeMap = collection =>\n collection.constructor.name === 'NamedNodeMap';\nconst serialize = (collection, config, indentation, depth, refs, printer) => {\n const name = collection.constructor.name;\n if (++depth > config.maxDepth) {\n return `[${name}]`;\n }\n return (\n (config.min ? '' : name + SPACE) +\n (OBJECT_NAMES.indexOf(name) !== -1\n ? `{${(0, _collections.printObjectProperties)(\n isNamedNodeMap(collection)\n ? Array.from(collection).reduce((props, attribute) => {\n props[attribute.name] = attribute.value;\n return props;\n }, {})\n : {\n ...collection\n },\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`\n : `[${(0, _collections.printListItems)(\n Array.from(collection),\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`)\n );\n};\nexports.serialize = serialize;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.default = escapeHTML;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction escapeHTML(str) {\n return str.replace(/</g, '<').replace(/>/g, '>');\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.printText =\n exports.printProps =\n exports.printElementAsLeaf =\n exports.printElement =\n exports.printComment =\n exports.printChildren =\n void 0;\nvar _escapeHTML = _interopRequireDefault(require('./escapeHTML'));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// Return empty string if keys is empty.\nconst printProps = (keys, props, config, indentation, depth, refs, printer) => {\n const indentationNext = indentation + config.indent;\n const colors = config.colors;\n return keys\n .map(key => {\n const value = props[key];\n let printed = printer(value, config, indentationNext, depth, refs);\n if (typeof value !== 'string') {\n if (printed.indexOf('\\n') !== -1) {\n printed =\n config.spacingOuter +\n indentationNext +\n printed +\n config.spacingOuter +\n indentation;\n }\n printed = `{${printed}}`;\n }\n return `${\n config.spacingInner +\n indentation +\n colors.prop.open +\n key +\n colors.prop.close\n }=${colors.value.open}${printed}${colors.value.close}`;\n })\n .join('');\n};\n\n// Return empty string if children is empty.\nexports.printProps = printProps;\nconst printChildren = (children, config, indentation, depth, refs, printer) =>\n children\n .map(\n child =>\n config.spacingOuter +\n indentation +\n (typeof child === 'string'\n ? printText(child, config)\n : printer(child, config, indentation, depth, refs))\n )\n .join('');\nexports.printChildren = printChildren;\nconst printText = (text, config) => {\n const contentColor = config.colors.content;\n return (\n contentColor.open + (0, _escapeHTML.default)(text) + contentColor.close\n );\n};\nexports.printText = printText;\nconst printComment = (comment, config) => {\n const commentColor = config.colors.comment;\n return `${commentColor.open}<!--${(0, _escapeHTML.default)(comment)}-->${\n commentColor.close\n }`;\n};\n\n// Separate the functions to format props, children, and element,\n// so a plugin could override a particular function, if needed.\n// Too bad, so sad: the traditional (but unnecessary) space\n// in a self-closing tagColor requires a second test of printedProps.\nexports.printComment = printComment;\nconst printElement = (\n type,\n printedProps,\n printedChildren,\n config,\n indentation\n) => {\n const tagColor = config.colors.tag;\n return `${tagColor.open}<${type}${\n printedProps &&\n tagColor.close +\n printedProps +\n config.spacingOuter +\n indentation +\n tagColor.open\n }${\n printedChildren\n ? `>${tagColor.close}${printedChildren}${config.spacingOuter}${indentation}${tagColor.open}</${type}`\n : `${printedProps && !config.min ? '' : ' '}/`\n }>${tagColor.close}`;\n};\nexports.printElement = printElement;\nconst printElementAsLeaf = (type, config) => {\n const tagColor = config.colors.tag;\n return `${tagColor.open}<${type}${tagColor.close} …${tagColor.open} />${tagColor.close}`;\n};\nexports.printElementAsLeaf = printElementAsLeaf;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _markup = require('./lib/markup');\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nconst ELEMENT_NODE = 1;\nconst TEXT_NODE = 3;\nconst COMMENT_NODE = 8;\nconst FRAGMENT_NODE = 11;\nconst ELEMENT_REGEXP = /^((HTML|SVG)\\w*)?Element$/;\nconst testHasAttribute = val => {\n try {\n return typeof val.hasAttribute === 'function' && val.hasAttribute('is');\n } catch {\n return false;\n }\n};\nconst testNode = val => {\n const constructorName = val.constructor.name;\n const {nodeType, tagName} = val;\n const isCustomElement =\n (typeof tagName === 'string' && tagName.includes('-')) ||\n testHasAttribute(val);\n return (\n (nodeType === ELEMENT_NODE &&\n (ELEMENT_REGEXP.test(constructorName) || isCustomElement)) ||\n (nodeType === TEXT_NODE && constructorName === 'Text') ||\n (nodeType === COMMENT_NODE && constructorName === 'Comment') ||\n (nodeType === FRAGMENT_NODE && constructorName === 'DocumentFragment')\n );\n};\nconst test = val => val?.constructor?.name && testNode(val);\nexports.test = test;\nfunction nodeIsText(node) {\n return node.nodeType === TEXT_NODE;\n}\nfunction nodeIsComment(node) {\n return node.nodeType === COMMENT_NODE;\n}\nfunction nodeIsFragment(node) {\n return node.nodeType === FRAGMENT_NODE;\n}\nconst serialize = (node, config, indentation, depth, refs, printer) => {\n if (nodeIsText(node)) {\n return (0, _markup.printText)(node.data, config);\n }\n if (nodeIsComment(node)) {\n return (0, _markup.printComment)(node.data, config);\n }\n const type = nodeIsFragment(node)\n ? 'DocumentFragment'\n : node.tagName.toLowerCase();\n if (++depth > config.maxDepth) {\n return (0, _markup.printElementAsLeaf)(type, config);\n }\n return (0, _markup.printElement)(\n type,\n (0, _markup.printProps)(\n nodeIsFragment(node)\n ? []\n : Array.from(node.attributes, attr => attr.name).sort(),\n nodeIsFragment(node)\n ? {}\n : Array.from(node.attributes).reduce((props, attribute) => {\n props[attribute.name] = attribute.value;\n return props;\n }, {}),\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ),\n (0, _markup.printChildren)(\n Array.prototype.slice.call(node.childNodes || node.children),\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ),\n config,\n indentation\n );\n};\nexports.serialize = serialize;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _collections = require('../collections');\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// SENTINEL constants are from https://github.com/facebook/immutable-js\nconst IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\nconst IS_LIST_SENTINEL = '@@__IMMUTABLE_LIST__@@';\nconst IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\nconst IS_MAP_SENTINEL = '@@__IMMUTABLE_MAP__@@';\nconst IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\nconst IS_RECORD_SENTINEL = '@@__IMMUTABLE_RECORD__@@'; // immutable v4\nconst IS_SEQ_SENTINEL = '@@__IMMUTABLE_SEQ__@@';\nconst IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@';\nconst IS_STACK_SENTINEL = '@@__IMMUTABLE_STACK__@@';\nconst getImmutableName = name => `Immutable.${name}`;\nconst printAsLeaf = name => `[${name}]`;\nconst SPACE = ' ';\nconst LAZY = '…'; // Seq is lazy if it calls a method like filter\n\nconst printImmutableEntries = (\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n type\n) =>\n ++depth > config.maxDepth\n ? printAsLeaf(getImmutableName(type))\n : `${getImmutableName(type) + SPACE}{${(0,\n _collections.printIteratorEntries)(\n val.entries(),\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n\n// Record has an entries method because it is a collection in immutable v3.\n// Return an iterator for Immutable Record from version v3 or v4.\nfunction getRecordEntries(val) {\n let i = 0;\n return {\n next() {\n if (i < val._keys.length) {\n const key = val._keys[i++];\n return {\n done: false,\n value: [key, val.get(key)]\n };\n }\n return {\n done: true,\n value: undefined\n };\n }\n };\n}\nconst printImmutableRecord = (\n val,\n config,\n indentation,\n depth,\n refs,\n printer\n) => {\n // _name property is defined only for an Immutable Record instance\n // which was constructed with a second optional descriptive name arg\n const name = getImmutableName(val._name || 'Record');\n return ++depth > config.maxDepth\n ? printAsLeaf(name)\n : `${name + SPACE}{${(0, _collections.printIteratorEntries)(\n getRecordEntries(val),\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n};\nconst printImmutableSeq = (val, config, indentation, depth, refs, printer) => {\n const name = getImmutableName('Seq');\n if (++depth > config.maxDepth) {\n return printAsLeaf(name);\n }\n if (val[IS_KEYED_SENTINEL]) {\n return `${name + SPACE}{${\n // from Immutable collection of entries or from ECMAScript object\n val._iter || val._object\n ? (0, _collections.printIteratorEntries)(\n val.entries(),\n config,\n indentation,\n depth,\n refs,\n printer\n )\n : LAZY\n }}`;\n }\n return `${name + SPACE}[${\n val._iter ||\n // from Immutable collection of values\n val._array ||\n // from ECMAScript array\n val._collection ||\n // from ECMAScript collection in immutable v4\n val._iterable // from ECMAScript collection in immutable v3\n ? (0, _collections.printIteratorValues)(\n val.values(),\n config,\n indentation,\n depth,\n refs,\n printer\n )\n : LAZY\n }]`;\n};\nconst printImmutableValues = (\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n type\n) =>\n ++depth > config.maxDepth\n ? printAsLeaf(getImmutableName(type))\n : `${getImmutableName(type) + SPACE}[${(0,\n _collections.printIteratorValues)(\n val.values(),\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`;\nconst serialize = (val, config, indentation, depth, refs, printer) => {\n if (val[IS_MAP_SENTINEL]) {\n return printImmutableEntries(\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n val[IS_ORDERED_SENTINEL] ? 'OrderedMap' : 'Map'\n );\n }\n if (val[IS_LIST_SENTINEL]) {\n return printImmutableValues(\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n 'List'\n );\n }\n if (val[IS_SET_SENTINEL]) {\n return printImmutableValues(\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n val[IS_ORDERED_SENTINEL] ? 'OrderedSet' : 'Set'\n );\n }\n if (val[IS_STACK_SENTINEL]) {\n return printImmutableValues(\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n 'Stack'\n );\n }\n if (val[IS_SEQ_SENTINEL]) {\n return printImmutableSeq(val, config, indentation, depth, refs, printer);\n }\n\n // For compatibility with immutable v3 and v4, let record be the default.\n return printImmutableRecord(val, config, indentation, depth, refs, printer);\n};\n\n// Explicitly comparing sentinel properties to true avoids false positive\n// when mock identity-obj-proxy returns the key as the value for any key.\nexports.serialize = serialize;\nconst test = val =>\n val &&\n (val[IS_ITERABLE_SENTINEL] === true || val[IS_RECORD_SENTINEL] === true);\nexports.test = test;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n","/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n","/**\n * @license React\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_SERVER_CONTEXT_TYPE = Symbol.for('react.server_context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar REACT_MODULE_REFERENCE;\n\n{\n REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n if (typeof type === 'string' || typeof type === 'function') {\n return true;\n } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) {\n return true;\n }\n\n if (typeof type === 'object' && type !== null) {\n if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n // types supported by any Flight configuration anywhere since\n // we don't know which Flight build this will end up being used\n // with.\n type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n case REACT_SUSPENSE_LIST_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_SERVER_CONTEXT_TYPE:\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n}\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar SuspenseList = REACT_SUSPENSE_LIST_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false;\nvar hasWarnedAboutDeprecatedIsConcurrentMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 18+.');\n }\n }\n\n return false;\n}\nfunction isConcurrentMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsConcurrentMode) {\n hasWarnedAboutDeprecatedIsConcurrentMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isConcurrentMode() alias has been deprecated, ' + 'and will be removed in React 18+.');\n }\n }\n\n return false;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\nfunction isSuspenseList(object) {\n return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;\n}\n\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.SuspenseList = SuspenseList;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isSuspenseList = isSuspenseList;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar ReactIs = _interopRequireWildcard(require('react-is'));\nvar _markup = require('./lib/markup');\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== 'function') return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function (nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interopRequireWildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || (typeof obj !== 'object' && typeof obj !== 'function')) {\n return {default: obj};\n }\n var cache = _getRequireWildcardCache(nodeInterop);\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {};\n var hasPropertyDescriptor =\n Object.defineProperty && Object.getOwnPropertyDescriptor;\n for (var key in obj) {\n if (key !== 'default' && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor\n ? Object.getOwnPropertyDescriptor(obj, key)\n : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// Given element.props.children, or subtree during recursive traversal,\n// return flattened array of children.\nconst getChildren = (arg, children = []) => {\n if (Array.isArray(arg)) {\n arg.forEach(item => {\n getChildren(item, children);\n });\n } else if (arg != null && arg !== false) {\n children.push(arg);\n }\n return children;\n};\nconst getType = element => {\n const type = element.type;\n if (typeof type === 'string') {\n return type;\n }\n if (typeof type === 'function') {\n return type.displayName || type.name || 'Unknown';\n }\n if (ReactIs.isFragment(element)) {\n return 'React.Fragment';\n }\n if (ReactIs.isSuspense(element)) {\n return 'React.Suspense';\n }\n if (typeof type === 'object' && type !== null) {\n if (ReactIs.isContextProvider(element)) {\n return 'Context.Provider';\n }\n if (ReactIs.isContextConsumer(element)) {\n return 'Context.Consumer';\n }\n if (ReactIs.isForwardRef(element)) {\n if (type.displayName) {\n return type.displayName;\n }\n const functionName = type.render.displayName || type.render.name || '';\n return functionName !== '' ? `ForwardRef(${functionName})` : 'ForwardRef';\n }\n if (ReactIs.isMemo(element)) {\n const functionName =\n type.displayName || type.type.displayName || type.type.name || '';\n return functionName !== '' ? `Memo(${functionName})` : 'Memo';\n }\n }\n return 'UNDEFINED';\n};\nconst getPropKeys = element => {\n const {props} = element;\n return Object.keys(props)\n .filter(key => key !== 'children' && props[key] !== undefined)\n .sort();\n};\nconst serialize = (element, config, indentation, depth, refs, printer) =>\n ++depth > config.maxDepth\n ? (0, _markup.printElementAsLeaf)(getType(element), config)\n : (0, _markup.printElement)(\n getType(element),\n (0, _markup.printProps)(\n getPropKeys(element),\n element.props,\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ),\n (0, _markup.printChildren)(\n getChildren(element.props.children),\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ),\n config,\n indentation\n );\nexports.serialize = serialize;\nconst test = val => val != null && ReactIs.isElement(val);\nexports.test = test;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _markup = require('./lib/markup');\nvar Symbol = globalThis['jest-symbol-do-not-touch'] || globalThis.Symbol;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n// Child can be `number` in Stack renderer but not in Fiber renderer.\n\nconst testSymbol =\n typeof Symbol === 'function' && Symbol.for\n ? Symbol.for('react.test.json')\n : 0xea71357;\nconst getPropKeys = object => {\n const {props} = object;\n return props\n ? Object.keys(props)\n .filter(key => props[key] !== undefined)\n .sort()\n : [];\n};\nconst serialize = (object, config, indentation, depth, refs, printer) =>\n ++depth > config.maxDepth\n ? (0, _markup.printElementAsLeaf)(object.type, config)\n : (0, _markup.printElement)(\n object.type,\n object.props\n ? (0, _markup.printProps)(\n getPropKeys(object),\n object.props,\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n )\n : '',\n object.children\n ? (0, _markup.printChildren)(\n object.children,\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n )\n : '',\n config,\n indentation\n );\nexports.serialize = serialize;\nconst test = val => val && val.$$typeof === testSymbol;\nexports.test = test;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.default = exports.DEFAULT_OPTIONS = void 0;\nexports.format = format;\nexports.plugins = void 0;\nvar _ansiStyles = _interopRequireDefault(require('ansi-styles'));\nvar _collections = require('./collections');\nvar _AsymmetricMatcher = _interopRequireDefault(\n require('./plugins/AsymmetricMatcher')\n);\nvar _DOMCollection = _interopRequireDefault(require('./plugins/DOMCollection'));\nvar _DOMElement = _interopRequireDefault(require('./plugins/DOMElement'));\nvar _Immutable = _interopRequireDefault(require('./plugins/Immutable'));\nvar _ReactElement = _interopRequireDefault(require('./plugins/ReactElement'));\nvar _ReactTestComponent = _interopRequireDefault(\n require('./plugins/ReactTestComponent')\n);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/* eslint-disable local/ban-types-eventually */\n\nconst toString = Object.prototype.toString;\nconst toISOString = Date.prototype.toISOString;\nconst errorToString = Error.prototype.toString;\nconst regExpToString = RegExp.prototype.toString;\n\n/**\n * Explicitly comparing typeof constructor to function avoids undefined as name\n * when mock identity-obj-proxy returns the key as the value for any key.\n */\nconst getConstructorName = val =>\n (typeof val.constructor === 'function' && val.constructor.name) || 'Object';\n\n/* global window */\n/** Is val is equal to global window object? Works even if it does not exist :) */\nconst isWindow = val => typeof window !== 'undefined' && val === window;\nconst SYMBOL_REGEXP = /^Symbol\\((.*)\\)(.*)$/;\nconst NEWLINE_REGEXP = /\\n/gi;\nclass PrettyFormatPluginError extends Error {\n constructor(message, stack) {\n super(message);\n this.stack = stack;\n this.name = this.constructor.name;\n }\n}\nfunction isToStringedArrayType(toStringed) {\n return (\n toStringed === '[object Array]' ||\n toStringed === '[object ArrayBuffer]' ||\n toStringed === '[object DataView]' ||\n toStringed === '[object Float32Array]' ||\n toStringed === '[object Float64Array]' ||\n toStringed === '[object Int8Array]' ||\n toStringed === '[object Int16Array]' ||\n toStringed === '[object Int32Array]' ||\n toStringed === '[object Uint8Array]' ||\n toStringed === '[object Uint8ClampedArray]' ||\n toStringed === '[object Uint16Array]' ||\n toStringed === '[object Uint32Array]'\n );\n}\nfunction printNumber(val) {\n return Object.is(val, -0) ? '-0' : String(val);\n}\nfunction printBigInt(val) {\n return String(`${val}n`);\n}\nfunction printFunction(val, printFunctionName) {\n if (!printFunctionName) {\n return '[Function]';\n }\n return `[Function ${val.name || 'anonymous'}]`;\n}\nfunction printSymbol(val) {\n return String(val).replace(SYMBOL_REGEXP, 'Symbol($1)');\n}\nfunction printError(val) {\n return `[${errorToString.call(val)}]`;\n}\n\n/**\n * The first port of call for printing an object, handles most of the\n * data-types in JS.\n */\nfunction printBasicValue(val, printFunctionName, escapeRegex, escapeString) {\n if (val === true || val === false) {\n return `${val}`;\n }\n if (val === undefined) {\n return 'undefined';\n }\n if (val === null) {\n return 'null';\n }\n const typeOf = typeof val;\n if (typeOf === 'number') {\n return printNumber(val);\n }\n if (typeOf === 'bigint') {\n return printBigInt(val);\n }\n if (typeOf === 'string') {\n if (escapeString) {\n return `\"${val.replace(/\"|\\\\/g, '\\\\$&')}\"`;\n }\n return `\"${val}\"`;\n }\n if (typeOf === 'function') {\n return printFunction(val, printFunctionName);\n }\n if (typeOf === 'symbol') {\n return printSymbol(val);\n }\n const toStringed = toString.call(val);\n if (toStringed === '[object WeakMap]') {\n return 'WeakMap {}';\n }\n if (toStringed === '[object WeakSet]') {\n return 'WeakSet {}';\n }\n if (\n toStringed === '[object Function]' ||\n toStringed === '[object GeneratorFunction]'\n ) {\n return printFunction(val, printFunctionName);\n }\n if (toStringed === '[object Symbol]') {\n return printSymbol(val);\n }\n if (toStringed === '[object Date]') {\n return isNaN(+val) ? 'Date { NaN }' : toISOString.call(val);\n }\n if (toStringed === '[object Error]') {\n return printError(val);\n }\n if (toStringed === '[object RegExp]') {\n if (escapeRegex) {\n // https://github.com/benjamingr/RegExp.escape/blob/main/polyfill.js\n return regExpToString.call(val).replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n return regExpToString.call(val);\n }\n if (val instanceof Error) {\n return printError(val);\n }\n return null;\n}\n\n/**\n * Handles more complex objects ( such as objects with circular references.\n * maps and sets etc )\n */\nfunction printComplexValue(\n val,\n config,\n indentation,\n depth,\n refs,\n hasCalledToJSON\n) {\n if (refs.indexOf(val) !== -1) {\n return '[Circular]';\n }\n refs = refs.slice();\n refs.push(val);\n const hitMaxDepth = ++depth > config.maxDepth;\n const min = config.min;\n if (\n config.callToJSON &&\n !hitMaxDepth &&\n val.toJSON &&\n typeof val.toJSON === 'function' &&\n !hasCalledToJSON\n ) {\n return printer(val.toJSON(), config, indentation, depth, refs, true);\n }\n const toStringed = toString.call(val);\n if (toStringed === '[object Arguments]') {\n return hitMaxDepth\n ? '[Arguments]'\n : `${min ? '' : 'Arguments '}[${(0, _collections.printListItems)(\n val,\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`;\n }\n if (isToStringedArrayType(toStringed)) {\n return hitMaxDepth\n ? `[${val.constructor.name}]`\n : `${\n min\n ? ''\n : !config.printBasicPrototype && val.constructor.name === 'Array'\n ? ''\n : `${val.constructor.name} `\n }[${(0, _collections.printListItems)(\n val,\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`;\n }\n if (toStringed === '[object Map]') {\n return hitMaxDepth\n ? '[Map]'\n : `Map {${(0, _collections.printIteratorEntries)(\n val.entries(),\n config,\n indentation,\n depth,\n refs,\n printer,\n ' => '\n )}}`;\n }\n if (toStringed === '[object Set]') {\n return hitMaxDepth\n ? '[Set]'\n : `Set {${(0, _collections.printIteratorValues)(\n val.values(),\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n }\n\n // Avoid failure to serialize global window object in jsdom test environment.\n // For example, not even relevant if window is prop of React element.\n return hitMaxDepth || isWindow(val)\n ? `[${getConstructorName(val)}]`\n : `${\n min\n ? ''\n : !config.printBasicPrototype && getConstructorName(val) === 'Object'\n ? ''\n : `${getConstructorName(val)} `\n }{${(0, _collections.printObjectProperties)(\n val,\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n}\nfunction isNewPlugin(plugin) {\n return plugin.serialize != null;\n}\nfunction printPlugin(plugin, val, config, indentation, depth, refs) {\n let printed;\n try {\n printed = isNewPlugin(plugin)\n ? plugin.serialize(val, config, indentation, depth, refs, printer)\n : plugin.print(\n val,\n valChild => printer(valChild, config, indentation, depth, refs),\n str => {\n const indentationNext = indentation + config.indent;\n return (\n indentationNext +\n str.replace(NEWLINE_REGEXP, `\\n${indentationNext}`)\n );\n },\n {\n edgeSpacing: config.spacingOuter,\n min: config.min,\n spacing: config.spacingInner\n },\n config.colors\n );\n } catch (error) {\n throw new PrettyFormatPluginError(error.message, error.stack);\n }\n if (typeof printed !== 'string') {\n throw new Error(\n `pretty-format: Plugin must return type \"string\" but instead returned \"${typeof printed}\".`\n );\n }\n return printed;\n}\nfunction findPlugin(plugins, val) {\n for (let p = 0; p < plugins.length; p++) {\n try {\n if (plugins[p].test(val)) {\n return plugins[p];\n }\n } catch (error) {\n throw new PrettyFormatPluginError(error.message, error.stack);\n }\n }\n return null;\n}\nfunction printer(val, config, indentation, depth, refs, hasCalledToJSON) {\n const plugin = findPlugin(config.plugins, val);\n if (plugin !== null) {\n return printPlugin(plugin, val, config, indentation, depth, refs);\n }\n const basicResult = printBasicValue(\n val,\n config.printFunctionName,\n config.escapeRegex,\n config.escapeString\n );\n if (basicResult !== null) {\n return basicResult;\n }\n return printComplexValue(\n val,\n config,\n indentation,\n depth,\n refs,\n hasCalledToJSON\n );\n}\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green'\n};\nconst DEFAULT_THEME_KEYS = Object.keys(DEFAULT_THEME);\n\n// could be replaced by `satisfies` operator in the future: https://github.com/microsoft/TypeScript/issues/47920\nconst toOptionsSubtype = options => options;\nconst DEFAULT_OPTIONS = toOptionsSubtype({\n callToJSON: true,\n compareKeys: undefined,\n escapeRegex: false,\n escapeString: true,\n highlight: false,\n indent: 2,\n maxDepth: Infinity,\n maxWidth: Infinity,\n min: false,\n plugins: [],\n printBasicPrototype: true,\n printFunctionName: true,\n theme: DEFAULT_THEME\n});\nexports.DEFAULT_OPTIONS = DEFAULT_OPTIONS;\nfunction validateOptions(options) {\n Object.keys(options).forEach(key => {\n if (!Object.prototype.hasOwnProperty.call(DEFAULT_OPTIONS, key)) {\n throw new Error(`pretty-format: Unknown option \"${key}\".`);\n }\n });\n if (options.min && options.indent !== undefined && options.indent !== 0) {\n throw new Error(\n 'pretty-format: Options \"min\" and \"indent\" cannot be used together.'\n );\n }\n if (options.theme !== undefined) {\n if (options.theme === null) {\n throw new Error('pretty-format: Option \"theme\" must not be null.');\n }\n if (typeof options.theme !== 'object') {\n throw new Error(\n `pretty-format: Option \"theme\" must be of type \"object\" but instead received \"${typeof options.theme}\".`\n );\n }\n }\n}\nconst getColorsHighlight = options =>\n DEFAULT_THEME_KEYS.reduce((colors, key) => {\n const value =\n options.theme && options.theme[key] !== undefined\n ? options.theme[key]\n : DEFAULT_THEME[key];\n const color = value && _ansiStyles.default[value];\n if (\n color &&\n typeof color.close === 'string' &&\n typeof color.open === 'string'\n ) {\n colors[key] = color;\n } else {\n throw new Error(\n `pretty-format: Option \"theme\" has a key \"${key}\" whose value \"${value}\" is undefined in ansi-styles.`\n );\n }\n return colors;\n }, Object.create(null));\nconst getColorsEmpty = () =>\n DEFAULT_THEME_KEYS.reduce((colors, key) => {\n colors[key] = {\n close: '',\n open: ''\n };\n return colors;\n }, Object.create(null));\nconst getPrintFunctionName = options =>\n options?.printFunctionName ?? DEFAULT_OPTIONS.printFunctionName;\nconst getEscapeRegex = options =>\n options?.escapeRegex ?? DEFAULT_OPTIONS.escapeRegex;\nconst getEscapeString = options =>\n options?.escapeString ?? DEFAULT_OPTIONS.escapeString;\nconst getConfig = options => ({\n callToJSON: options?.callToJSON ?? DEFAULT_OPTIONS.callToJSON,\n colors: options?.highlight ? getColorsHighlight(options) : getColorsEmpty(),\n compareKeys:\n typeof options?.compareKeys === 'function' || options?.compareKeys === null\n ? options.compareKeys\n : DEFAULT_OPTIONS.compareKeys,\n escapeRegex: getEscapeRegex(options),\n escapeString: getEscapeString(options),\n indent: options?.min\n ? ''\n : createIndent(options?.indent ?? DEFAULT_OPTIONS.indent),\n maxDepth: options?.maxDepth ?? DEFAULT_OPTIONS.maxDepth,\n maxWidth: options?.maxWidth ?? DEFAULT_OPTIONS.maxWidth,\n min: options?.min ?? DEFAULT_OPTIONS.min,\n plugins: options?.plugins ?? DEFAULT_OPTIONS.plugins,\n printBasicPrototype: options?.printBasicPrototype ?? true,\n printFunctionName: getPrintFunctionName(options),\n spacingInner: options?.min ? ' ' : '\\n',\n spacingOuter: options?.min ? '' : '\\n'\n});\nfunction createIndent(indent) {\n return new Array(indent + 1).join(' ');\n}\n\n/**\n * Returns a presentation string of your `val` object\n * @param val any potential JavaScript object\n * @param options Custom settings\n */\nfunction format(val, options) {\n if (options) {\n validateOptions(options);\n if (options.plugins) {\n const plugin = findPlugin(options.plugins, val);\n if (plugin !== null) {\n return printPlugin(plugin, val, getConfig(options), '', 0, []);\n }\n }\n }\n const basicResult = printBasicValue(\n val,\n getPrintFunctionName(options),\n getEscapeRegex(options),\n getEscapeString(options)\n );\n if (basicResult !== null) {\n return basicResult;\n }\n return printComplexValue(val, getConfig(options), '', 0, []);\n}\nconst plugins = {\n AsymmetricMatcher: _AsymmetricMatcher.default,\n DOMCollection: _DOMCollection.default,\n DOMElement: _DOMElement.default,\n Immutable: _Immutable.default,\n ReactElement: _ReactElement.default,\n ReactTestComponent: _ReactTestComponent.default\n};\nexports.plugins = plugins;\nvar _default = format;\nexports.default = _default;\n","/**\n * Copyright (c) 650 Industries.\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * Based on this but with web support:\n * https://github.com/facebook/react-native/blob/086714b02b0fb838dee5a66c5bcefe73b53cf3df/Libraries/Utilities/HMRClient.js\n */\nimport MetroHMRClient from '@expo/metro/metro-runtime/modules/HMRClient';\nimport prettyFormat, { plugins } from 'pretty-format';\nimport { DeviceEventEmitter } from 'react-native';\n\n// Ensure events are sent so custom Fast Refresh views are shown.\nfunction showLoading(message: string, _type: 'load' | 'refresh') {\n DeviceEventEmitter.emit('devLoadingView:showMessage', {\n message,\n });\n}\n\nfunction hideLoading() {\n DeviceEventEmitter.emit('devLoadingView:hide', {});\n}\n\nconst pendingEntryPoints: string[] = [];\n\n// @ts-expect-error: Account for multiple versions of pretty-format inside of a monorepo.\nconst prettyFormatFunc = typeof prettyFormat === 'function' ? prettyFormat : prettyFormat.default;\n\ntype HMRClientType = {\n send: (msg: string) => void;\n isEnabled: () => boolean;\n disable: () => void;\n enable: () => void;\n hasPendingUpdates: () => boolean;\n};\n\nlet hmrClient: HMRClientType | null = null;\nlet hmrUnavailableReason: string | null = null;\nlet currentCompileErrorMessage: string | null = null;\nlet didConnect: boolean = false;\nconst pendingLogs: [LogLevel, any[]][] = [];\n\ntype LogLevel =\n | 'trace'\n | 'info'\n | 'warn'\n | 'error'\n | 'log'\n | 'group'\n | 'groupCollapsed'\n | 'groupEnd'\n | 'debug';\n\nexport type HMRClientNativeInterface = {\n enable(): void;\n disable(): void;\n registerBundle(requestUrl: string): void;\n log(level: LogLevel, data: any[]): void;\n setup(props: { isEnabled: boolean }): void;\n};\n\nfunction assert(foo: any, msg: string): asserts foo {\n if (!foo) throw new Error(msg);\n}\n\n/**\n * HMR Client that receives from the server HMR updates and propagates them\n * runtime to reflects those changes.\n */\nconst HMRClient: HMRClientNativeInterface = {\n enable() {\n if (hmrUnavailableReason !== null) {\n // If HMR became unavailable while you weren't using it,\n // explain why when you try to turn it on.\n // This is an error (and not a warning) because it is shown\n // in response to a direct user action.\n throw new Error(hmrUnavailableReason);\n }\n\n assert(hmrClient, 'Expected HMRClient.setup() call at startup.');\n\n // We use this for internal logging only.\n // It doesn't affect the logic.\n hmrClient.send(JSON.stringify({ type: 'log-opt-in' }));\n\n // When toggling Fast Refresh on, we might already have some stashed updates.\n // Since they'll get applied now, we'll show a banner.\n const hasUpdates = hmrClient!.hasPendingUpdates();\n\n if (hasUpdates) {\n showLoading('Refreshing...', 'refresh');\n }\n try {\n hmrClient.enable();\n } finally {\n if (hasUpdates) {\n hideLoading();\n }\n }\n\n // There could be a compile error while Fast Refresh was off,\n // but we ignored it at the time. Show it now.\n showCompileError();\n },\n\n disable() {\n assert(hmrClient, 'Expected HMRClient.setup() call at startup.');\n hmrClient.disable();\n },\n\n registerBundle(requestUrl: string) {\n assert(hmrClient, 'Expected HMRClient.setup() call at startup.');\n pendingEntryPoints.push(requestUrl);\n registerBundleEntryPoints(hmrClient);\n },\n\n log(level: LogLevel, data: any[]) {\n if (!hmrClient) {\n // Catch a reasonable number of early logs\n // in case hmrClient gets initialized later.\n pendingLogs.push([level, data]);\n if (pendingLogs.length > 100) {\n pendingLogs.shift();\n }\n return;\n }\n try {\n hmrClient.send(\n JSON.stringify({\n type: 'log',\n level,\n platform: 'web',\n mode: 'BRIDGE',\n data: data.map((item) =>\n typeof item === 'string'\n ? item\n : prettyFormatFunc(item, {\n escapeString: true,\n highlight: true,\n maxDepth: 3,\n min: true,\n plugins: [plugins.ReactElement],\n })\n ),\n })\n );\n } catch {\n // If sending logs causes any failures we want to silently ignore them\n // to ensure we do not cause infinite-logging loops.\n }\n },\n\n // Called once by the bridge on startup, even if Fast Refresh is off.\n // It creates the HMR client but doesn't actually set up the socket yet.\n setup({ isEnabled }: { isEnabled: boolean }) {\n assert(!hmrClient, 'Cannot initialize hmrClient twice');\n\n const serverScheme = window.location.protocol === 'https:' ? 'wss' : 'ws';\n const client = new MetroHMRClient(`${serverScheme}://${window.location.host}/hot`);\n hmrClient = client;\n\n const fullBundleUrl = (() => {\n const currentScript = document?.currentScript;\n const bundleUrl = new URL(\n currentScript && 'src' in currentScript ? currentScript.src : location.href,\n location.href\n );\n\n if (!bundleUrl.searchParams.has('platform')) {\n bundleUrl.searchParams.set('platform', process.env.EXPO_OS ?? 'web');\n }\n\n return bundleUrl.toString();\n })();\n\n pendingEntryPoints.push(\n // HMRServer understands regular bundle URLs, so prefer that in case\n // there are any important URL parameters we can't reconstruct from\n // `setup()`'s arguments.\n fullBundleUrl\n );\n\n client.on('connection-error', (e: Error) => {\n let error = `Cannot connect to Metro.\n \n Try the following to fix the issue:\n - Ensure the Metro dev server is running and available on the same network as this device`;\n error += `\n \n URL: ${window.location.host}\n \n Error: ${e.message}`;\n\n setHMRUnavailableReason(error);\n });\n\n client.on('update-start', ({ isInitialUpdate }: { isInitialUpdate?: boolean }) => {\n currentCompileErrorMessage = null;\n didConnect = true;\n\n if (client.isEnabled() && !isInitialUpdate) {\n showLoading('Refreshing...', 'refresh');\n }\n });\n\n client.on('update', ({ isInitialUpdate }: { isInitialUpdate?: boolean }) => {\n if (client.isEnabled() && !isInitialUpdate) {\n dismissRedbox();\n // @ts-expect-error\n globalThis.__expo_dev_resetErrors?.();\n // LogBox.clearAllLogs();\n }\n });\n\n client.on('update-done', () => {\n hideLoading();\n });\n\n client.on('error', (data: { type: string; message: string }) => {\n hideLoading();\n\n if (data.type === 'GraphNotFoundError') {\n client.close();\n setHMRUnavailableReason('Metro has restarted since the last edit. Reload to reconnect.');\n } else if (data.type === 'RevisionNotFoundError') {\n client.close();\n setHMRUnavailableReason('Metro and the client are out of sync. Reload to reconnect.');\n } else {\n currentCompileErrorMessage = `${data.type} ${data.message}`;\n if (client.isEnabled()) {\n showCompileError();\n }\n }\n });\n\n client.on('close', (closeEvent: { code: number; reason: string }) => {\n hideLoading();\n\n // https://www.rfc-editor.org/rfc/rfc6455.html#section-7.4.1\n // https://www.rfc-editor.org/rfc/rfc6455.html#section-7.1.5\n const isNormalOrUnsetCloseReason =\n closeEvent == null ||\n closeEvent.code === 1000 ||\n closeEvent.code === 1005 ||\n closeEvent.code == null;\n\n setHMRUnavailableReason(\n `${\n isNormalOrUnsetCloseReason\n ? 'Disconnected from Metro.'\n : `Disconnected from Metro (${closeEvent.code}: \"${closeEvent.reason}\").`\n }\n\nTo reconnect:\n- Ensure that Metro is running and available on the same network\n- Reload this app (will trigger further help if Metro cannot be connected to)\n `\n );\n });\n\n if (isEnabled) {\n HMRClient.enable();\n } else {\n HMRClient.disable();\n }\n\n registerBundleEntryPoints(hmrClient);\n flushEarlyLogs();\n },\n};\n\nfunction setHMRUnavailableReason(reason: string) {\n assert(hmrClient, 'Expected HMRClient.setup() call at startup.');\n if (hmrUnavailableReason !== null) {\n // Don't show more than one warning.\n return;\n }\n hmrUnavailableReason = reason;\n\n // We only want to show a warning if Fast Refresh is on *and* if we ever\n // previously managed to connect successfully. We don't want to show\n // the warning to native engineers who use cached bundles without Metro.\n if (hmrClient.isEnabled() && didConnect) {\n console.warn(reason);\n // (Not using the `warning` module to prevent a Buck cycle.)\n }\n}\n\nfunction registerBundleEntryPoints(client: HMRClientType | null) {\n if (hmrUnavailableReason != null) {\n // \"Bundle Splitting – Metro disconnected\"\n window.location.reload();\n return;\n }\n\n if (pendingEntryPoints.length > 0) {\n client?.send(\n JSON.stringify({\n type: 'register-entrypoints',\n entryPoints: pendingEntryPoints,\n })\n );\n pendingEntryPoints.length = 0;\n }\n}\n\nfunction flushEarlyLogs() {\n try {\n pendingLogs.forEach(([level, data]) => {\n HMRClient.log(level, data);\n });\n } finally {\n pendingLogs.length = 0;\n }\n}\n\nfunction dismissRedbox() {\n // TODO(EvanBacon): Error overlay for web.\n}\n\nfunction showCompileError() {\n if (currentCompileErrorMessage === null) {\n return;\n }\n\n // Even if there is already a redbox, syntax errors are more important.\n // Otherwise you risk seeing a stale runtime error while a syntax error is more recent.\n dismissRedbox();\n\n const message = currentCompileErrorMessage;\n currentCompileErrorMessage = null;\n\n const error = new Error(message);\n // Symbolicating compile errors is wasted effort\n // because the stack trace is meaningless:\n // @ts-expect-error\n error.preventSymbolication = true;\n throw error;\n}\n\nexport default HMRClient;\n","import HMRClient from './hmr';\n\nif (\n typeof window !== 'undefined' &&\n // @ts-expect-error: Added via react-native-webview\n typeof window.$$EXPO_INITIAL_PROPS !== 'undefined'\n) {\n // Sets up developer tools for web platforms when running in a webview. This ensures that logs are visible in the terminal.\n // We assume full control over the console and send JavaScript logs to Metro.\n const LEVELS = [\n 'trace',\n 'info',\n 'warn',\n 'error',\n 'log',\n 'group',\n 'groupCollapsed',\n 'groupEnd',\n 'debug',\n ] as const;\n LEVELS.forEach((level) => {\n const originalFunction = console[level];\n console[level] = function (...args: any[]) {\n HMRClient.log(level, args);\n originalFunction.apply(console, args);\n };\n });\n HMRClient.log('log', [`[webview] Logs will also appear in the Safari/Chrome debug console`]);\n} else {\n HMRClient.log('log', [`[web] Logs will appear in the browser console`]);\n}\n\n// This is called native on native platforms\nHMRClient.setup({ isEnabled: true });\n","/* eslint-env browser */\n\n// Setup websocket messages for reloading the page from the command line.\n// This is normally setup on the native client.\n\ndeclare namespace globalThis {\n const __EXPO_RSC_RELOAD_LISTENERS__: (() => unknown)[] | undefined;\n}\n\nif (__DEV__) {\n const protocol = window.location.protocol === 'https:' ? 'wss' : 'ws';\n const messageSocket = new WebSocket(`${protocol}://${window.location.host}/message`);\n messageSocket.onmessage = (message) => {\n const data = JSON.parse(String(message.data));\n switch (data.method) {\n case 'sendDevCommand':\n switch (data.params.name) {\n case 'reload':\n window.location.reload();\n break;\n case 'rsc-reload':\n if (data.params.platform && data.params.platform !== process.env.EXPO_OS) {\n return;\n }\n globalThis.__EXPO_RSC_RELOAD_LISTENERS__?.forEach((l) => l());\n break;\n // Inject CSS modules from server components into the root client bundle in development.\n case 'module-import':\n {\n const { data: moduleData } = data.params;\n // remove element with the same 'expo-module-id'\n const id = `expo-module-id=\"${moduleData.id}\"`;\n const style = document.querySelector(`style[${id}]`);\n document.querySelector(`script[${id}]`)?.remove();\n const code = moduleData.code;\n const script = document.createElement('script');\n script.type = 'module';\n script.text = code;\n script.setAttribute('expo-module-id', moduleData.id);\n document.head.appendChild(script);\n if (style) {\n // remove the previous block after the new one is loaded to mitigate FOUC.\n queueMicrotask(() => style.parentElement?.removeChild(style));\n }\n }\n break;\n }\n break;\n case 'reload':\n window.location.reload();\n break;\n case 'devMenu':\n // no-op\n break;\n }\n };\n}\n","// Only during development.\nif (\n __DEV__ &&\n // Disable for SSR\n typeof window !== 'undefined'\n) {\n require('./setupFastRefresh');\n require('./setupHMR');\n require('./messageSocket');\n}\n","// Copyright 2015-present 650 Industries. All rights reserved.\n\nexport function getBundleUrl(): string | null {\n return null;\n}\n","// Copyright 2015-present 650 Industries. All rights reserved.\n\nimport { getBundleUrl } from '../utils/getBundleUrl';\n\n/**\n * Registry to handle import.meta functionality for React Native environment\n * Similar to how it works in the web, but adapted for the RN context\n * https://github.com/wintercg/import-meta-registry\n */\nexport const ImportMetaRegistry = {\n get url() {\n return getBundleUrl();\n },\n};\n","import '../async-require/setup';\n\nObject.defineProperty(globalThis, '__ExpoImportMetaRegistry', {\n value: require('./ImportMetaRegistry').ImportMetaRegistry,\n enumerable: false,\n writable: true,\n});\n","import './runtime';\n","const getDevServer = () => {\n // Disable for SSR\n if (typeof window === 'undefined') {\n return {\n bundleLoadedFromServer: true,\n fullBundleUrl: '',\n url: '',\n };\n }\n\n return {\n // The bundle is always loaded from a server in the browser.\n bundleLoadedFromServer: true,\n\n /** URL but ensures that platform query param is added. */\n get fullBundleUrl() {\n if (document?.currentScript && 'src' in document.currentScript) {\n return document.currentScript.src;\n }\n\n const bundleUrl = new URL(location.href);\n\n bundleUrl.searchParams.set('platform', 'web');\n\n return bundleUrl.toString();\n },\n url: location.origin + location.pathname,\n };\n};\n\nexport default getDevServer;\n","/**\n * Copyright © 2022 650 Industries.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport getDevServer from './getDevServer';\n\n/**\n * Given a path and some optional additional query parameters, create the dev server bundle URL.\n * @param bundlePath like `/foobar`\n * @param params like `{ platform: \"web\" }`\n * @returns a URL like \"/foobar.bundle?platform=android&modulesOnly=true&runModule=false&runtimeBytecodeVersion=null\"\n */\nexport function buildUrlForBundle(bundlePath: string): string {\n if (/^https?:\\/\\//.test(bundlePath)) {\n return bundlePath;\n }\n const { url: baseURL } = getDevServer();\n return baseURL ? new URL(bundlePath, baseURL).toString() : `//${bundlePath.replace(/^\\/+/, '')}`;\n}\n","export class MetroServerError extends Error {\n code = 'METRO_SERVER_ERROR';\n url: string;\n\n constructor(errorObject: { message: string } & Record<string, any>, url: string) {\n super(errorObject.message);\n this.name = 'MetroServerError';\n this.url = url;\n for (const key in errorObject) {\n (this as any)[key] = errorObject[key];\n }\n }\n}\n","/**\n * Copyright © 2022 650 Industries.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nexport async function fetchAsync(\n url: string\n): Promise<{ body: string; status: number; headers: Headers }> {\n const response = await fetch(url, {\n method: 'GET',\n headers: {\n // No real reason for this but we try to use this format for everything.\n 'expo-platform': 'web',\n },\n });\n return {\n body: await response.text(),\n status: response.status,\n headers: response.headers,\n };\n}\n","/**\n * Copyright © 2022 650 Industries.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { MetroServerError } from './errors';\nimport { fetchAsync } from './fetchAsync';\n/**\n * Load a bundle for a URL using fetch + eval on native and script tag injection on web.\n *\n * @param url Given a statement like `import('./Bacon')` `bundlePath` would be `Bacon`.\n */\nexport function fetchThenEvalAsync(url: string): Promise<void> {\n return fetchAsync(url).then(({ body, status, headers }) => {\n if (\n headers?.has?.('Content-Type') != null &&\n headers.get('Content-Type')!.includes('application/json')\n ) {\n // Errors are returned as JSON.\n throw new Error(JSON.parse(body).message || `Unknown error fetching '${url}'`);\n }\n\n if (status === 200) {\n // eslint-disable-next-line no-eval\n return eval(body);\n } else {\n // Format Metro errors if possible.\n if (process.env.NODE_ENV === 'development') {\n // body can be an error from Metro if a module is missing.\n // {\"originModulePath\":\"/Users/evanbacon/Documents/GitHub/expo/.\",\"targetModuleName\":\"./http://localhost:8081/node_modules/react-native/index.js\",\"message\":\"...\"}\n const error = jsonParseOptional(body);\n if (error) {\n // TODO: This is essentially like the Metro native red box errors. We should do a better job formatting them so\n // the user experience doesn't feel bad. This can be tested by loading a split bundle that results in a missing module error from Metro.\n throw new MetroServerError(error, url);\n }\n }\n\n throw new Error(`Failed to load split bundle from URL: ${url}\\n${body}`);\n }\n });\n}\n\nfunction jsonParseOptional(json: string): any {\n try {\n return JSON.parse(json);\n } catch {\n return null;\n }\n}\n","export { fetchThenEvalAsync } from './fetchThenEvalJs';\n","/**\n * Copyright © 2022 650 Industries.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { buildUrlForBundle } from './buildUrlForBundle';\nimport { fetchThenEvalAsync } from './fetchThenEval';\n\n/**\n * Load a bundle for a URL using fetch + eval on native and script tag injection on web.\n *\n * @param bundlePath Given a statement like `import('./Bacon')` `bundlePath` would be `Bacon.bundle?params=from-metro`.\n */\nexport async function loadBundleAsync(bundlePath: string): Promise<void> {\n const requestUrl = buildUrlForBundle(bundlePath);\n\n if (process.env.NODE_ENV === 'production') {\n return fetchThenEvalAsync(requestUrl);\n } else {\n return fetchThenEvalAsync(requestUrl).then(() => {\n const HMRClient = require('./hmr').default as typeof import('./hmr').default;\n HMRClient.registerBundle(requestUrl);\n });\n }\n}\n","/**\n * Copyright © 2022 650 Industries.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { loadBundleAsync } from './loadBundle';\n\n/**\n * Must satisfy the requirements of the Metro bundler.\n * https://github.com/react-native-community/discussions-and-proposals/blob/main/proposals/0605-lazy-bundling.md#__loadbundleasync-in-metro\n */\ntype AsyncRequire = (path: string) => Promise<void>;\n\n/** Create an `loadBundleAsync` function in the expected shape for Metro bundler. */\nexport function buildAsyncRequire(): AsyncRequire {\n const cache = new Map<string, Promise<void>>();\n\n return async function universal_loadBundleAsync(path: string): Promise<void> {\n if (cache.has(path)) {\n return cache.get(path)!;\n }\n\n const promise = loadBundleAsync(path).catch((error) => {\n cache.delete(path);\n throw error;\n });\n\n cache.set(path, promise);\n\n return promise;\n };\n}\n","/**\n * Copyright © 2024 650 Industries.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { buildAsyncRequire } from './buildAsyncRequire';\n\n// @ts-ignore: ignore the global which may not always be defined in jest environments.\nglobal[`${global.__METRO_GLOBAL_PREFIX__ ?? ''}__loadBundleAsync`] = buildAsyncRequire();\n","import type { ExpoConfig } from 'expo/config';\nimport type {\n EASConfig as ManifestsEASConfig,\n ExpoGoConfig as ManifestsExpoGoConfig,\n ExpoUpdatesManifest,\n EmbeddedManifest,\n ManifestAsset as ManifestAssetForReExport,\n ManifestExtra as ManifestExtraForReExport,\n ClientScopingConfig as ClientScopingConfigForReExport,\n ExpoGoPackagerOpts as ExpoGoPackagerOptsForReExport,\n // @ts-ignore -- optional interface, will gracefully degrade to `any` not installed\n} from 'expo-manifests';\n\nexport enum AppOwnership {\n /**\n * The experience is running inside the Expo Go app.\n * @deprecated Use [`Constants.executionEnvironment`](#executionenvironment) instead.\n */\n Expo = 'expo',\n}\n\n// @docsMissing\nexport enum ExecutionEnvironment {\n Bare = 'bare',\n Standalone = 'standalone',\n StoreClient = 'storeClient',\n}\n\n// @needsAudit\n/**\n * Current supported values are `handset`, `tablet`, `desktop` and `tv`. CarPlay will show up\n * as `unsupported`.\n */\nexport enum UserInterfaceIdiom {\n Handset = 'handset',\n Tablet = 'tablet',\n Desktop = 'desktop',\n TV = 'tv',\n Unsupported = 'unsupported',\n}\n\n// @needsAudit\n/**\n * @platform ios\n */\nexport type IOSManifest = {\n /**\n * The build number specified in the embedded **Info.plist** value for `CFBundleVersion` in this app.\n * In a standalone app, you can set this with the `ios.buildNumber` value in **app.json**. This\n * may differ from the value in `Constants.expoConfig.ios.buildNumber` because the manifest\n * can be updated, whereas this value will never change for a given native binary.\n * The value is set to `null` in case you run your app in Expo Go.\n */\n buildNumber: string | null;\n /**\n * The Apple internal model identifier for this device.\n * @example\n * `iPhone1,1`\n * @deprecated Use `expo-device`'s [`Device.modelId`](./device/#devicemodelid).\n */\n platform: string;\n /**\n * The human-readable model name of this device. For example, `\"iPhone 7 Plus\"` if it can be determined,\n * otherwise will be `null`.\n * @deprecated Moved to `expo-device` as [`Device.modelName`](./device/#devicemodelname).\n */\n model: string | null;\n /**\n * The user interface idiom of the current device, such as whether the app is running on an iPhone, iPad, Mac or Apple TV.\n * @deprecated Use `expo-device`'s [`Device.getDeviceTypeAsync()`](./device/#devicegetdevicetypeasync).\n */\n userInterfaceIdiom: UserInterfaceIdiom;\n /**\n * The version of iOS running on this device.\n * @example\n * `10.3`\n * @deprecated Use `expo-device`'s [`Device.osVersion`](./device/#deviceosversion).\n */\n systemVersion: string;\n} & Record<string, any>;\n\n// @needsAudit\n/**\n * @platform android\n */\nexport type AndroidManifest = {\n /**\n * The version code set by `android.versionCode` in app.json.\n * The value is set to `null` in case you run your app in Expo Go.\n * @deprecated Use `expo-application`'s [`Application.nativeBuildVersion`](./application/#applicationnativebuildversion).\n */\n versionCode: number;\n} & Record<string, any>;\n\n/**\n * @platform web\n */\nexport type WebManifest = Record<string, any>;\n\n// type re-exports to prevent breaking change\n\nexport type ManifestAsset = ManifestAssetForReExport;\nexport type Manifest = ExpoUpdatesManifest;\nexport type ManifestExtra = ManifestExtraForReExport;\nexport type EASConfig = ManifestsEASConfig;\nexport type ClientScopingConfig = ClientScopingConfigForReExport;\nexport type ExpoGoConfig = ManifestsExpoGoConfig;\nexport type ExpoGoPackagerOpts = ExpoGoPackagerOptsForReExport;\n\n// @needsAudit @docsMissing\nexport type PlatformManifest = {\n ios?: IOSManifest;\n android?: AndroidManifest;\n web?: WebManifest;\n detach?: {\n scheme?: string;\n [key: string]: any;\n };\n scheme?: string;\n hostUri?: string;\n developer?: string;\n} & Record<string, any>;\n\n// @needsAudit @docsMissing\nexport type NativeConstants = {\n /**\n * @hidden\n */\n name: 'ExponentConstants';\n /**\n * Returns `expo` when running in Expo Go, otherwise `null`.\n * @deprecated Use [`Constants.executionEnvironment`](#executionenvironment) instead.\n */\n appOwnership: AppOwnership | null;\n /**\n * Returns `true` when the app is running in debug mode (`__DEV__`). Otherwise, returns `false`.\n */\n debugMode: boolean;\n /**\n * A human-readable name for the device type.\n */\n deviceName?: string;\n /**\n * The [device year class](https://github.com/facebook/device-year-class) of this device.\n * @deprecated Moved to `expo-device` as [`Device.deviceYearClass`](./device/#deviceyearclass).\n */\n deviceYearClass: number | null;\n /**\n * Returns the current execution environment.\n */\n executionEnvironment: ExecutionEnvironment;\n experienceUrl: string;\n /**\n * Nullable only on the web.\n */\n expoRuntimeVersion: string | null;\n /**\n * The version string of the Expo Go app currently running.\n * Returns `null` in bare workflow and web.\n */\n expoVersion: string | null;\n isDetached?: boolean;\n intentUri?: string;\n /**\n * Returns `true` if the app is running in headless mode. Otherwise, returns `false`.\n */\n isHeadless: boolean;\n linkingUri: string;\n\n /**\n * @hidden\n * Manifest embedded in the build. Returns `null` when `manifest2` is non-null.\n * @deprecated Use `Constants.expoConfig` instead, which behaves more consistently across EAS Build\n * and EAS Update.\n */\n manifest: EmbeddedManifest | null;\n /**\n * Manifest for Expo apps using modern Expo Updates from a remote source, such as apps that\n * use EAS Update. `Constants.expoConfig` should be used for accessing the Expo config object.\n */\n manifest2: ExpoUpdatesManifest | null;\n /**\n * The standard Expo config object defined in **app.json** and **app.config.js** files. For both\n * classic and modern manifests, whether they are embedded or remote.\n */\n expoConfig:\n | (ExpoConfig & {\n /**\n * Only present during development using @expo/cli.\n */\n hostUri?: string;\n })\n | null;\n /**\n * The standard Expo Go config object populated when running in Expo Go.\n */\n expoGoConfig: ManifestsExpoGoConfig | null;\n /**\n * The standard EAS config object populated when using EAS.\n */\n easConfig: ManifestsEASConfig | null;\n /**\n * A string that is unique to the current session of your app. It is different across apps and\n * across multiple launches of the same app.\n */\n sessionId: string;\n /**\n * The default status bar height for the device. Does not factor in changes when location tracking\n * is in use or a phone call is active.\n */\n statusBarHeight: number;\n /**\n * A list of the system font names available on the current device.\n */\n systemFonts: string[];\n systemVersion?: number;\n /**\n * @hidden\n */\n supportedExpoSdks?: string[];\n /**\n * Returns the specific platform manifest object.\n *\n * > **Note**: This is distinct from the `manifest` and `manifest2`.\n */\n platform?: PlatformManifest;\n /**\n * Gets the user agent string which would be included in requests sent by a web view running on\n * this device. This is probably not the same user agent you might be providing in your JS `fetch`\n * requests.\n */\n getWebViewUserAgentAsync: () => Promise<string | null>;\n} & Record<string, any>;\n\n/**\n * @hidden\n */\nexport type Constants = NativeConstants & {\n /**\n * > **Warning**: Do not use this property. Use `manifest` by default.\n *\n * In certain cases accessing manifest via this property\n * suppresses important warning about missing manifest.\n */\n __unsafeNoWarnManifest?: EmbeddedManifest;\n /**\n * > **Warning**: Do not use this property. Use `manifest2` by default.\n *\n * In certain cases accessing manifest via this property\n * suppresses important warning about missing manifest.\n */\n __unsafeNoWarnManifest2?: ExpoUpdatesManifest;\n};\n","import { requireOptionalNativeModule } from 'expo-modules-core';\n\nexport default requireOptionalNativeModule('ExponentConstants');\n","import type { ExpoConfig } from 'expo/config';\n// @ts-ignore -- optional interface, will gracefully degrade to `any` if not installed\nimport type {\n EmbeddedManifest,\n EASConfig,\n ExpoGoConfig,\n ExpoUpdatesManifest,\n // @ts-ignore -- optional interface, will gracefully degrade to `any` if not installed\n} from 'expo-manifests';\nimport { CodedError, requireOptionalNativeModule } from 'expo-modules-core';\n// @ts-ignore -- optional interface, will gracefully degrade to `any` if not installed\nimport type { Manifest as UpdatesManifest, ExpoUpdatesModule } from 'expo-updates';\nimport { Platform, NativeModules } from 'react-native';\n\nimport {\n AndroidManifest,\n AppOwnership,\n Constants,\n ExecutionEnvironment,\n IOSManifest,\n NativeConstants,\n PlatformManifest,\n UserInterfaceIdiom,\n WebManifest,\n} from './Constants.types';\nimport ExponentConstants from './ExponentConstants';\ntype DevLauncherManifest = ExpoUpdatesManifest;\n\nexport {\n AndroidManifest,\n AppOwnership,\n Constants,\n ExecutionEnvironment,\n IOSManifest,\n NativeConstants,\n PlatformManifest,\n UserInterfaceIdiom,\n WebManifest,\n};\n\nif (!ExponentConstants) {\n console.warn(\n \"No native ExponentConstants module found, are you sure the expo-constants's module is linked properly?\"\n );\n}\n\nconst ExpoUpdates = requireOptionalNativeModule<ExpoUpdatesModule>('ExpoUpdates');\n\nlet rawUpdatesManifest: UpdatesManifest | null = null;\n// If expo-updates defines a non-empty manifest, prefer that one\nif (ExpoUpdates) {\n let updatesManifest: object | undefined;\n if (ExpoUpdates.manifest) {\n updatesManifest = ExpoUpdates.manifest;\n } else if (ExpoUpdates.manifestString) {\n updatesManifest = JSON.parse(ExpoUpdates.manifestString);\n }\n if (updatesManifest && Object.keys(updatesManifest).length > 0) {\n rawUpdatesManifest = updatesManifest as any;\n }\n}\n\n// If dev-launcher defines a non-empty manifest, prefer that one\nlet rawDevLauncherManifest: DevLauncherManifest | null = null;\nif (NativeModules.EXDevLauncher) {\n let devLauncherManifest;\n if (NativeModules.EXDevLauncher.manifestString) {\n devLauncherManifest = JSON.parse(NativeModules.EXDevLauncher.manifestString);\n }\n\n if (devLauncherManifest && Object.keys(devLauncherManifest).length > 0) {\n rawDevLauncherManifest = devLauncherManifest as any;\n }\n}\n\n// Fall back to ExponentConstants.manifest if we don't have one from Updates\nlet rawAppConfig: ExpoConfig | null = null;\nif (ExponentConstants && ExponentConstants.manifest) {\n const appConfig: object | string = ExponentConstants.manifest;\n\n // On Android we pass the manifest in JSON form so this step is necessary\n if (typeof appConfig === 'string') {\n rawAppConfig = JSON.parse(appConfig);\n } else {\n rawAppConfig = appConfig as any;\n }\n}\n\ntype RawManifest = UpdatesManifest | DevLauncherManifest | ExpoConfig;\nlet rawManifest: RawManifest | null = rawUpdatesManifest ?? rawDevLauncherManifest ?? rawAppConfig;\n\nconst { name, appOwnership, ...nativeConstants } = (ExponentConstants || {}) as any;\n\nconst constants: Constants = {\n ...nativeConstants,\n // Ensure this is null in bare workflow\n appOwnership: appOwnership ?? null,\n};\n\nObject.defineProperties(constants, {\n /**\n * Use `manifest` property by default.\n * This property is only used for internal purposes.\n * It behaves similarly to the original one, but suppresses warning upon no manifest available.\n * `expo-asset` uses it to prevent users from seeing mentioned warning.\n */\n __unsafeNoWarnManifest: {\n get(): EmbeddedManifest | null {\n const maybeManifest = getManifest(true);\n if (!maybeManifest || !isEmbeddedManifest(maybeManifest)) {\n return null;\n }\n return maybeManifest;\n },\n enumerable: false,\n },\n __unsafeNoWarnManifest2: {\n get(): ExpoUpdatesManifest | null {\n const maybeManifest = getManifest(true);\n if (!maybeManifest || !isExpoUpdatesManifest(maybeManifest)) {\n return null;\n }\n return maybeManifest;\n },\n enumerable: false,\n },\n manifest: {\n get(): EmbeddedManifest | null {\n const maybeManifest = getManifest();\n if (!maybeManifest || !isEmbeddedManifest(maybeManifest)) {\n return null;\n }\n return maybeManifest;\n },\n enumerable: true,\n },\n manifest2: {\n get(): ExpoUpdatesManifest | null {\n const maybeManifest = getManifest();\n if (!maybeManifest || !isExpoUpdatesManifest(maybeManifest)) {\n return null;\n }\n return maybeManifest;\n },\n enumerable: true,\n },\n expoConfig: {\n get():\n | (ExpoConfig & {\n /**\n * Only present during development using @expo/cli.\n */\n hostUri?: string;\n })\n | null {\n const maybeManifest = getManifest(true);\n if (!maybeManifest) {\n return null;\n }\n\n // if running an embedded update, maybeManifest is a EmbeddedManifest which doesn't have\n // the expo config. Instead, the embedded expo-constants app.config should be used.\n if (ExpoUpdates && ExpoUpdates.isEmbeddedLaunch) {\n return rawAppConfig;\n }\n\n if (isExpoUpdatesManifest(maybeManifest)) {\n return maybeManifest.extra?.expoClient ?? null;\n } else if (isEmbeddedManifest(maybeManifest)) {\n return maybeManifest as any;\n }\n\n return null;\n },\n enumerable: true,\n },\n expoGoConfig: {\n get(): ExpoGoConfig | null {\n const maybeManifest = getManifest(true);\n if (!maybeManifest) {\n return null;\n }\n\n if (isExpoUpdatesManifest(maybeManifest)) {\n return maybeManifest.extra?.expoGo ?? null;\n } else if (isEmbeddedManifest(maybeManifest)) {\n return maybeManifest as any;\n }\n\n return null;\n },\n enumerable: true,\n },\n easConfig: {\n get(): EASConfig | null {\n const maybeManifest = getManifest(true);\n if (!maybeManifest) {\n return null;\n }\n\n if (isExpoUpdatesManifest(maybeManifest)) {\n return maybeManifest.extra?.eas ?? null;\n } else if (isEmbeddedManifest(maybeManifest)) {\n return maybeManifest as any;\n }\n\n return null;\n },\n enumerable: true,\n },\n __rawManifest_TEST: {\n get(): RawManifest | null {\n return rawManifest;\n },\n set(value: RawManifest | null) {\n rawManifest = value;\n },\n enumerable: false,\n },\n});\n\nfunction isEmbeddedManifest(manifest: RawManifest): manifest is EmbeddedManifest {\n return !isExpoUpdatesManifest(manifest);\n}\n\nfunction isExpoUpdatesManifest(manifest: RawManifest): manifest is ExpoUpdatesManifest {\n return 'metadata' in manifest;\n}\n\nfunction getManifest(suppressWarning = false): RawManifest | null {\n if (!rawManifest) {\n const invalidManifestType = rawManifest === null ? 'null' : 'undefined';\n if (\n nativeConstants.executionEnvironment === ExecutionEnvironment.Bare &&\n Platform.OS !== 'web'\n ) {\n if (!suppressWarning) {\n console.warn(\n `Constants.manifest is ${invalidManifestType} because the embedded app.config could not be read. Ensure that you have installed the expo-constants build scripts if you need to read from Constants.manifest.`\n );\n }\n } else if (\n nativeConstants.executionEnvironment === ExecutionEnvironment.StoreClient ||\n nativeConstants.executionEnvironment === ExecutionEnvironment.Standalone\n ) {\n // If we somehow get here, this is a truly exceptional state to be in.\n // Constants.manifest should *always* be defined in those contexts.\n throw new CodedError(\n 'ERR_CONSTANTS_MANIFEST_UNAVAILABLE',\n `Constants.manifest is ${invalidManifestType}, must be an object.`\n );\n }\n }\n return rawManifest;\n}\n\nexport default constants as Constants;\n","import { requireNativeModule } from 'expo-modules-core';\n\ntype ExpoGoModule = {\n expoVersion: string;\n projectConfig: ExpoGoProjectConfig;\n};\n\ntype ExpoGoProjectConfig = {\n mainModuleName?: string;\n debuggerHost?: string;\n logUrl?: string;\n developer?: {\n tool?: string;\n [key: string]: any;\n };\n packagerOpts?: ExpoGoPackagerOpts;\n};\n\nexport type ExpoGoPackagerOpts = {\n hostType?: string;\n dev?: boolean;\n strict?: boolean;\n minify?: boolean;\n urlType?: string;\n urlRandomness?: string;\n lanType?: string;\n [key: string]: any;\n};\n\n// ExpoGo module is available only when the app is run in Expo Go,\n// otherwise we use `null` instead of throwing an error.\nconst NativeExpoGoModule = ((): ExpoGoModule | null => {\n try {\n return requireNativeModule('ExpoGo');\n } catch {\n return null;\n }\n})();\n\n/**\n * Returns a boolean value whether the app is running in Expo Go.\n */\nexport function isRunningInExpoGo(): boolean {\n return NativeExpoGoModule != null;\n}\n\n/**\n * @hidden\n * Returns an Expo Go project config from the manifest or `null` if the app is not running in Expo Go.\n */\nexport function getExpoGoProjectConfig(): ExpoGoProjectConfig | null {\n return NativeExpoGoModule?.projectConfig ?? null;\n}\n","import { StyleSheet, Text, View } from 'react-native';\n\nexport function AppEntryNotFound() {\n return (\n <View style={styles.container}>\n <Text style={styles.errorTitle}>App entry not found</Text>\n <Text style={styles.errorDescription}>\n The app entry point named \"main\" was not registered. This may be due to an uncaught error\n thrown from a module's top-level code. Refer to the CLI logs and the native device logs for\n more detail.\n </Text>\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n justifyContent: 'center',\n padding: 20,\n backgroundColor: '#f2f2f2',\n },\n errorTitle: {\n fontSize: 24,\n fontWeight: 'bold',\n color: '#d32f2f',\n textAlign: 'center',\n marginBottom: 24,\n },\n errorDescription: {\n fontSize: 16,\n color: '#333',\n textAlign: 'center',\n },\n});\n","import type { ErrorHandlerCallback } from 'react-native';\n\nexport function createErrorHandler(originalHandler: ErrorHandlerCallback): ErrorHandlerCallback {\n return (error, isFatal) => originalHandler(error, isFatal);\n}\n\n/**\n * @hidden\n * @deprecated Will be removed in the future.\n */\nexport function disableErrorHandling() {}\n","// load expo-asset immediately to set a custom `source` transformer in React Native\nimport './winter';\nimport './async-require';\nimport 'expo-asset';\nimport 'expo/virtual/rsc';\n\nimport Constants from 'expo-constants';\nimport { AppRegistry, NativeModules, LogBox, Platform } from 'react-native';\n\nimport { isRunningInExpoGo } from './environment/ExpoGo';\nimport { AppEntryNotFound } from './errors/AppEntryNotFound';\nimport { createErrorHandler } from './errors/ExpoErrorManager';\n\n// Only during development.\nif (\n __DEV__ &&\n // Disable for SSR\n typeof globalThis.expo !== 'undefined'\n) {\n require('./async-require/messageSocket');\n}\n\nif (isRunningInExpoGo()) {\n // set up some improvements to commonly logged error messages stemming from react-native\n const globalHandler = ErrorUtils.getGlobalHandler();\n ErrorUtils.setGlobalHandler(createErrorHandler(globalHandler));\n}\n\n// Warn if the New Architecture is not explicitly enabled in the app config and we are running in Expo Go.\n// This could be problematic because you will be developing your app with the New Architecture enabled and\n// but your builds will have the New Architecture disabled.\nif (__DEV__ && isRunningInExpoGo() && process.env.NODE_ENV === 'development') {\n (['android', 'ios'] as const).forEach((platform) => {\n const newArchPlatformConfig = Constants.expoConfig?.[platform]?.newArchEnabled;\n const newArchRootConfig = Constants.expoConfig?.newArchEnabled;\n\n const isNewArchExplicitlyDisabled =\n newArchPlatformConfig === false ||\n (newArchPlatformConfig === undefined && newArchRootConfig === false);\n\n if (Platform.OS === platform && isNewArchExplicitlyDisabled) {\n // Wrap it in rAF to show the warning after the React Native DevTools message\n requestAnimationFrame(() => {\n console.warn(\n `🚨 React Native's New Architecture is always enabled in Expo Go, but it is explicitly disabled in your project's app config. This may lead to unexpected behavior when creating a production or development build. Remove \"newArchEnabled\": false from your app.json.\\nLearn more: https://docs.expo.dev/guides/new-architecture/`\n );\n });\n }\n });\n}\n\n// Disable the \"Open debugger to view warnings\" React Native DevTools warning in\n// Expo Go and expo-dev-client, because launching the debugger from there will not\n// get the correct JS target.\nconst IS_RUNNING_IN_DEV_CLIENT = !!NativeModules.EXDevLauncher;\nif (__DEV__ && LogBox?.ignoreLogs && (isRunningInExpoGo() || IS_RUNNING_IN_DEV_CLIENT)) {\n LogBox.ignoreLogs([/Open debugger to view warnings/]);\n}\n\nif (process.env.NODE_ENV !== 'production') {\n // Register a default component and expect `registerRootComponent` to be called later and update it.\n AppRegistry.registerComponent('main', () => AppEntryNotFound);\n}\n","import './Expo.fx';\n\nexport { disableErrorHandling } from './errors/ExpoErrorManager';\nexport { default as registerRootComponent } from './launch/registerRootComponent';\n\nexport { isRunningInExpoGo, getExpoGoProjectConfig } from './environment/ExpoGo';\n\nexport {\n // Core classes\n EventEmitter,\n SharedObject,\n SharedRef,\n NativeModule,\n\n // Methods\n requireNativeModule,\n requireOptionalNativeModule,\n requireNativeViewManager as requireNativeView,\n registerWebModule,\n reloadAppAsync,\n} from 'expo-modules-core';\n\nexport type {\n /** @deprecated Move to `SharedRef` with a type-only import instead */\n SharedRef as SharedRefType,\n /** @deprecated Move to `EventEmitter` with a type-only import instead */\n EventEmitter as EventEmitterType,\n /** @deprecated Move to `NativeModule` with a type-only import instead */\n NativeModule as NativeModuleType,\n /** @deprecated Move to `SharedObject` with a type-only import instead */\n SharedObject as SharedObjectType,\n} from 'expo-modules-core/types';\n\nexport { useEvent, useEventListener } from './hooks/useEvent';\n","import { requireOptionalNativeModule } from 'expo';\n\nexport default requireOptionalNativeModule('ExpoHaptics');\n","// @needsAudit\n/**\n * The type of notification feedback generated by a `UINotificationFeedbackGenerator` object.\n * [`UINotificationFeedbackType`](https://developer.apple.com/documentation/uikit/uinotificationfeedbackgenerator/feedbacktype).\n */\nexport enum NotificationFeedbackType {\n /**\n * A notification feedback type indicating that a task has completed successfully.\n */\n Success = 'success',\n /**\n * A notification feedback type indicating that a task has produced a warning.\n */\n Warning = 'warning',\n /**\n * A notification feedback type indicating that a task has failed.\n */\n Error = 'error',\n}\n\n// @needsAudit\n/**\n * The mass of the objects in the collision simulated by a `UIImpactFeedbackGenerator` object\n * [`UINotificationFeedbackStyle`](https://developer.apple.com/documentation/uikit/uiimpactfeedbackgenerator/feedbackstyle).\n */\nexport enum ImpactFeedbackStyle {\n /**\n * A collision between small, light user interface elements.\n */\n Light = 'light',\n /**\n * A collision between moderately sized user interface elements.\n */\n Medium = 'medium',\n /**\n * A collision between large, heavy user interface elements.\n */\n Heavy = 'heavy',\n /**\n * A collision between user interface elements that are soft, exhibiting a large amount of compression or elasticity.\n */\n Soft = 'soft',\n /**\n * A collision between user interface elements that are rigid, exhibiting a small amount of compression or elasticity.\n */\n Rigid = 'rigid',\n}\n\n/**\n * @platform android\n */\nexport enum AndroidHaptics {\n /**\n * A haptic effect to signal the confirmation or successful completion of a user interaction.\n */\n Confirm = 'confirm',\n /**\n * A haptic effect to signal the rejection or failure of a user interaction.\n */\n Reject = 'reject',\n /**\n * The user has started a gesture (for example, on the soft keyboard).\n */\n Gesture_Start = 'gesture-start',\n /**\n * The user has finished a gesture (for example, on the soft keyboard).\n */\n Gesture_End = 'gesture-end',\n /**\n * The user has toggled a switch or button into the on position.\n */\n Toggle_On = 'toggle-on',\n /**\n * The user has toggled a switch or button into the off position.\n */\n Toggle_Off = 'toggle-off',\n /**\n * The user has pressed either an hour or minute tick of a Clock.\n */\n Clock_Tick = 'clock-tick',\n /**\n * The user has performed a context click on an object.\n */\n Context_Click = 'context-click',\n /**\n * The user has started a drag-and-drop gesture. The drag target has just been \"picked up\".\n */\n Drag_Start = 'drag-start',\n /**\n * The user has pressed a soft keyboard key.\n */\n Keyboard_Tap = 'keyboard-tap',\n /**\n * The user has pressed a virtual or software keyboard key.\n */\n Keyboard_Press = 'keyboard-press',\n /**\n * The user has released a virtual keyboard key.\n */\n Keyboard_Release = 'keyboard-release',\n /**\n * The user has performed a long press on an object that results in an action being performed.\n */\n Long_Press = 'long-press',\n /**\n * The user has pressed on a virtual on-screen key.\n */\n Virtual_Key = 'virtual-key',\n /**\n * The user has released a virtual key.\n */\n Virtual_Key_Release = 'virtual-key-release',\n /**\n * No haptic feedback should be performed.\n */\n No_Haptics = 'no-haptics',\n /**\n * The user is switching between a series of potential choices. For example, items in a list or discrete points on a slider.\n */\n Segment_Tick = 'segment-tick',\n /**\n * The user is switching between a series of many potential choices. For example, minutes on a clock face or individual percentages.\n * This constant is expected to be very soft, so as not to be uncomfortable when performed a lot in quick succession.\n * If the device can't make a suitably soft vibration, then it may not make any vibration.\n */\n Segment_Frequent_Tick = 'segment-frequent-tick',\n /**\n * The user has performed a selection/insertion handle move on text field.\n */\n Text_Handle_Move = 'text-handle-move',\n}\n","import { Platform, UnavailabilityError } from 'expo-modules-core';\n\nimport ExpoHaptics from './ExpoHaptics';\nimport { NotificationFeedbackType, ImpactFeedbackStyle, AndroidHaptics } from './Haptics.types';\n\n// @needsAudit\n/**\n * The kind of notification response used in the feedback.\n * @param type A notification feedback type that on Android is simulated using [`Vibrator`](https://developer.android.com/reference/android/os/Vibrator)\n * and iOS is directly mapped to [`UINotificationFeedbackType`](https://developer.apple.com/documentation/uikit/uinotificationfeedbacktype).\n * You can use one of `Haptics.NotificationFeedbackType.{Success, Warning, Error}`.\n * @return A `Promise` which fulfills once native size haptics functionality is triggered.\n */\nexport async function notificationAsync(\n type: NotificationFeedbackType = NotificationFeedbackType.Success\n): Promise<void> {\n if (!ExpoHaptics?.notificationAsync) {\n throw new UnavailabilityError('Haptics', 'notificationAsync');\n }\n await ExpoHaptics.notificationAsync(type);\n}\n\n// @needsAudit\n/**\n * @param style A collision indicator that on Android is simulated using [`Vibrator`](https://developer.android.com/reference/android/os/Vibrator)\n * and on iOS, it is directly mapped to [`UIImpactFeedbackStyle`](https://developer.apple.com/documentation/uikit/uiimpactfeedbackgenerator/feedbackstyle).\n * You can use one of `Haptics.ImpactFeedbackStyle.{Light, Medium, Heavy, Rigid, Soft}`.\n * @return A `Promise` which fulfills once native size haptics functionality is triggered.\n * @see Android's `Vibrator` API is not recommended for implementing haptics feedback. **Instead, you should use\n * [`performAndroidHapticsAsync`](#hapticsperformandroidhapticsasynctype), which is similar to iOS haptic feedback and does not require\n * `VIBRATE` permission.**\n */\nexport async function impactAsync(\n style: ImpactFeedbackStyle = ImpactFeedbackStyle.Medium\n): Promise<void> {\n if (!ExpoHaptics?.impactAsync) {\n throw new UnavailabilityError('Haptic', 'impactAsync');\n }\n await ExpoHaptics.impactAsync(style);\n}\n\n// @needsAudit\n/**\n * Used to let a user know when a selection change has been registered.\n * @return A `Promise` which fulfills once native size haptics functionality is triggered.\n */\nexport async function selectionAsync(): Promise<void> {\n if (!ExpoHaptics?.selectionAsync) {\n throw new UnavailabilityError('Haptic', 'selectionAsync');\n }\n await ExpoHaptics.selectionAsync();\n}\n\n/**\n * Use the device haptics engine to provide physical feedback to the user.\n *\n * @platform android\n */\nexport async function performAndroidHapticsAsync(type: AndroidHaptics) {\n if (Platform.OS !== 'android') {\n return;\n }\n ExpoHaptics.performHapticsAsync(type);\n}\n\nexport { NotificationFeedbackType, ImpactFeedbackStyle, AndroidHaptics };\n","/**\n * Theme Colors\n *\n * Semantic color tokens that adapt to light/dark mode.\n * Inspired by iOS 17+ Dynamic Colors, Arc Browser, and Linear App.\n */\n\n/**\n * Base color palette (raw values).\n *\n * Raw color values for all theme presets. Use semantic colors from `lightColors` or\n * `darkColors` in components rather than palette directly.\n *\n * @example\n * ```tsx\n * const { colors } = useTheme();\n * // Use semantic colors (auto-adapts to light/dark)\n * <View style={{ backgroundColor: colors.primary }} />\n *\n * // Not recommended: using palette directly (no dark mode support)\n * <View style={{ backgroundColor: palette.primary[500] }} />\n * ```\n */\nexport const palette = {\n // Neutral scale\n neutral: {\n 0: '#ffffff',\n 50: '#fafafa',\n 100: '#f5f5f5',\n 200: '#e5e5e5',\n 300: '#d4d4d4',\n 400: '#a3a3a3',\n 500: '#737373',\n 600: '#525252',\n 700: '#404040',\n 800: '#262626',\n 900: '#171717',\n 950: '#0a0a0a',\n },\n\n // Primary blue\n primary: {\n 50: '#eff6ff',\n 100: '#dbeafe',\n 200: '#bfdbfe',\n 300: '#93c5fd',\n 400: '#60a5fa',\n 500: '#3b82f6',\n 600: '#2563eb',\n 700: '#1d4ed8',\n 800: '#1e40af',\n 900: '#1e3a8a',\n },\n\n // Success green\n success: {\n 50: '#f0fdf4',\n 100: '#dcfce7',\n 200: '#bbf7d0',\n 300: '#86efac',\n 400: '#4ade80',\n 500: '#22c55e',\n 600: '#16a34a',\n 700: '#15803d',\n 800: '#166534',\n 900: '#14532d',\n },\n\n // Warning amber\n warning: {\n 50: '#fffbeb',\n 100: '#fef3c7',\n 200: '#fde68a',\n 300: '#fcd34d',\n 400: '#fbbf24',\n 500: '#f59e0b',\n 600: '#d97706',\n 700: '#b45309',\n 800: '#92400e',\n 900: '#78350f',\n },\n\n // Error red\n error: {\n 50: '#fef2f2',\n 100: '#fee2e2',\n 200: '#fecaca',\n 300: '#fca5a5',\n 400: '#f87171',\n 500: '#ef4444',\n 600: '#dc2626',\n 700: '#b91c1c',\n 800: '#991b1b',\n 900: '#7f1d1d',\n },\n} as const;\n\n/**\n * Semantic colors for light mode.\n *\n * Complete semantic color palette for light color scheme. Access via `useTheme().colors`\n * for automatic light/dark mode adaptation.\n *\n * @example\n * ```tsx\n * const { colors, isDark } = useTheme();\n * // colors automatically matches light or dark mode\n * <View style={{ backgroundColor: colors.background, color: colors.foreground }} />\n * ```\n */\nexport const lightColors = {\n // Backgrounds\n background: palette.neutral[0],\n backgroundSubtle: palette.neutral[50],\n backgroundMuted: palette.neutral[100],\n backgroundElevated: palette.neutral[0],\n\n // Foreground/Text\n foreground: palette.neutral[900],\n foregroundMuted: palette.neutral[500],\n foregroundSubtle: palette.neutral[400],\n\n // Borders\n border: palette.neutral[200],\n borderMuted: palette.neutral[100],\n borderFocused: palette.primary[500],\n\n // Primary\n primary: palette.primary[500],\n primaryForeground: palette.neutral[0],\n primaryMuted: palette.primary[100],\n\n // Secondary\n secondary: palette.neutral[100],\n secondaryForeground: palette.neutral[900],\n\n // Destructive\n destructive: palette.error[500],\n destructiveForeground: palette.neutral[0],\n\n // Success\n success: palette.success[500],\n successForeground: palette.neutral[0],\n successMuted: palette.success[100],\n\n // Warning\n warning: palette.warning[500],\n warningForeground: palette.neutral[900],\n warningMuted: palette.warning[100],\n\n // Error\n error: palette.error[500],\n errorForeground: palette.neutral[0],\n errorMuted: palette.error[100],\n\n // Card\n card: palette.neutral[0],\n cardForeground: palette.neutral[900],\n\n // Input\n input: palette.neutral[0],\n inputBorder: palette.neutral[200],\n inputPlaceholder: palette.neutral[400],\n\n // Overlay\n overlay: 'rgba(0, 0, 0, 0.5)',\n scrim: 'rgba(0, 0, 0, 0.3)',\n} as const;\n\n/**\n * Semantic colors for dark mode.\n *\n * Complete semantic color palette for dark color scheme. Access via `useTheme().colors`\n * for automatic light/dark mode adaptation.\n *\n * @example\n * ```tsx\n * const { colors } = useTheme();\n * // colors automatically matches light or dark mode\n * <Text style={{ color: colors.foreground }}>Content</Text>\n * ```\n */\nexport const darkColors = {\n // Backgrounds\n background: palette.neutral[950],\n backgroundSubtle: palette.neutral[900],\n backgroundMuted: palette.neutral[800],\n backgroundElevated: palette.neutral[900],\n\n // Foreground/Text\n foreground: palette.neutral[50],\n foregroundMuted: palette.neutral[400],\n foregroundSubtle: palette.neutral[500],\n\n // Borders\n border: palette.neutral[800],\n borderMuted: palette.neutral[900],\n borderFocused: palette.primary[400],\n\n // Primary\n primary: palette.primary[400],\n primaryForeground: palette.neutral[900],\n primaryMuted: palette.primary[900],\n\n // Secondary\n secondary: palette.neutral[800],\n secondaryForeground: palette.neutral[50],\n\n // Destructive\n destructive: palette.error[500],\n destructiveForeground: palette.neutral[0],\n\n // Success\n success: palette.success[400],\n successForeground: palette.neutral[900],\n successMuted: palette.success[900],\n\n // Warning\n warning: palette.warning[400],\n warningForeground: palette.neutral[900],\n warningMuted: palette.warning[900],\n\n // Error\n error: palette.error[400],\n errorForeground: palette.neutral[0],\n errorMuted: palette.error[900],\n\n // Card\n card: palette.neutral[900],\n cardForeground: palette.neutral[50],\n\n // Input\n input: palette.neutral[800],\n inputBorder: palette.neutral[700],\n inputPlaceholder: palette.neutral[500],\n\n // Overlay\n overlay: 'rgba(0, 0, 0, 0.7)',\n scrim: 'rgba(0, 0, 0, 0.5)',\n} as const;\n\n/**\n * Theme colors interface.\n * Uses string type to allow color customization and presets.\n */\nexport interface ThemeColors {\n // Backgrounds\n background: string;\n backgroundSubtle: string;\n backgroundMuted: string;\n backgroundElevated: string;\n\n // Foreground/Text\n foreground: string;\n foregroundMuted: string;\n foregroundSubtle: string;\n\n // Borders\n border: string;\n borderMuted: string;\n borderFocused: string;\n\n // Primary\n primary: string;\n primaryForeground: string;\n primaryMuted: string;\n\n // Secondary\n secondary: string;\n secondaryForeground: string;\n\n // Destructive\n destructive: string;\n destructiveForeground: string;\n\n // Success\n success: string;\n successForeground: string;\n successMuted: string;\n\n // Warning\n warning: string;\n warningForeground: string;\n warningMuted: string;\n\n // Error\n error: string;\n errorForeground: string;\n errorMuted: string;\n\n // Card\n card: string;\n cardForeground: string;\n\n // Input\n input: string;\n inputBorder: string;\n inputPlaceholder: string;\n\n // Overlay\n overlay: string;\n scrim: string;\n}\n\n/** Available semantic color keys */\nexport type ColorKey = keyof ThemeColors;\n","/**\n * Spacing Tokens\n *\n * Consistent spacing scale inspired by Tailwind CSS.\n * All values in logical pixels.\n *\n * Usage:\n * ```tsx\n * const { spacing } = useTheme();\n * <View style={{ padding: spacing[4], gap: spacing[2] }} />\n * ```\n */\n\nexport const spacing = {\n 0: 0,\n 0.5: 2,\n 1: 4,\n 1.5: 6,\n 2: 8,\n 2.5: 10,\n 3: 12,\n 3.5: 14,\n 4: 16,\n 5: 20,\n 6: 24,\n 7: 28,\n 8: 32,\n 9: 36,\n 10: 40,\n 11: 44,\n 12: 48,\n 14: 56,\n 16: 64,\n 20: 80,\n 24: 96,\n 28: 112,\n 32: 128,\n} as const;\n\n/** Available spacing scale keys (0, 0.5, 1, 1.5, 2, ..., 32) */\nexport type SpacingKey = keyof typeof spacing;\n\n/** Spacing value in logical pixels */\nexport type SpacingValue = (typeof spacing)[SpacingKey];\n","/**\n * Border Radius Tokens\n *\n * Consistent border radius scale for all components.\n * Use the `radius` prop on ThemeProvider to change the base radius\n * and transform your entire app from sharp to rounded.\n *\n * Usage:\n * ```tsx\n * // Sharp, brutalist design\n * <ThemeProvider radius=\"none\">\n *\n * // Soft, friendly design\n * <ThemeProvider radius=\"lg\">\n *\n * // In components\n * const { radius } = useTheme();\n * <View style={{ borderRadius: radius.md }} />\n * ```\n */\n\n// =============================================================================\n// Radius Preset System\n// =============================================================================\n\n/**\n * Available radius presets.\n * Each preset defines a base value that scales all radii.\n */\nexport type RadiusPreset = 'none' | 'sm' | 'md' | 'lg' | 'full';\n\n/**\n * Base values for each radius preset.\n */\nexport const radiusPresetBase: Record<RadiusPreset, number> = {\n none: 0,\n sm: 4,\n md: 8,\n lg: 12,\n full: 9999,\n};\n\n/**\n * Radius token structure.\n */\nexport interface RadiusTokens {\n none: number;\n xs: number;\n sm: number;\n md: number;\n lg: number;\n xl: number;\n '2xl': number;\n full: number;\n}\n\nexport type RadiusKey = keyof RadiusTokens;\nexport type RadiusValue = number;\n\n/**\n * Creates radius tokens from a preset or base value.\n *\n * @param preset - Radius preset name or custom base value\n * @returns Scaled radius tokens\n */\nexport function createRadius(preset: RadiusPreset | number = 'md'): RadiusTokens {\n const base = typeof preset === 'number' ? preset : radiusPresetBase[preset];\n\n // Special case: 'none' preset = all zeros except full\n if (preset === 'none' || base === 0) {\n return {\n none: 0,\n xs: 0,\n sm: 0,\n md: 0,\n lg: 0,\n xl: 0,\n '2xl': 0,\n full: 0,\n };\n }\n\n // Special case: 'full' preset = all pill-shaped\n if (preset === 'full' || base >= 9999) {\n return {\n none: 0,\n xs: 9999,\n sm: 9999,\n md: 9999,\n lg: 9999,\n xl: 9999,\n '2xl': 9999,\n full: 9999,\n };\n }\n\n // Scale from base value\n return {\n none: 0,\n xs: Math.round(base * 0.25), // 2 when base=8\n sm: Math.round(base * 0.5), // 4 when base=8\n md: base, // 8 when base=8\n lg: Math.round(base * 1.5), // 12 when base=8\n xl: Math.round(base * 2), // 16 when base=8\n '2xl': Math.round(base * 3), // 24 when base=8\n full: 9999,\n };\n}\n\n/**\n * Default radius tokens (md preset).\n */\nexport const radius = createRadius('md');\n\n/**\n * Default radius preset.\n */\nexport const defaultRadiusPreset: RadiusPreset = 'md';\n\n// =============================================================================\n// Component Radius\n// =============================================================================\n\n/**\n * Component-specific radius tokens structure.\n */\nexport interface ComponentRadiusTokens {\n button: number;\n buttonSm: number;\n buttonLg: number;\n iconButton: number;\n iconButtonRounded: number;\n fab: number;\n segmentedControl: number;\n segmentedControlIndicator: number;\n actionSheet: number;\n actionSheetItem: number;\n input: number;\n textarea: number;\n select: number;\n slider: number;\n stepper: number;\n radio: number;\n tagInput: number;\n card: number;\n badge: number;\n avatar: number;\n checkbox: number;\n switch: number;\n modal: number;\n tooltip: number;\n chip: number;\n image: number;\n tabs: number;\n tabsIndicator: number;\n accordion: number;\n carousel: number;\n}\n\nexport type ComponentRadiusKey = keyof ComponentRadiusTokens;\n\n/**\n * Pill radius constant - always fully rounded regardless of preset.\n * Used for components that should always be pill-shaped (avatar, switch, badge).\n */\nconst PILL_RADIUS = 9999;\n\n/**\n * Creates component-specific radius values from radius tokens.\n *\n * @param radiusTokens - Base radius tokens\n * @returns Component-specific radius values\n */\nexport function createComponentRadius(radiusTokens: RadiusTokens): ComponentRadiusTokens {\n return {\n button: radiusTokens.md,\n buttonSm: radiusTokens.sm,\n buttonLg: radiusTokens.lg,\n // IconButton: uses medium radius by default (same as button)\n iconButton: radiusTokens.md,\n iconButtonRounded: PILL_RADIUS, // for fully circular\n // FAB: always fully circular (computed from size, but PILL_RADIUS for CSS)\n fab: PILL_RADIUS,\n // SegmentedControl: container uses lg, indicator uses md\n segmentedControl: radiusTokens.lg,\n segmentedControlIndicator: radiusTokens.md,\n // ActionSheet: container uses xl for prominent modal feel, items use md\n actionSheet: radiusTokens.xl,\n actionSheetItem: radiusTokens.md,\n input: radiusTokens.md,\n textarea: radiusTokens.md,\n select: radiusTokens.md,\n slider: radiusTokens.md, // for track container, thumb is always pill\n stepper: radiusTokens.md,\n radio: PILL_RADIUS, // always circular\n tagInput: radiusTokens.md,\n card: radiusTokens.lg,\n // Always pill-shaped regardless of preset\n badge: PILL_RADIUS,\n avatar: PILL_RADIUS,\n checkbox: radiusTokens.sm,\n switch: PILL_RADIUS,\n modal: radiusTokens.xl,\n tooltip: radiusTokens.md,\n // Chip: uses lg radius for pill-like but not full circular\n chip: radiusTokens.lg,\n // Image: uses md radius for default image corners\n image: radiusTokens.md,\n // Tabs: container uses lg for pill variant, indicator uses md\n tabs: radiusTokens.lg,\n tabsIndicator: radiusTokens.md,\n // Accordion: container uses lg for rounded card look\n accordion: radiusTokens.lg,\n // Carousel: indicator dots use full for perfect circles\n carousel: PILL_RADIUS,\n };\n}\n\n/**\n * Default component radius values.\n */\nexport const componentRadius = createComponentRadius(radius);\n","/**\n * Typography Tokens\n *\n * Consistent typography scale for all text elements.\n * Based on iOS Human Interface Guidelines with\n * consideration for React Native defaults.\n *\n * Supports Geist font family when loaded, falls back to system fonts.\n *\n * Usage:\n * ```tsx\n * const { typography, fontFamily } = useTheme();\n * <Text style={typography.body} />\n * <Text style={{ fontFamily: fontFamily.sans, fontSize: fontSize.lg }} />\n * ```\n */\n\nimport { TextStyle, Platform } from 'react-native';\n\n// =============================================================================\n// Font Sizes\n// =============================================================================\n\nexport const fontSize = {\n /** 10px - fine print */\n '2xs': 10,\n /** 11px - captions, labels */\n xs: 11,\n /** 12px - small text, badges */\n sm: 12,\n /** 14px - secondary text */\n base: 14,\n /** 16px - body text (default) */\n md: 16,\n /** 18px - emphasized body */\n lg: 18,\n /** 20px - small headings */\n xl: 20,\n /** 24px - section headings */\n '2xl': 24,\n /** 30px - page headings */\n '3xl': 30,\n /** 36px - large headings */\n '4xl': 36,\n /** 48px - display */\n '5xl': 48,\n} as const;\n\nexport type FontSizeKey = keyof typeof fontSize;\n\n// =============================================================================\n// Font Weights\n// =============================================================================\n\nexport const fontWeight = {\n /** 100 */\n thin: '100' as const,\n /** 200 */\n extralight: '200' as const,\n /** 300 */\n light: '300' as const,\n /** 400 - body text */\n normal: '400' as const,\n /** 500 - slightly emphasized */\n medium: '500' as const,\n /** 600 - buttons, labels */\n semibold: '600' as const,\n /** 700 - headings */\n bold: '700' as const,\n /** 800 */\n extrabold: '800' as const,\n /** 900 */\n black: '900' as const,\n} as const;\n\nexport type FontWeightKey = keyof typeof fontWeight;\n\n// =============================================================================\n// Line Heights\n// =============================================================================\n\nexport const lineHeight = {\n /** Tight: 1.0 */\n none: 1,\n /** Tight: 1.25 */\n tight: 1.25,\n /** Snug: 1.375 */\n snug: 1.375,\n /** Normal: 1.5 (default) */\n normal: 1.5,\n /** Relaxed: 1.625 */\n relaxed: 1.625,\n /** Loose: 2.0 */\n loose: 2,\n} as const;\n\nexport type LineHeightKey = keyof typeof lineHeight;\n\n// =============================================================================\n// Letter Spacing\n// =============================================================================\n\nexport const letterSpacing = {\n tighter: -0.8,\n tight: -0.4,\n normal: 0,\n wide: 0.4,\n wider: 0.8,\n widest: 1.6,\n} as const;\n\nexport type LetterSpacingKey = keyof typeof letterSpacing;\n\n// =============================================================================\n// Font Family\n// =============================================================================\n\n/**\n * System font fallbacks for when custom fonts aren't loaded.\n */\nexport const systemFonts = {\n /** Sans-serif system font */\n sans: Platform.select({\n ios: 'System',\n android: 'Roboto',\n default: 'System',\n }) as string,\n /** Monospace system font */\n mono: Platform.select({\n ios: 'Menlo',\n android: 'monospace',\n default: 'monospace',\n }) as string,\n} as const;\n\n/**\n * Semantic font tokens.\n *\n * Three fonts cover all use cases:\n * - `sans`: Body text, UI elements (default)\n * - `heading`: Headlines h1-h4 (can be display/serif font)\n * - `mono`: Code blocks, monospace text\n *\n * @example\n * ```tsx\n * // Use defaults (Geist)\n * <ThemeProvider>\n *\n * // Custom fonts\n * <ThemeProvider fonts={{\n * sans: 'Inter_400Regular',\n * heading: 'PlayfairDisplay_700Bold',\n * mono: 'FiraCode_400Regular',\n * }}>\n * ```\n */\nexport interface Fonts {\n /** Body text, UI elements */\n sans: string;\n /** Headlines (h1-h4) - defaults to bold variant of sans */\n heading: string;\n /** Code, monospace text */\n mono: string;\n}\n\n/**\n * Default fonts using Geist font family.\n * Used when no custom fonts are provided to ThemeProvider.\n */\nexport const defaultFonts: Fonts = {\n sans: 'Geist_400Regular',\n heading: 'Geist_700Bold',\n mono: 'GeistMono_400Regular',\n};\n\n/**\n * Legacy fontFamily export for backwards compatibility.\n * @deprecated Use `fonts` from useTheme() instead\n */\nexport const fontFamily = {\n /** Sans-serif: Geist or system default */\n sans: systemFonts.sans,\n /** Monospace: Geist Mono or system default */\n mono: systemFonts.mono,\n /** System font - always available */\n system: systemFonts.sans,\n} as const;\n\n/**\n * Font family with weight suffix for Geist.\n * Use these when Geist fonts are loaded.\n */\nexport const geistFontFamily = {\n // Sans variants\n 'sans-thin': 'Geist_100Thin',\n 'sans-extralight': 'Geist_200ExtraLight',\n 'sans-light': 'Geist_300Light',\n 'sans-regular': 'Geist_400Regular',\n 'sans-medium': 'Geist_500Medium',\n 'sans-semibold': 'Geist_600SemiBold',\n 'sans-bold': 'Geist_700Bold',\n 'sans-extrabold': 'Geist_800ExtraBold',\n 'sans-black': 'Geist_900Black',\n // Mono variants\n 'mono-thin': 'GeistMono_100Thin',\n 'mono-extralight': 'GeistMono_200ExtraLight',\n 'mono-light': 'GeistMono_300Light',\n 'mono-regular': 'GeistMono_400Regular',\n 'mono-medium': 'GeistMono_500Medium',\n 'mono-semibold': 'GeistMono_600SemiBold',\n 'mono-bold': 'GeistMono_700Bold',\n 'mono-extrabold': 'GeistMono_800ExtraBold',\n 'mono-black': 'GeistMono_900Black',\n} as const;\n\nexport type FontFamilyKey = keyof typeof fontFamily;\nexport type GeistFontFamilyKey = keyof typeof geistFontFamily;\n\n// =============================================================================\n// Typography Presets\n// =============================================================================\n\n/**\n * Typography preset styles type.\n */\nexport interface Typography {\n display: TextStyle;\n h1: TextStyle;\n h2: TextStyle;\n h3: TextStyle;\n h4: TextStyle;\n h5: TextStyle;\n h6: TextStyle;\n bodyLg: TextStyle;\n body: TextStyle;\n bodySm: TextStyle;\n label: TextStyle;\n labelSm: TextStyle;\n button: TextStyle;\n buttonSm: TextStyle;\n buttonLg: TextStyle;\n caption: TextStyle;\n overline: TextStyle;\n badge: TextStyle;\n code: TextStyle;\n}\n\nexport type TypographyKey = keyof Typography;\n\n/**\n * Creates typography presets with the given fonts.\n * Used internally by ThemeProvider to generate typography styles.\n */\nexport function createTypography(fonts: Fonts): Typography {\n return {\n // Display/Hero\n display: {\n fontFamily: fonts.heading,\n fontSize: fontSize['5xl'],\n fontWeight: fontWeight.bold,\n lineHeight: fontSize['5xl'] * lineHeight.tight,\n letterSpacing: letterSpacing.tight,\n },\n\n // Headings - use heading font\n h1: {\n fontFamily: fonts.heading,\n fontSize: fontSize['3xl'],\n fontWeight: fontWeight.bold,\n lineHeight: fontSize['3xl'] * lineHeight.tight,\n letterSpacing: letterSpacing.tight,\n },\n\n h2: {\n fontFamily: fonts.heading,\n fontSize: fontSize['2xl'],\n fontWeight: fontWeight.bold,\n lineHeight: fontSize['2xl'] * lineHeight.tight,\n },\n\n h3: {\n fontFamily: fonts.heading,\n fontSize: fontSize.xl,\n fontWeight: fontWeight.semibold,\n lineHeight: fontSize.xl * lineHeight.snug,\n },\n\n h4: {\n fontFamily: fonts.heading,\n fontSize: fontSize.lg,\n fontWeight: fontWeight.semibold,\n lineHeight: fontSize.lg * lineHeight.snug,\n },\n\n h5: {\n fontFamily: fonts.heading,\n fontSize: fontSize.md,\n fontWeight: fontWeight.semibold,\n lineHeight: fontSize.md * lineHeight.snug,\n },\n\n h6: {\n fontFamily: fonts.heading,\n fontSize: fontSize.base,\n fontWeight: fontWeight.semibold,\n lineHeight: fontSize.base * lineHeight.snug,\n },\n\n // Body - use sans font\n bodyLg: {\n fontFamily: fonts.sans,\n fontSize: fontSize.lg,\n fontWeight: fontWeight.normal,\n lineHeight: fontSize.lg * lineHeight.normal,\n },\n\n body: {\n fontFamily: fonts.sans,\n fontSize: fontSize.md,\n fontWeight: fontWeight.normal,\n lineHeight: fontSize.md * lineHeight.normal,\n },\n\n bodySm: {\n fontFamily: fonts.sans,\n fontSize: fontSize.base,\n fontWeight: fontWeight.normal,\n lineHeight: fontSize.base * lineHeight.normal,\n },\n\n // UI Text - use sans font\n label: {\n fontFamily: fonts.sans,\n fontSize: fontSize.base,\n fontWeight: fontWeight.medium,\n lineHeight: fontSize.base * lineHeight.snug,\n },\n\n labelSm: {\n fontFamily: fonts.sans,\n fontSize: fontSize.sm,\n fontWeight: fontWeight.medium,\n lineHeight: fontSize.sm * lineHeight.snug,\n },\n\n button: {\n fontFamily: fonts.sans,\n fontSize: fontSize.md,\n fontWeight: fontWeight.semibold,\n lineHeight: fontSize.md * lineHeight.none,\n },\n\n buttonSm: {\n fontFamily: fonts.sans,\n fontSize: fontSize.base,\n fontWeight: fontWeight.semibold,\n lineHeight: fontSize.base * lineHeight.none,\n },\n\n buttonLg: {\n fontFamily: fonts.sans,\n fontSize: fontSize.lg,\n fontWeight: fontWeight.semibold,\n lineHeight: fontSize.lg * lineHeight.none,\n },\n\n // Small text - use sans font\n caption: {\n fontFamily: fonts.sans,\n fontSize: fontSize.xs,\n fontWeight: fontWeight.normal,\n lineHeight: fontSize.xs * lineHeight.normal,\n },\n\n overline: {\n fontFamily: fonts.sans,\n fontSize: fontSize.xs,\n fontWeight: fontWeight.semibold,\n lineHeight: fontSize.xs * lineHeight.normal,\n letterSpacing: letterSpacing.wider,\n textTransform: 'uppercase',\n },\n\n badge: {\n fontFamily: fonts.sans,\n fontSize: fontSize.sm,\n fontWeight: fontWeight.medium,\n lineHeight: fontSize.sm * lineHeight.none,\n },\n\n // Code - use mono font\n code: {\n fontFamily: fonts.mono,\n fontSize: fontSize.sm,\n fontWeight: fontWeight.normal,\n lineHeight: fontSize.sm * lineHeight.normal,\n },\n };\n}\n\n/**\n * Default typography presets using default fonts.\n * @deprecated Use typography from useTheme() for font customization support\n */\nexport const typography = createTypography(defaultFonts);\n","/**\n * Shadow Presets\n *\n * Consistent shadow tokens for depth and elevation.\n * Platform-aware: iOS uses shadow properties, Android uses elevation.\n *\n * Inspired by iOS 17+ depth language and Linear App shadows.\n */\n\nimport { Platform, ViewStyle } from 'react-native';\n\nexport interface ShadowStyle {\n shadowColor: string;\n shadowOffset: { width: number; height: number };\n shadowOpacity: number;\n shadowRadius: number;\n elevation: number;\n}\n\n// Shadow presets for light mode\nconst lightShadows = {\n /** Subtle shadow for cards and surfaces */\n sm: {\n shadowColor: '#000000',\n shadowOffset: { width: 0, height: 1 },\n shadowOpacity: 0.05,\n shadowRadius: 2,\n elevation: 1,\n },\n\n /** Default shadow for buttons and interactive elements */\n md: {\n shadowColor: '#000000',\n shadowOffset: { width: 0, height: 2 },\n shadowOpacity: 0.08,\n shadowRadius: 4,\n elevation: 3,\n },\n\n /** Elevated shadow for modals and popovers */\n lg: {\n shadowColor: '#000000',\n shadowOffset: { width: 0, height: 4 },\n shadowOpacity: 0.12,\n shadowRadius: 8,\n elevation: 6,\n },\n\n /** Prominent shadow for floating elements */\n xl: {\n shadowColor: '#000000',\n shadowOffset: { width: 0, height: 8 },\n shadowOpacity: 0.15,\n shadowRadius: 16,\n elevation: 12,\n },\n\n /** Maximum shadow for overlays */\n '2xl': {\n shadowColor: '#000000',\n shadowOffset: { width: 0, height: 12 },\n shadowOpacity: 0.2,\n shadowRadius: 24,\n elevation: 16,\n },\n\n /** No shadow */\n none: {\n shadowColor: 'transparent',\n shadowOffset: { width: 0, height: 0 },\n shadowOpacity: 0,\n shadowRadius: 0,\n elevation: 0,\n },\n} as const;\n\n// Shadow presets for dark mode (more subtle)\nconst darkShadows = {\n sm: {\n shadowColor: '#000000',\n shadowOffset: { width: 0, height: 1 },\n shadowOpacity: 0.2,\n shadowRadius: 2,\n elevation: 1,\n },\n\n md: {\n shadowColor: '#000000',\n shadowOffset: { width: 0, height: 2 },\n shadowOpacity: 0.3,\n shadowRadius: 4,\n elevation: 3,\n },\n\n lg: {\n shadowColor: '#000000',\n shadowOffset: { width: 0, height: 4 },\n shadowOpacity: 0.4,\n shadowRadius: 8,\n elevation: 6,\n },\n\n xl: {\n shadowColor: '#000000',\n shadowOffset: { width: 0, height: 8 },\n shadowOpacity: 0.5,\n shadowRadius: 16,\n elevation: 12,\n },\n\n '2xl': {\n shadowColor: '#000000',\n shadowOffset: { width: 0, height: 12 },\n shadowOpacity: 0.6,\n shadowRadius: 24,\n elevation: 16,\n },\n\n none: {\n shadowColor: 'transparent',\n shadowOffset: { width: 0, height: 0 },\n shadowOpacity: 0,\n shadowRadius: 0,\n elevation: 0,\n },\n} as const;\n\n/** Available shadow size presets */\nexport type ShadowSize = keyof typeof lightShadows;\n\n/**\n * Get shadow styles for a given size and color scheme.\n *\n * Returns platform-specific shadow properties (iOS: shadow*, Android: elevation).\n * Prefer `platformShadow()` or `theme.platformShadow()` for cleaner API.\n *\n * @param size - Shadow size preset ('sm' | 'md' | 'lg' | 'xl' | '2xl' | 'none')\n * @param isDark - Whether dark mode is active (defaults to false)\n * @returns Complete shadow style object with all platform properties\n *\n * @example\n * ```tsx\n * const shadow = getShadow('md', isDark);\n * <View style={shadow} />\n * ```\n */\nexport function getShadow(size: ShadowSize, isDark: boolean = false): ShadowStyle {\n const shadows = isDark ? darkShadows : lightShadows;\n return shadows[size];\n}\n\n/**\n * Get platform-optimized shadow style.\n *\n * Returns only the relevant properties for the current platform:\n * - iOS: shadowColor, shadowOffset, shadowOpacity, shadowRadius\n * - Android: elevation\n * - Web: complete shadow object\n *\n * @param size - Shadow size preset ('sm' | 'md' | 'lg' | 'xl' | '2xl' | 'none')\n * @param isDark - Whether dark mode is active (defaults to false)\n * @returns Platform-specific shadow style object\n *\n * @example\n * ```tsx\n * const { platformShadow } = useTheme();\n * <View style={platformShadow('md')} />\n * ```\n */\nexport function getPlatformShadow(size: ShadowSize, isDark: boolean = false): ViewStyle {\n const shadow = getShadow(size, isDark);\n\n if (Platform.OS === 'ios') {\n return {\n shadowColor: shadow.shadowColor,\n shadowOffset: shadow.shadowOffset,\n shadowOpacity: shadow.shadowOpacity,\n shadowRadius: shadow.shadowRadius,\n };\n }\n\n if (Platform.OS === 'android') {\n return {\n elevation: shadow.elevation,\n };\n }\n\n return shadow;\n}\n\n/**\n * Complete shadow preset collections for light and dark modes.\n *\n * Prefer using `getShadow()` or `platformShadow()` instead of accessing directly.\n */\nexport const shadows = {\n light: lightShadows,\n dark: darkShadows,\n};\n","/**\n * Animation Presets\n *\n * Consistent animation configurations for micro-interactions.\n * Uses Reanimated's spring physics for natural motion.\n *\n * Inspired by iOS 17+ animations and Linear App micro-interactions.\n */\n\n// Type definitions for Reanimated-compatible configs\nexport interface SpringConfig {\n damping?: number;\n mass?: number;\n stiffness?: number;\n overshootClamping?: boolean;\n restDisplacementThreshold?: number;\n restSpeedThreshold?: number;\n velocity?: number;\n}\n\n/**\n * Timing config for animations.\n *\n * Note: We intentionally omit `easing` from these configs because custom easing\n * functions must be Reanimated worklets to work with withTiming(). Instead,\n * consumers should use Reanimated's Easing module directly:\n *\n * @example\n * ```tsx\n * import { Easing } from 'react-native-reanimated';\n *\n * withTiming(value, {\n * duration: timing.default.duration,\n * easing: Easing.out(Easing.quad),\n * });\n * ```\n */\nexport interface TimingConfig {\n duration: number;\n}\n\n/**\n * Spring configurations for different animation contexts.\n *\n * Reanimated-compatible spring physics presets for natural motion.\n * Use with `withSpring()` from react-native-reanimated.\n *\n * @example\n * ```tsx\n * import { withSpring } from 'react-native-reanimated';\n * const { springs } = useTheme();\n *\n * // Animate with spring physics\n * animatedValue.value = withSpring(targetValue, springs.snappy);\n * ```\n */\nexport const springs: SpringTokens = {\n /** Quick, snappy response - for buttons, toggles */\n snappy: {\n damping: 20,\n stiffness: 300,\n mass: 0.5,\n },\n\n /** Balanced spring - for general UI */\n default: {\n damping: 15,\n stiffness: 200,\n mass: 0.8,\n },\n\n /** Bouncy spring - for playful interactions */\n bouncy: {\n damping: 12,\n stiffness: 180,\n mass: 0.8,\n },\n\n /** Gentle spring - for larger movements */\n gentle: {\n damping: 18,\n stiffness: 120,\n mass: 1,\n },\n\n /** Stiff spring - minimal overshoot */\n stiff: {\n damping: 25,\n stiffness: 400,\n mass: 0.5,\n },\n\n /** Soft spring - for modal animations */\n soft: {\n damping: 20,\n stiffness: 100,\n mass: 1,\n },\n};\n\n/**\n * Timing configurations for animations.\n *\n * Duration-only configs - use Reanimated's Easing module for custom easing.\n *\n * @example\n * ```tsx\n * import { withTiming, Easing } from 'react-native-reanimated';\n * const { timing } = useTheme();\n *\n * animatedValue.value = withTiming(targetValue, {\n * duration: timing.default.duration,\n * easing: Easing.out(Easing.quad),\n * });\n * ```\n */\nexport const timing: TimingTokens = {\n /** Fast transition - 150ms */\n fast: { duration: 150 },\n\n /** Default transition - 200ms */\n default: { duration: 200 },\n\n /** Slow transition - 300ms */\n slow: { duration: 300 },\n\n /** Enter animation - 250ms */\n enter: { duration: 250 },\n\n /** Exit animation - 200ms */\n exit: { duration: 200 },\n};\n\n/**\n * Scale values for press animations.\n *\n * Use with animated press gestures to provide tactile feedback.\n *\n * @example\n * ```tsx\n * const { pressScale } = useTheme();\n * const scale = useSharedValue(1);\n *\n * const gesture = Gesture.Tap()\n * .onBegin(() => { scale.value = withSpring(pressScale.default); })\n * .onFinalize(() => { scale.value = withSpring(1); });\n * ```\n */\nexport const pressScale: PressScaleTokens = {\n /** Subtle press - for text buttons */\n subtle: 0.98,\n /** Default press - for buttons */\n default: 0.96,\n /** Prominent press - for cards */\n prominent: 0.94,\n};\n\n/**\n * Press scale token structure (flexible for presets)\n */\nexport interface PressScaleTokens {\n subtle: number;\n default: number;\n prominent: number;\n}\n\n/**\n * Common animation durations in milliseconds.\n *\n * Standard duration values for consistent animation timing across the app.\n *\n * @example\n * ```tsx\n * const { durations } = useTheme();\n * setTimeout(() => { ... }, durations.fast);\n * ```\n */\nexport const durations: DurationTokens = {\n instant: 0,\n fast: 150,\n default: 200,\n slow: 300,\n slower: 500,\n};\n\n/**\n * Duration token structure (flexible for presets)\n */\nexport interface DurationTokens {\n instant: number;\n fast: number;\n default: number;\n slow: number;\n slower: number;\n}\n\n/**\n * Spring tokens structure (flexible for presets)\n */\nexport interface SpringTokens {\n snappy: SpringConfig;\n default: SpringConfig;\n bouncy: SpringConfig;\n gentle: SpringConfig;\n stiff: SpringConfig;\n soft: SpringConfig;\n}\n\n/**\n * Timing tokens structure (flexible for presets)\n */\nexport interface TimingTokens {\n fast: TimingConfig;\n default: TimingConfig;\n slow: TimingConfig;\n enter: TimingConfig;\n exit: TimingConfig;\n}\n\n/** Available spring animation presets */\nexport type SpringPreset = keyof SpringTokens;\n\n/** Available timing animation presets */\nexport type TimingPreset = keyof TimingTokens;\n\n/** Available press scale presets */\nexport type PressScalePreset = keyof PressScaleTokens;\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Animation Presets (subtle vs playful)\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Animation preset type.\n * Controls the overall feel of animations throughout the app.\n *\n * - `subtle`: Professional, smooth animations with minimal overshoot\n * - `playful`: Bouncy, energetic animations with more personality\n */\nexport type AnimationPreset = 'subtle' | 'playful';\n\n/**\n * Animation tokens structure for presets\n */\nexport interface AnimationTokens {\n springs: SpringTokens;\n timing: TimingTokens;\n pressScale: PressScaleTokens;\n durations: DurationTokens;\n}\n\n/**\n * Subtle animation preset.\n *\n * Professional, smooth animations suited for business/productivity apps.\n * Higher damping = less bounce, faster settling.\n *\n * @example\n * ```tsx\n * <ThemeProvider animationPreset=\"subtle\">\n * <App />\n * </ThemeProvider>\n * ```\n */\nexport const subtleAnimations: AnimationTokens = {\n springs: {\n snappy: {\n damping: 28,\n stiffness: 350,\n mass: 0.4,\n },\n default: {\n damping: 22,\n stiffness: 250,\n mass: 0.6,\n },\n bouncy: {\n damping: 18,\n stiffness: 220,\n mass: 0.6,\n },\n gentle: {\n damping: 24,\n stiffness: 150,\n mass: 0.8,\n },\n stiff: {\n damping: 30,\n stiffness: 450,\n mass: 0.4,\n },\n soft: {\n damping: 26,\n stiffness: 130,\n mass: 0.8,\n },\n },\n timing: {\n fast: { duration: 120 },\n default: { duration: 180 },\n slow: { duration: 280 },\n enter: { duration: 220 },\n exit: { duration: 180 },\n },\n pressScale: {\n subtle: 0.99,\n default: 0.97,\n prominent: 0.95,\n },\n durations: {\n instant: 0,\n fast: 120,\n default: 180,\n slow: 280,\n slower: 450,\n },\n};\n\n/**\n * Playful animation preset.\n *\n * Bouncy, energetic animations suited for consumer/social apps.\n * Lower damping = more bounce, more overshoot.\n *\n * @example\n * ```tsx\n * <ThemeProvider animationPreset=\"playful\">\n * <App />\n * </ThemeProvider>\n * ```\n */\nexport const playfulAnimations: AnimationTokens = {\n springs: {\n snappy: {\n damping: 14,\n stiffness: 280,\n mass: 0.5,\n },\n default: {\n damping: 12,\n stiffness: 180,\n mass: 0.8,\n },\n bouncy: {\n damping: 8,\n stiffness: 150,\n mass: 0.9,\n },\n gentle: {\n damping: 14,\n stiffness: 100,\n mass: 1.1,\n },\n stiff: {\n damping: 18,\n stiffness: 350,\n mass: 0.5,\n },\n soft: {\n damping: 16,\n stiffness: 80,\n mass: 1.1,\n },\n },\n timing: {\n fast: { duration: 180 },\n default: { duration: 240 },\n slow: { duration: 350 },\n enter: { duration: 300 },\n exit: { duration: 220 },\n },\n pressScale: {\n subtle: 0.97,\n default: 0.94,\n prominent: 0.90,\n },\n durations: {\n instant: 0,\n fast: 180,\n default: 240,\n slow: 350,\n slower: 550,\n },\n};\n\n/**\n * Get animation tokens for a specific preset.\n *\n * @param preset - Animation preset ('subtle' | 'playful')\n * @returns Complete animation token set for the preset\n *\n * @example\n * ```tsx\n * const tokens = getAnimationPreset('playful');\n * // tokens contains springs, timing, pressScale, durations\n * ```\n */\nexport function getAnimationPreset(preset: AnimationPreset): AnimationTokens {\n switch (preset) {\n case 'subtle':\n return subtleAnimations;\n case 'playful':\n return playfulAnimations;\n default:\n // Default behavior matches the original springs/timing\n return {\n springs,\n timing,\n pressScale,\n durations,\n };\n }\n}\n\n/**\n * Default animation preset.\n *\n * Used when no `animationPreset` is specified on ThemeProvider.\n */\nexport const defaultAnimationPreset: AnimationPreset = 'subtle';\n","/**\n * Component Tokens\n *\n * Size and proportion tokens for all components.\n * Change these to globally adjust component dimensions.\n *\n * Each component has sm/md/lg size variants with consistent\n * heights, padding, and typography.\n *\n * @example\n * ```tsx\n * const { components } = useTheme();\n *\n * // Use component tokens for consistent sizing\n * <View style={{\n * height: components.button.md.height,\n * paddingHorizontal: components.button.md.paddingHorizontal,\n * }} />\n * ```\n */\n\nimport { spacing } from './spacing';\nimport { fontSize, fontWeight } from './typography';\n\n// =============================================================================\n// Component Heights\n// =============================================================================\n\n/**\n * Standard heights for interactive components.\n *\n * Based on touch target guidelines (minimum 44px).\n */\nexport const componentHeight = {\n /** Small: 32px */\n sm: 32,\n /** Medium: 44px (iOS recommended minimum) */\n md: 44,\n /** Large: 52px */\n lg: 52,\n} as const;\n\n// =============================================================================\n// Icon Sizes\n// =============================================================================\n\n/**\n * Standard icon sizes for components.\n */\nexport const iconSize = {\n /** Extra small: 12px */\n xs: 12,\n /** Small: 16px */\n sm: 16,\n /** Medium: 20px */\n md: 20,\n /** Large: 24px */\n lg: 24,\n /** Extra large: 32px */\n xl: 32,\n} as const;\n\n// =============================================================================\n// Button Component Tokens\n// =============================================================================\n\n/**\n * Button component size tokens.\n *\n * Defines heights, padding, font sizes, and icon sizes for all button variants.\n */\nexport const buttonTokens = {\n sm: {\n height: componentHeight.sm,\n paddingHorizontal: spacing[3],\n paddingVertical: spacing[1.5],\n fontSize: fontSize.base,\n fontWeight: fontWeight.semibold,\n iconSize: iconSize.sm,\n gap: spacing[1.5],\n },\n md: {\n height: componentHeight.md,\n paddingHorizontal: spacing[4],\n paddingVertical: spacing[2.5],\n fontSize: fontSize.md,\n fontWeight: fontWeight.semibold,\n iconSize: iconSize.md,\n gap: spacing[2],\n },\n lg: {\n height: componentHeight.lg,\n paddingHorizontal: spacing[6],\n paddingVertical: spacing[3.5],\n fontSize: fontSize.lg,\n fontWeight: fontWeight.semibold,\n iconSize: iconSize.lg,\n gap: spacing[2.5],\n },\n} as const;\n\n// =============================================================================\n// IconButton Component Tokens\n// =============================================================================\n\n/** IconButton component size tokens */\nexport const iconButtonTokens = {\n sm: {\n size: 32,\n iconSize: iconSize.sm,\n },\n md: {\n size: 40,\n iconSize: iconSize.md,\n },\n lg: {\n size: 48,\n iconSize: iconSize.lg,\n },\n xl: {\n size: 56,\n iconSize: 28,\n },\n} as const;\n\n// =============================================================================\n// FAB Component Tokens\n// =============================================================================\n\n/** Floating Action Button component size tokens */\nexport const fabTokens = {\n sm: {\n size: 40,\n iconSize: 18,\n fontSize: fontSize.sm,\n paddingHorizontal: spacing[3],\n fontWeight: fontWeight.semibold,\n },\n md: {\n size: 56,\n iconSize: iconSize.lg,\n fontSize: fontSize.base,\n paddingHorizontal: spacing[4],\n fontWeight: fontWeight.semibold,\n },\n lg: {\n size: 72,\n iconSize: iconSize.xl,\n fontSize: fontSize.md,\n paddingHorizontal: spacing[5],\n fontWeight: fontWeight.semibold,\n },\n} as const;\n\n// =============================================================================\n// SegmentedControl Component Tokens\n// =============================================================================\n\n/** SegmentedControl component size tokens */\nexport const segmentedControlTokens = {\n sm: {\n height: componentHeight.sm,\n fontSize: fontSize.sm,\n padding: 4,\n fontWeight: fontWeight.medium,\n activeFontWeight: fontWeight.semibold,\n },\n md: {\n height: 40,\n fontSize: fontSize.base,\n padding: 4,\n fontWeight: fontWeight.medium,\n activeFontWeight: fontWeight.semibold,\n },\n lg: {\n height: 48,\n fontSize: fontSize.md,\n padding: 4,\n fontWeight: fontWeight.medium,\n activeFontWeight: fontWeight.semibold,\n },\n} as const;\n\n// =============================================================================\n// ActionSheet Component Tokens\n// =============================================================================\n\n/** ActionSheet component size tokens */\nexport const actionSheetTokens = {\n item: {\n height: componentHeight.lg,\n fontSize: fontSize.md,\n fontWeight: fontWeight.medium,\n iconSize: iconSize.md,\n paddingHorizontal: spacing[4],\n gap: spacing[3],\n },\n header: {\n fontSize: fontSize.sm,\n fontWeight: fontWeight.semibold,\n paddingVertical: spacing[3],\n paddingHorizontal: spacing[4],\n },\n cancel: {\n height: componentHeight.lg,\n fontSize: fontSize.md,\n fontWeight: fontWeight.semibold,\n },\n} as const;\n\n// =============================================================================\n// Input Component Tokens\n// =============================================================================\n\n/** Input component size tokens */\nexport const inputTokens = {\n sm: {\n height: componentHeight.sm,\n paddingHorizontal: spacing[3],\n paddingVertical: spacing[1.5],\n borderWidth: 1,\n fontSize: fontSize.base,\n labelFontSize: fontSize.sm,\n helperFontSize: fontSize.xs,\n iconSize: iconSize.sm,\n },\n md: {\n height: componentHeight.md,\n paddingHorizontal: spacing[3],\n paddingVertical: spacing[2.5],\n borderWidth: 1,\n fontSize: fontSize.md,\n labelFontSize: fontSize.base,\n helperFontSize: fontSize.sm,\n iconSize: iconSize.md,\n },\n lg: {\n height: componentHeight.lg,\n paddingHorizontal: spacing[4],\n paddingVertical: spacing[3],\n borderWidth: 1,\n fontSize: fontSize.lg,\n labelFontSize: fontSize.md,\n helperFontSize: fontSize.base,\n iconSize: iconSize.lg,\n },\n} as const;\n\n// =============================================================================\n// Checkbox Component Tokens\n// =============================================================================\n\n/** Checkbox component size tokens */\nexport const checkboxTokens = {\n sm: {\n size: 18,\n borderWidth: 2,\n iconSize: 12,\n labelFontSize: fontSize.base,\n gap: spacing[2],\n },\n md: {\n size: 22,\n borderWidth: 2,\n iconSize: 14,\n labelFontSize: fontSize.md,\n gap: spacing[2.5],\n },\n lg: {\n size: 26,\n borderWidth: 2,\n iconSize: 18,\n labelFontSize: fontSize.lg,\n gap: spacing[3],\n },\n} as const;\n\n// =============================================================================\n// Switch Component Tokens\n// =============================================================================\n\n/** Switch component size tokens */\nexport const switchTokens = {\n sm: {\n trackWidth: 40,\n trackHeight: 24,\n thumbSize: 20,\n thumbOffset: 2,\n labelFontSize: fontSize.base,\n gap: spacing[3],\n },\n md: {\n trackWidth: 50,\n trackHeight: 30,\n thumbSize: 26,\n thumbOffset: 2,\n labelFontSize: fontSize.md,\n gap: spacing[3],\n },\n lg: {\n trackWidth: 60,\n trackHeight: 36,\n thumbSize: 32,\n thumbOffset: 2,\n labelFontSize: fontSize.lg,\n gap: spacing[4],\n },\n} as const;\n\n// =============================================================================\n// Badge Component Tokens\n// =============================================================================\n\n/** Badge component size tokens */\nexport const badgeTokens = {\n sm: {\n paddingHorizontal: spacing[1.5],\n paddingVertical: spacing[0.5],\n fontSize: fontSize.xs,\n fontWeight: fontWeight.medium,\n },\n md: {\n paddingHorizontal: spacing[2.5],\n paddingVertical: spacing[0.5],\n fontSize: fontSize.sm,\n fontWeight: fontWeight.medium,\n },\n lg: {\n paddingHorizontal: spacing[3],\n paddingVertical: spacing[1],\n fontSize: fontSize.base,\n fontWeight: fontWeight.medium,\n },\n} as const;\n\n// =============================================================================\n// Avatar Component Tokens\n// =============================================================================\n\n/** Avatar component size tokens */\nexport const avatarTokens = {\n sm: {\n size: 32,\n fontSize: fontSize.xs,\n fontWeight: fontWeight.semibold,\n },\n md: {\n size: 40,\n fontSize: fontSize.base,\n fontWeight: fontWeight.semibold,\n },\n lg: {\n size: 56,\n fontSize: fontSize.xl,\n fontWeight: fontWeight.semibold,\n },\n} as const;\n\n// =============================================================================\n// Textarea Component Tokens\n// =============================================================================\n\n/** Textarea component size tokens */\nexport const textareaTokens = {\n sm: {\n minHeight: componentHeight.sm * 3,\n paddingHorizontal: spacing[3],\n paddingVertical: spacing[2],\n borderWidth: 1,\n fontSize: fontSize.base,\n lineHeight: 20,\n labelFontSize: fontSize.sm,\n helperFontSize: fontSize.xs,\n },\n md: {\n minHeight: componentHeight.md * 3,\n paddingHorizontal: spacing[3],\n paddingVertical: spacing[2.5],\n borderWidth: 1,\n fontSize: fontSize.md,\n lineHeight: 22,\n labelFontSize: fontSize.base,\n helperFontSize: fontSize.sm,\n },\n lg: {\n minHeight: componentHeight.lg * 3,\n paddingHorizontal: spacing[4],\n paddingVertical: spacing[3],\n borderWidth: 1,\n fontSize: fontSize.lg,\n lineHeight: 24,\n labelFontSize: fontSize.md,\n helperFontSize: fontSize.base,\n },\n} as const;\n\n// =============================================================================\n// Select Component Tokens\n// =============================================================================\n\n/** Select component size tokens */\nexport const selectTokens = {\n sm: {\n height: componentHeight.sm,\n paddingHorizontal: spacing[3],\n borderWidth: 1,\n fontSize: fontSize.base,\n labelFontSize: fontSize.sm,\n helperFontSize: fontSize.xs,\n iconSize: iconSize.sm,\n },\n md: {\n height: componentHeight.md,\n paddingHorizontal: spacing[3],\n borderWidth: 1,\n fontSize: fontSize.md,\n labelFontSize: fontSize.base,\n helperFontSize: fontSize.sm,\n iconSize: iconSize.md,\n },\n lg: {\n height: componentHeight.lg,\n paddingHorizontal: spacing[4],\n borderWidth: 1,\n fontSize: fontSize.lg,\n labelFontSize: fontSize.md,\n helperFontSize: fontSize.base,\n iconSize: iconSize.lg,\n },\n} as const;\n\n// =============================================================================\n// Slider Component Tokens\n// =============================================================================\n\n/** Slider component size tokens */\nexport const sliderTokens = {\n sm: {\n trackHeight: 4,\n thumbSize: 16,\n labelFontSize: fontSize.base,\n valueFontSize: fontSize.base,\n },\n md: {\n trackHeight: 6,\n thumbSize: 20,\n labelFontSize: fontSize.md,\n valueFontSize: fontSize.md,\n },\n lg: {\n trackHeight: 8,\n thumbSize: 24,\n labelFontSize: fontSize.lg,\n valueFontSize: fontSize.lg,\n },\n} as const;\n\n// =============================================================================\n// Stepper Component Tokens\n// =============================================================================\n\n/** Stepper component size tokens */\nexport const stepperTokens = {\n sm: {\n height: componentHeight.sm,\n buttonWidth: 32,\n valueWidth: 40,\n fontSize: fontSize.base,\n iconSize: iconSize.sm,\n labelFontSize: fontSize.base,\n },\n md: {\n height: componentHeight.md,\n buttonWidth: 40,\n valueWidth: 48,\n fontSize: fontSize.md,\n iconSize: iconSize.md,\n labelFontSize: fontSize.md,\n },\n lg: {\n height: componentHeight.lg,\n buttonWidth: 48,\n valueWidth: 56,\n fontSize: fontSize.lg,\n iconSize: iconSize.lg,\n labelFontSize: fontSize.lg,\n },\n} as const;\n\n// =============================================================================\n// Radio Component Tokens\n// =============================================================================\n\n/** Radio component size tokens */\nexport const radioTokens = {\n sm: {\n outerSize: 16,\n innerSize: 8,\n borderWidth: 2,\n labelFontSize: fontSize.base,\n descriptionFontSize: fontSize.sm,\n gap: spacing[2],\n },\n md: {\n outerSize: 20,\n innerSize: 10,\n borderWidth: 2,\n labelFontSize: fontSize.md,\n descriptionFontSize: fontSize.base,\n gap: spacing[2.5],\n },\n lg: {\n outerSize: 24,\n innerSize: 12,\n borderWidth: 2,\n labelFontSize: fontSize.lg,\n descriptionFontSize: fontSize.md,\n gap: spacing[3],\n },\n} as const;\n\n// =============================================================================\n// TagInput Component Tokens\n// =============================================================================\n\n/** TagInput component size tokens */\nexport const tagInputTokens = {\n sm: {\n minHeight: componentHeight.sm,\n padding: spacing[2],\n tagHeight: 24,\n tagFontSize: fontSize.xs,\n inputFontSize: fontSize.base,\n labelFontSize: fontSize.sm,\n helperFontSize: fontSize.xs,\n gap: spacing[1],\n },\n md: {\n minHeight: componentHeight.md,\n padding: spacing[3],\n tagHeight: 28,\n tagFontSize: fontSize.sm,\n inputFontSize: fontSize.md,\n labelFontSize: fontSize.base,\n helperFontSize: fontSize.sm,\n gap: spacing[1.5],\n },\n lg: {\n minHeight: componentHeight.lg,\n padding: spacing[4],\n tagHeight: 32,\n tagFontSize: fontSize.base,\n inputFontSize: fontSize.lg,\n labelFontSize: fontSize.md,\n helperFontSize: fontSize.base,\n gap: spacing[2],\n },\n} as const;\n\n// =============================================================================\n// Chip Component Tokens\n// =============================================================================\n\n/** Chip component size tokens */\nexport const chipTokens = {\n sm: {\n paddingHorizontal: spacing[2.5],\n paddingVertical: spacing[1],\n fontSize: fontSize.sm,\n iconSize: iconSize.sm,\n },\n md: {\n paddingHorizontal: spacing[3.5],\n paddingVertical: spacing[1.5],\n fontSize: fontSize.base,\n iconSize: iconSize.sm,\n },\n lg: {\n paddingHorizontal: spacing[5], // closest to 18 (was 4.5)\n paddingVertical: spacing[2],\n fontSize: fontSize.md,\n iconSize: iconSize.md,\n },\n} as const;\n\n// =============================================================================\n// Label Component Tokens\n// =============================================================================\n\n/** Label component size tokens */\nexport const labelTokens = {\n sm: {\n fontSize: fontSize.sm,\n lineHeight: 16,\n fontWeight: fontWeight.medium,\n },\n md: {\n fontSize: fontSize.base,\n lineHeight: 20,\n fontWeight: fontWeight.medium,\n },\n lg: {\n fontSize: fontSize.md,\n lineHeight: 24,\n fontWeight: fontWeight.medium,\n },\n} as const;\n\n// =============================================================================\n// Rating Component Tokens\n// =============================================================================\n\n/** Rating component size tokens */\nexport const ratingTokens = {\n sm: {\n starSize: 18,\n gap: spacing[0.5],\n },\n md: {\n starSize: 26,\n gap: spacing[1],\n },\n lg: {\n starSize: 34,\n gap: spacing[1.5],\n },\n} as const;\n\n// =============================================================================\n// AvatarStack Component Tokens\n// =============================================================================\n\n/** AvatarStack component size tokens */\nexport const avatarStackTokens = {\n sm: {\n size: 28,\n fontSize: fontSize['2xs'],\n borderWidth: 2,\n },\n md: {\n size: 36,\n fontSize: fontSize.sm,\n borderWidth: 2,\n },\n lg: {\n size: 44,\n fontSize: fontSize.base,\n borderWidth: 3,\n },\n xl: {\n size: 56,\n fontSize: fontSize.lg,\n borderWidth: 3,\n },\n} as const;\n\n// =============================================================================\n// Card Component Tokens\n// =============================================================================\n\n/** Card component tokens */\nexport const cardTokens = {\n borderWidth: 1,\n padding: spacing[4],\n headerPadding: spacing[4],\n contentPadding: spacing[4],\n footerPadding: spacing[4],\n gap: spacing[2],\n titleFontSize: fontSize.lg,\n titleFontWeight: fontWeight.semibold,\n descriptionFontSize: fontSize.base,\n} as const;\n\n// =============================================================================\n// Overlay Typography Tokens (Dialog, AlertDialog, Sheet)\n// =============================================================================\n\n/** Overlay typography tokens (Dialog, AlertDialog, Sheet) */\nexport const overlayTypography = {\n title: {\n fontSize: fontSize.lg, // 18\n fontWeight: fontWeight.semibold,\n lineHeight: 24,\n },\n description: {\n fontSize: fontSize.base, // 14\n fontWeight: fontWeight.normal,\n lineHeight: 20,\n },\n} as const;\n\n// =============================================================================\n// Spinner Component Tokens\n// =============================================================================\n\n/** Spinner component size tokens */\nexport const spinnerTokens = {\n sm: {\n containerSize: 16,\n indicatorSize: 'small' as const,\n },\n md: {\n containerSize: 24,\n indicatorSize: 'small' as const,\n },\n lg: {\n containerSize: 36,\n indicatorSize: 'large' as const,\n },\n} as const;\n\n// =============================================================================\n// Skeleton Component Tokens\n// =============================================================================\n\n/** Skeleton component tokens */\nexport const skeletonTokens = {\n radius: {\n none: 0,\n sm: 4,\n md: 8,\n lg: 12,\n full: 9999,\n },\n animation: {\n duration: 1500,\n minOpacity: 0.3,\n maxOpacity: 0.6,\n },\n text: {\n defaultLines: 3,\n defaultGap: 8,\n defaultLineHeight: 16,\n lastLineWidth: '60%',\n },\n} as const;\n\n// =============================================================================\n// Progress Component Tokens\n// =============================================================================\n\n/** Progress component size tokens */\nexport const progressTokens = {\n sm: {\n height: 4,\n },\n md: {\n height: 8,\n },\n lg: {\n height: 12,\n },\n animation: {\n determinateDuration: 300,\n indeterminateDuration: 1000,\n },\n} as const;\n\n// =============================================================================\n// CircularProgress Component Tokens\n// =============================================================================\n\n/** CircularProgress component size tokens */\nexport const circularProgressTokens = {\n sm: {\n size: 40,\n strokeWidth: 4,\n labelSize: 10,\n },\n md: {\n size: 64,\n strokeWidth: 6,\n labelSize: 14,\n },\n lg: {\n size: 96,\n strokeWidth: 8,\n labelSize: 20,\n },\n animation: {\n rotationDuration: 1200,\n springDamping: 20,\n springStiffness: 100,\n },\n} as const;\n\n// =============================================================================\n// List Component Tokens\n// =============================================================================\n\n/**\n * List component constants for consistent dimensions.\n * dividerInset = iconSize (24) + leftSlot marginRight (spacing[3] = 12) + container paddingHorizontal (spacing[4] = 16) = 52\n * Using spacing[14] (56) for standard iOS list inset pattern.\n */\nexport const LIST_CONSTANTS = {\n /** Standard divider inset (aligns with icon + text layout) */\n dividerInset: spacing[14], // 56px - matches iOS standard\n /** Default list item min height */\n itemMinHeight: componentHeight.lg, // 52px\n /** Legacy minHeight for backwards compatibility (thumbnail variant fallback) */\n legacyMinHeight: 56,\n} as const;\n\n/** List component tokens */\nexport const listTokens = {\n divider: {\n inset: LIST_CONSTANTS.dividerInset,\n },\n item: {\n minHeight: LIST_CONSTANTS.itemMinHeight,\n paddingHorizontal: spacing[4],\n paddingVertical: spacing[3],\n iconSize: iconSize.lg,\n iconMargin: spacing[3],\n },\n} as const;\n\n// =============================================================================\n// Tabs Component Tokens\n// =============================================================================\n\nexport const TABS_CONSTANTS = {\n /** Indicator animation spring config */\n spring: { damping: 20, stiffness: 200 },\n /** Indicator height for underline variant */\n indicatorHeight: 2,\n /** Container padding for pill variant */\n pillPadding: 4,\n} as const;\n\n/** Tabs component tokens */\nexport const tabsTokens = {\n trigger: {\n fontSize: fontSize.base,\n fontWeight: fontWeight.medium,\n activeFontWeight: fontWeight.semibold,\n paddingVertical: spacing[2],\n paddingHorizontal: spacing[3],\n },\n triggerUnderline: {\n paddingVertical: spacing[3],\n paddingHorizontal: spacing[4],\n },\n content: {\n marginTop: spacing[4],\n },\n indicator: {\n pillTop: 4,\n pillBottom: 4,\n underlineHeight: TABS_CONSTANTS.indicatorHeight,\n },\n} as const;\n\n// =============================================================================\n// Accordion Component Tokens\n// =============================================================================\n\nexport const ACCORDION_CONSTANTS = {\n /** Spring animation config for smooth expand/collapse */\n spring: { damping: 20, stiffness: 200, mass: 0.5 },\n /** Chevron icon size */\n chevronSize: 16,\n} as const;\n\n/** Accordion component tokens */\nexport const accordionTokens = {\n trigger: {\n fontSize: fontSize.md,\n fontWeight: fontWeight.medium,\n paddingVertical: spacing[4],\n paddingHorizontal: spacing[4],\n iconMargin: spacing[2],\n },\n content: {\n paddingHorizontal: spacing[4],\n paddingBottom: spacing[4],\n },\n item: {\n borderWidth: 1,\n },\n} as const;\n\n// =============================================================================\n// Collapsible Component Tokens\n// =============================================================================\n\nexport const COLLAPSIBLE_CONSTANTS = {\n /** Spring animation config (same as accordion for consistency) */\n spring: { damping: 20, stiffness: 200, mass: 0.5 },\n /** Chevron icon size */\n chevronSize: 16,\n} as const;\n\n/** Collapsible component tokens */\nexport const collapsibleTokens = {\n trigger: {\n paddingVertical: spacing[3],\n paddingHorizontal: spacing[4],\n iconMargin: spacing[2],\n },\n} as const;\n\n// =============================================================================\n// Carousel Component Tokens\n// =============================================================================\n\nexport const CAROUSEL_CONSTANTS = {\n /** Default autoplay interval in ms */\n autoplayInterval: 4000,\n /** Scroll event throttle (16ms = 60fps) */\n scrollEventThrottle: 16,\n} as const;\n\n/** Carousel component tokens */\nexport const carouselTokens = {\n indicator: {\n dotSize: 8,\n dotActiveWidth: 24,\n dotActiveScale: 1,\n dotInactiveScale: 0.8,\n dotInactiveOpacity: 0.4,\n gap: spacing[1.5],\n paddingVertical: spacing[2],\n },\n lineIndicator: {\n activeWidth: 24,\n inactiveWidth: 8,\n },\n} as const;\n\n// =============================================================================\n// SwipeableRow Component Tokens\n// =============================================================================\n\nexport const SWIPEABLE_ROW_CONSTANTS = {\n /** Default action button width */\n actionWidth: 80,\n /** Spring animation config */\n spring: { damping: 20, stiffness: 200 },\n /** Velocity threshold for snap decision (px/s) */\n velocityThreshold: 500,\n /** Full swipe trigger ratio (0.5 = 50% of screen width) */\n fullSwipeRatio: 0.5,\n /** Resistance factor when overswiping */\n resistanceFactor: 0.3,\n} as const;\n\n/** SwipeableRow component tokens */\nexport const swipeableRowTokens = {\n action: {\n width: SWIPEABLE_ROW_CONSTANTS.actionWidth,\n paddingHorizontal: spacing[2],\n iconMargin: spacing[1],\n labelFontSize: fontSize.xs,\n labelFontWeight: fontWeight.semibold,\n },\n} as const;\n\n// =============================================================================\n// Auth Block Tokens (Login, Signup)\n// =============================================================================\n\n/** Auth block tokens (Login, Signup) */\nexport const authBlockTokens = {\n header: {\n titleFontSize: fontSize['2xl'], // 28 - matches existing\n titleFontWeight: fontWeight.bold,\n subtitleFontSize: fontSize.md, // 16\n },\n form: {\n forgotLinkFontSize: fontSize.base, // 14\n forgotLinkFontWeight: fontWeight.medium,\n passwordHintFontSize: fontSize.xs, // 12\n },\n divider: {\n fontSize: fontSize.base, // 14\n },\n footer: {\n textFontSize: fontSize.base, // 14\n linkFontSize: fontSize.base, // 14\n linkFontWeight: fontWeight.semibold,\n },\n social: {\n gap: spacing[3],\n },\n} as const;\n\n// =============================================================================\n// State Block Tokens (Empty State, Error State)\n// =============================================================================\n\n/** State block tokens (Empty State, Error State) */\nexport const stateBlockTokens = {\n default: {\n titleFontSize: fontSize.xl, // 20\n descriptionFontSize: fontSize.md, // 15\n iconContainerSize: 80,\n iconContainerRadius: 40,\n },\n compact: {\n titleFontSize: fontSize.lg, // 18\n descriptionFontSize: fontSize.base,// 14\n iconContainerSize: 64,\n iconContainerRadius: 32,\n },\n error: {\n iconContainerSize: 88,\n iconContainerRadius: 44,\n iconContainerSizeCompact: 72,\n iconContainerRadiusCompact: 36,\n codeFontSize: fontSize.xs, // 12\n },\n typography: {\n titleFontWeight: fontWeight.semibold,\n },\n} as const;\n\n// =============================================================================\n// Profile Block Tokens\n// =============================================================================\n\n/** Profile block tokens */\nexport const profileBlockTokens = {\n name: {\n fontSize: fontSize['2xl'] - 4, // 24 (2xl is 28, so 24)\n fontWeight: fontWeight.bold,\n },\n subtitle: {\n fontSize: fontSize.md, // 15 -> closest is md (16), use 15\n },\n bio: {\n fontSize: fontSize.md, // 15\n lineHeight: 22,\n },\n stat: {\n valueFontSize: fontSize.xl, // 20\n valueFontWeight: fontWeight.bold,\n labelFontSize: fontSize.sm, // 13 -> closest is sm (12)\n },\n} as const;\n\n// =============================================================================\n// Settings Block Tokens\n// =============================================================================\n\n/** Settings block tokens */\nexport const settingsBlockTokens = {\n group: {\n titleFontSize: fontSize.xs, // 12\n titleFontWeight: fontWeight.semibold,\n titleLetterSpacing: 0.5,\n descriptionFontSize: fontSize.sm, // 13\n },\n item: {\n labelFontSize: fontSize.md, // 16\n descriptionFontSize: fontSize.sm, // 13\n displayValueFontSize: fontSize.md, // 15\n chevronFontSize: fontSize.md, // 16\n chevronFontWeight: fontWeight.semibold,\n paddingVertical: spacing[3.5],\n paddingHorizontal: spacing[4],\n },\n} as const;\n\n// =============================================================================\n// E-commerce Block Tokens (Banner, Hero, Pricing, Stats)\n// =============================================================================\n\n/** E-commerce block tokens (Banner, Hero, Pricing, Stats) */\nexport const ecommerceBlockTokens = {\n banner: {\n sm: {\n padding: spacing[3], // 12\n titleFontSize: fontSize.base, // 14\n subtitleFontSize: fontSize.xs, // 12\n iconSize: 20,\n minHeight: 56,\n },\n md: {\n padding: spacing[4], // 16\n titleFontSize: fontSize.md, // 16\n subtitleFontSize: fontSize.base, // 14\n iconSize: 24,\n minHeight: 72,\n },\n lg: {\n padding: spacing[5], // 20\n titleFontSize: fontSize.xl, // 20\n subtitleFontSize: fontSize.md, // 16\n iconSize: 32,\n minHeight: 100,\n },\n titleFontWeight: fontWeight.bold,\n subtitleLineHeight: 20,\n },\n hero: {\n titleFontSize: fontSize['3xl'], // 32\n titleFontWeight: 800, // extra bold\n titleLineHeight: 38,\n subtitleFontSize: fontSize.md, // 16\n subtitleLineHeight: 24,\n defaultHeight: 400,\n },\n pricing: {\n planNameFontSize: fontSize.xl, // 20\n planNameFontWeight: fontWeight.bold,\n descriptionFontSize: fontSize.base, // 14\n priceFontSize: 40,\n priceFontWeight: 800,\n priceLineHeight: 48,\n intervalFontSize: fontSize.md, // 16\n intervalFontWeight: fontWeight.medium,\n originalPriceFontSize: fontSize.md, // 16\n savingsFontSize: fontSize.sm, // 13\n savingsFontWeight: fontWeight.semibold,\n featureTextFontSize: fontSize.base, // 14\n featureIconSize: 20,\n featureIconInnerSize: 12,\n badgeTopOffset: -12,\n },\n stats: {\n labelFontSize: fontSize.base, // 14\n labelFontWeight: fontWeight.medium,\n valueFontSize: fontSize['3xl'], // 32\n valueFontWeight: fontWeight.bold,\n trendFontSize: fontSize.base, // 14\n trendFontWeight: fontWeight.semibold,\n trendLabelFontSize: fontSize.sm, // 13\n },\n} as const;\n\n// =============================================================================\n// Info Block Tokens (Feature, Content, Onboarding, Media, Notification, etc.)\n// =============================================================================\n\n/** Info block tokens (Feature, Content, Onboarding, Media, Notification) */\nexport const infoBlockTokens = {\n feature: {\n titleFontSize: fontSize.md, // 16\n titleFontWeight: fontWeight.semibold,\n descriptionFontSize: fontSize.base, // 14\n descriptionLineHeight: 20,\n iconContainerSize: 56,\n iconContainerSizeHorizontal: 48,\n },\n content: {\n titleFontSize: fontSize.lg, // 18\n titleFontWeight: fontWeight.bold,\n titleLineHeight: 24,\n subtitleFontSize: fontSize.base, // 14\n subtitleLineHeight: 20,\n defaultAspectRatio: 16 / 9,\n },\n onboarding: {\n titleFontSize: fontSize['2xl'], // 28\n titleFontWeight: fontWeight.bold,\n titleLineHeight: 34,\n descriptionFontSize: fontSize.md, // 16\n descriptionLineHeight: 24,\n dotSize: 8,\n dotActiveWidth: 24,\n paginationMarginTop: 32,\n illustrationPaddingHorizontal: 40,\n },\n socialProof: {\n textFontSize: fontSize.base, // 14\n textLineHeight: 18,\n avatarOverlapRatio: 0.3,\n },\n notification: {\n textFontSize: 15, // 15 (between base and md)\n textLineHeight: 20,\n titleFontWeight: fontWeight.semibold,\n timeFontSize: fontSize.sm, // 13\n unreadDotSize: 8,\n avatarSize: 44,\n },\n media: {\n defaultSize: 100,\n playButtonSize: 44,\n playIconSize: 24,\n checkboxSize: 24,\n checkIconSize: 14,\n durationBadgeMargin: spacing[1],\n checkboxOffset: spacing[2],\n },\n order: {\n orderIdFontSize: 15,\n orderIdFontWeight: fontWeight.semibold,\n dateFontSize: fontSize.sm, // 13\n itemCountFontSize: fontSize.base, // 14\n totalFontSize: fontSize.md, // 16\n totalFontWeight: fontWeight.bold,\n productImageSize: 48,\n moreTextFontSize: fontSize.base, // 14\n moreTextFontWeight: fontWeight.semibold,\n },\n task: {\n titleFontSize: 15,\n titleFontWeight: fontWeight.medium,\n titleLineHeight: 20,\n descriptionFontSize: fontSize.sm, // 13\n dueDateFontSize: fontSize.xs, // 12\n moreTagsFontSize: fontSize.xs, // 12\n flagIconSize: 12,\n calendarIconSize: 12,\n },\n searchHeader: {\n filterBadgeOffset: -4,\n },\n} as const;\n\n// =============================================================================\n// Content & Social Block Tokens (Phase 10)\n// =============================================================================\n\n/**\n * Shared card block visual tokens\n * Used by: ProductCard, ArticleCard, EventCard, ReviewCard\n */\n/** Card block tokens (Product, Article, Event, Review cards) */\nexport const cardBlockTokens = {\n shadow: 'sm' as const,\n borderWidth: 1,\n image: {\n productAspectRatio: 1,\n articleAspectRatio: 1.78,\n eventAspectRatio: 2.4,\n reviewAspectRatio: 1,\n },\n header: {\n paddingVertical: spacing[3],\n paddingHorizontal: spacing[4],\n gap: spacing[2],\n },\n content: {\n paddingVertical: spacing[3],\n paddingHorizontal: spacing[4],\n gap: spacing[1.5],\n },\n footer: {\n paddingVertical: spacing[3],\n paddingHorizontal: spacing[4],\n gap: spacing[2],\n },\n typography: {\n titleFontSize: fontSize.md,\n titleFontWeight: fontWeight.semibold,\n subtitleFontSize: fontSize.base,\n priceFontSize: fontSize.lg,\n priceFontWeight: fontWeight.bold,\n metaFontSize: fontSize.sm,\n },\n} as const;\n\n/**\n * Social interaction block tokens\n * Used by: FeedPostCard, ChatBubble, CommentItem, UserListItem\n */\n/** Social block tokens (Feed, Chat, Comments, User lists) */\nexport const socialBlockTokens = {\n action: {\n iconSize: iconSize.md,\n gap: spacing[1],\n touchTarget: 44,\n },\n avatar: {\n postSize: 'md' as const,\n commentSize: 'sm' as const,\n chatSize: 'sm' as const,\n listSize: 'md' as const,\n },\n bubble: {\n maxWidth: '75%',\n paddingVertical: spacing[2],\n paddingHorizontal: spacing[3],\n ownBackground: 'primary' as const,\n otherBackground: 'secondary' as const,\n },\n comment: {\n indentPerLevel: spacing[6],\n maxNestingLevels: 3,\n },\n typography: {\n authorFontSize: fontSize.base,\n authorFontWeight: fontWeight.semibold,\n contentFontSize: fontSize.md,\n contentLineHeight: 22,\n timeFontSize: fontSize.sm,\n actionFontSize: fontSize.sm,\n },\n} as const;\n\n/**\n * Product block tokens (Phase 10 - Product cards and cart items)\n * Used by: ProductCard, CartItem\n */\n/** Product block tokens (Product cards, Cart items) */\nexport const productBlockTokens = {\n product: {\n badgePosition: { top: spacing[2], left: spacing[2] },\n wishlistPosition: { top: spacing[2], right: spacing[2] },\n ratingSize: 'sm' as const,\n },\n cart: {\n imageSize: 80,\n stepperSize: 'sm' as const,\n swipeActionWidth: 80,\n },\n pricing: {\n originalPriceOpacity: 0.6,\n originalPriceDecoration: 'line-through' as const,\n discountColor: 'destructive' as const,\n },\n} as const;\n\n// =============================================================================\n// Calendar Component Tokens\n// =============================================================================\n\n/** Calendar component size tokens */\nexport const calendarTokens = {\n sm: {\n daySize: 32,\n fontSize: fontSize.sm,\n headerFontSize: fontSize.base,\n gap: spacing[0.5], // was hardcoded 2\n containerPadding: spacing[2], // was hardcoded 8\n weekNumberWidth: 24,\n navButtonPadding: spacing[2],\n },\n md: {\n daySize: 40,\n fontSize: fontSize.base,\n headerFontSize: fontSize.md,\n gap: spacing[1], // was hardcoded 4\n containerPadding: spacing[2],\n weekNumberWidth: 24,\n navButtonPadding: spacing[2],\n },\n} as const;\n\n// =============================================================================\n// DateTimePicker Component Tokens\n// =============================================================================\n\n/** DateTimePicker component tokens */\nexport const dateTimePickerTokens = {\n input: {\n height: componentHeight.md,\n paddingHorizontal: spacing[4],\n paddingVertical: spacing[3],\n iconMarginLeft: spacing[2], // was hardcoded 8\n },\n sheet: {\n borderRadius: 20, // iOS convention\n handlePaddingVertical: spacing[3], // was hardcoded 12\n handleWidth: 36,\n handleHeight: 4,\n headerPaddingHorizontal: spacing[4],\n headerPaddingBottom: spacing[3],\n pickerPaddingVertical: spacing[4], // was hardcoded 16\n pickerHeight: 200,\n },\n fallback: {\n padding: spacing[6], // was hardcoded 24\n gap: spacing[3], // was hardcoded 12\n },\n icon: {\n width: 20,\n height: 20,\n topWidth: 14,\n topHeight: 3,\n bodyWidth: 16,\n bodyHeight: 14,\n dotSize: 3,\n dotGap: 3, // intentional pixel value for icon detail\n },\n} as const;\n\n// =============================================================================\n// Form Component Tokens\n// =============================================================================\n\n/** Form component tokens */\nexport const formTokens = {\n item: {\n marginBottom: spacing[4],\n },\n label: {\n fontSize: fontSize.base,\n fontWeight: fontWeight.medium,\n marginBottom: spacing[1.5],\n },\n description: {\n fontSize: fontSize.sm,\n marginTop: spacing[1],\n },\n message: {\n fontSize: fontSize.sm,\n fontWeight: fontWeight.medium,\n marginTop: spacing[1],\n },\n} as const;\n\n// =============================================================================\n// ImageGallery Component Tokens\n// =============================================================================\n\n/** ImageGallery component tokens */\nexport const imageGalleryTokens = {\n grid: {\n defaultColumns: 3,\n defaultSpacing: 2,\n defaultAspectRatio: 1,\n },\n fullscreen: {\n backdropOpacity: 0.95,\n closeButtonTop: 50, // iOS safe area\n closeButtonTopAndroid: 20,\n closeButtonSize: 36,\n closeLineWidth: 18,\n closeLineHeight: 2,\n pageIndicatorBottom: 50,\n dotSize: 6,\n dotGap: spacing[1.5], // was hardcoded 6\n },\n} as const;\n\n// =============================================================================\n// Pagination Component Tokens\n// =============================================================================\n\n/** Pagination component size tokens */\nexport const paginationTokens = {\n sm: {\n dotSize: 6,\n dotGap: spacing[1.5], // was hardcoded 6\n buttonSize: 28,\n fontSize: fontSize.sm,\n numberSize: 28,\n },\n md: {\n dotSize: 8,\n dotGap: spacing[2], // was hardcoded 8\n buttonSize: 36,\n fontSize: fontSize.base,\n numberSize: 36,\n },\n lg: {\n dotSize: 10,\n dotGap: spacing[2.5], // was hardcoded 10\n buttonSize: 44,\n fontSize: fontSize.md,\n numberSize: 44,\n },\n simple: {\n gap: spacing[1], // was hardcoded 4 in simpleButton\n },\n} as const;\n\n// =============================================================================\n// Stories Component Tokens\n// =============================================================================\n\n/** Stories component size tokens */\nexport const storiesTokens = {\n sm: {\n outer: 56,\n inner: 50,\n avatar: 46,\n borderWidth: 3,\n fontSize: fontSize.xs,\n plusSize: 14,\n nameMarginTop: spacing[1], // was hardcoded 4\n },\n md: {\n outer: 72,\n inner: 64,\n avatar: 60,\n borderWidth: 3,\n fontSize: fontSize.xs, // 11 not in scale, use 12\n plusSize: 18,\n nameMarginTop: spacing[1],\n },\n lg: {\n outer: 88,\n inner: 80,\n avatar: 74,\n borderWidth: 4,\n fontSize: fontSize.sm,\n plusSize: 22,\n nameMarginTop: spacing[1],\n },\n row: {\n paddingHorizontal: spacing[4],\n gap: spacing[3],\n },\n} as const;\n\n// =============================================================================\n// SearchInput Component Tokens\n// =============================================================================\n\n/** SearchInput component tokens */\nexport const searchInputTokens = {\n height: componentHeight.md, // was hardcoded 44\n paddingHorizontal: spacing[3],\n iconSize: 20,\n iconMarginRight: spacing[2],\n clearSize: 18,\n rightContainerWidth: 24,\n rightContainerMarginLeft: spacing[2],\n fontSize: fontSize.md, // was hardcoded 16\n} as const;\n\n// =============================================================================\n// Export all component tokens\n// =============================================================================\n\n/**\n * Complete component token collection.\n *\n * Access all component size and style tokens via `useTheme().components`.\n */\nexport const components = {\n button: buttonTokens,\n iconButton: iconButtonTokens,\n fab: fabTokens,\n segmentedControl: segmentedControlTokens,\n actionSheet: actionSheetTokens,\n input: inputTokens,\n textarea: textareaTokens,\n select: selectTokens,\n slider: sliderTokens,\n stepper: stepperTokens,\n checkbox: checkboxTokens,\n switch: switchTokens,\n radio: radioTokens,\n tagInput: tagInputTokens,\n badge: badgeTokens,\n avatar: avatarTokens,\n chip: chipTokens,\n label: labelTokens,\n rating: ratingTokens,\n avatarStack: avatarStackTokens,\n card: cardTokens,\n overlayTypography,\n spinner: spinnerTokens,\n skeleton: skeletonTokens,\n progress: progressTokens,\n circularProgress: circularProgressTokens,\n list: listTokens,\n tabs: tabsTokens,\n accordion: accordionTokens,\n collapsible: collapsibleTokens,\n carousel: carouselTokens,\n swipeableRow: swipeableRowTokens,\n authBlock: authBlockTokens,\n stateBlock: stateBlockTokens,\n profileBlock: profileBlockTokens,\n settingsBlock: settingsBlockTokens,\n cardBlock: cardBlockTokens,\n socialBlock: socialBlockTokens,\n productBlock: productBlockTokens,\n ecommerceBlock: ecommerceBlockTokens,\n infoBlock: infoBlockTokens,\n calendar: calendarTokens,\n dateTimePicker: dateTimePickerTokens,\n form: formTokens,\n imageGallery: imageGalleryTokens,\n pagination: paginationTokens,\n stories: storiesTokens,\n searchInput: searchInputTokens,\n height: componentHeight,\n icon: iconSize,\n} as const;\n\n/** Standard component size variants */\nexport type ComponentSize = 'sm' | 'md' | 'lg';\n","/**\n * Theme Presets\n *\n * Pre-designed color schemes for instant brand alignment.\n * Each preset defines primary colors and derives a full semantic palette.\n *\n * Usage:\n * ```tsx\n * <ThemeProvider theme=\"rose\">\n * <ThemeProvider theme=\"violet\">\n * ```\n */\n\nimport { ThemeColors } from './colors';\n\n// =============================================================================\n// Color Palettes (Tailwind-inspired)\n// =============================================================================\n\nconst palettes = {\n zinc: {\n 50: '#fafafa',\n 100: '#f4f4f5',\n 200: '#e4e4e7',\n 300: '#d4d4d8',\n 400: '#a1a1aa',\n 500: '#71717a',\n 600: '#52525b',\n 700: '#3f3f46',\n 800: '#27272a',\n 900: '#18181b',\n 950: '#09090b',\n },\n slate: {\n 50: '#f8fafc',\n 100: '#f1f5f9',\n 200: '#e2e8f0',\n 300: '#cbd5e1',\n 400: '#94a3b8',\n 500: '#64748b',\n 600: '#475569',\n 700: '#334155',\n 800: '#1e293b',\n 900: '#0f172a',\n 950: '#020617',\n },\n stone: {\n 50: '#fafaf9',\n 100: '#f5f5f4',\n 200: '#e7e5e4',\n 300: '#d6d3d1',\n 400: '#a8a29e',\n 500: '#78716c',\n 600: '#57534e',\n 700: '#44403c',\n 800: '#292524',\n 900: '#1c1917',\n 950: '#0c0a09',\n },\n blue: {\n 50: '#eff6ff',\n 100: '#dbeafe',\n 200: '#bfdbfe',\n 300: '#93c5fd',\n 400: '#60a5fa',\n 500: '#3b82f6',\n 600: '#2563eb',\n 700: '#1d4ed8',\n 800: '#1e40af',\n 900: '#1e3a8a',\n 950: '#172554',\n },\n green: {\n 50: '#f0fdf4',\n 100: '#dcfce7',\n 200: '#bbf7d0',\n 300: '#86efac',\n 400: '#4ade80',\n 500: '#22c55e',\n 600: '#16a34a',\n 700: '#15803d',\n 800: '#166534',\n 900: '#14532d',\n 950: '#052e16',\n },\n rose: {\n 50: '#fff1f2',\n 100: '#ffe4e6',\n 200: '#fecdd3',\n 300: '#fda4af',\n 400: '#fb7185',\n 500: '#f43f5e',\n 600: '#e11d48',\n 700: '#be123c',\n 800: '#9f1239',\n 900: '#881337',\n 950: '#4c0519',\n },\n orange: {\n 50: '#fff7ed',\n 100: '#ffedd5',\n 200: '#fed7aa',\n 300: '#fdba74',\n 400: '#fb923c',\n 500: '#f97316',\n 600: '#ea580c',\n 700: '#c2410c',\n 800: '#9a3412',\n 900: '#7c2d12',\n 950: '#431407',\n },\n violet: {\n 50: '#f5f3ff',\n 100: '#ede9fe',\n 200: '#ddd6fe',\n 300: '#c4b5fd',\n 400: '#a78bfa',\n 500: '#8b5cf6',\n 600: '#7c3aed',\n 700: '#6d28d9',\n 800: '#5b21b6',\n 900: '#4c1d95',\n 950: '#2e1065',\n },\n} as const;\n\n// Neutral palette (used for backgrounds, text, borders)\nconst neutral = {\n 0: '#ffffff',\n 50: '#fafafa',\n 100: '#f5f5f5',\n 200: '#e5e5e5',\n 300: '#d4d4d4',\n 400: '#a3a3a3',\n 500: '#737373',\n 600: '#525252',\n 700: '#404040',\n 800: '#262626',\n 900: '#171717',\n 950: '#0a0a0a',\n} as const;\n\n// =============================================================================\n// Theme Preset Types\n// =============================================================================\n\n/**\n * Available theme color presets.\n *\n * Each preset defines a complete color scheme for light and dark modes.\n */\nexport type ThemePreset = 'zinc' | 'slate' | 'stone' | 'blue' | 'green' | 'rose' | 'orange' | 'violet';\n\n/**\n * Theme preset color structure.\n *\n * Contains complete color schemes for both light and dark modes.\n */\nexport interface PresetColors {\n light: ThemeColors;\n dark: ThemeColors;\n}\n\n// =============================================================================\n// Preset Generation\n// =============================================================================\n\ntype ColorPalette = {\n 50: string;\n 100: string;\n 200: string;\n 300: string;\n 400: string;\n 500: string;\n 600: string;\n 700: string;\n 800: string;\n 900: string;\n 950: string;\n};\n\n/**\n * Creates a complete color scheme from a primary color palette.\n */\nfunction createPresetColors(\n primaryPalette: ColorPalette,\n neutralPalette: ColorPalette = palettes.zinc\n): PresetColors {\n return {\n light: {\n // Backgrounds\n background: neutral[0],\n backgroundSubtle: neutralPalette[50],\n backgroundMuted: neutralPalette[100],\n backgroundElevated: neutral[0],\n\n // Foreground/Text\n foreground: neutralPalette[900],\n foregroundMuted: neutralPalette[500],\n foregroundSubtle: neutralPalette[400],\n\n // Borders\n border: neutralPalette[200],\n borderMuted: neutralPalette[100],\n borderFocused: primaryPalette[500],\n\n // Primary\n primary: primaryPalette[500],\n primaryForeground: neutral[0],\n primaryMuted: primaryPalette[100],\n\n // Secondary\n secondary: neutralPalette[100],\n secondaryForeground: neutralPalette[900],\n\n // Destructive (always red)\n destructive: '#ef4444',\n destructiveForeground: neutral[0],\n\n // Success (always green)\n success: '#22c55e',\n successForeground: neutral[0],\n successMuted: '#dcfce7',\n\n // Warning (always amber)\n warning: '#f59e0b',\n warningForeground: neutral[900],\n warningMuted: '#fef3c7',\n\n // Error (always red)\n error: '#ef4444',\n errorForeground: neutral[0],\n errorMuted: '#fee2e2',\n\n // Card\n card: neutral[0],\n cardForeground: neutralPalette[900],\n\n // Input\n input: neutral[0],\n inputBorder: neutralPalette[200],\n inputPlaceholder: neutralPalette[400],\n\n // Overlay\n overlay: 'rgba(0, 0, 0, 0.5)',\n scrim: 'rgba(0, 0, 0, 0.3)',\n },\n dark: {\n // Backgrounds\n background: neutralPalette[950],\n backgroundSubtle: neutralPalette[900],\n backgroundMuted: neutralPalette[800],\n backgroundElevated: neutralPalette[900],\n\n // Foreground/Text\n foreground: neutralPalette[50],\n foregroundMuted: neutralPalette[400],\n foregroundSubtle: neutralPalette[500],\n\n // Borders\n border: neutralPalette[800],\n borderMuted: neutralPalette[900],\n borderFocused: primaryPalette[400],\n\n // Primary\n primary: primaryPalette[400],\n primaryForeground: neutralPalette[900],\n primaryMuted: primaryPalette[900],\n\n // Secondary\n secondary: neutralPalette[800],\n secondaryForeground: neutralPalette[50],\n\n // Destructive\n destructive: '#ef4444',\n destructiveForeground: neutral[0],\n\n // Success\n success: '#4ade80',\n successForeground: neutral[900],\n successMuted: '#14532d',\n\n // Warning\n warning: '#fbbf24',\n warningForeground: neutral[900],\n warningMuted: '#78350f',\n\n // Error\n error: '#f87171',\n errorForeground: neutral[0],\n errorMuted: '#7f1d1d',\n\n // Card\n card: neutralPalette[900],\n cardForeground: neutralPalette[50],\n\n // Input\n input: neutralPalette[800],\n inputBorder: neutralPalette[700],\n inputPlaceholder: neutralPalette[500],\n\n // Overlay\n overlay: 'rgba(0, 0, 0, 0.7)',\n scrim: 'rgba(0, 0, 0, 0.5)',\n },\n };\n}\n\n// =============================================================================\n// Theme Presets\n// =============================================================================\n\n/**\n * All available theme presets.\n *\n * Pre-designed color schemes for instant brand alignment.\n *\n * @example\n * ```tsx\n * <ThemeProvider theme=\"violet\">\n * <App />\n * </ThemeProvider>\n * ```\n */\nexport const themePresets: Record<ThemePreset, PresetColors> = {\n // Neutral presets (use their own palette as neutral base)\n zinc: createPresetColors(palettes.zinc, palettes.zinc),\n slate: createPresetColors(palettes.slate, palettes.slate),\n stone: createPresetColors(palettes.stone, palettes.stone),\n\n // Color presets (use zinc as neutral base)\n blue: createPresetColors(palettes.blue, palettes.zinc),\n green: createPresetColors(palettes.green, palettes.zinc),\n rose: createPresetColors(palettes.rose, palettes.zinc),\n orange: createPresetColors(palettes.orange, palettes.zinc),\n violet: createPresetColors(palettes.violet, palettes.zinc),\n};\n\n/**\n * Default theme preset.\n *\n * Used when no `theme` is specified on ThemeProvider.\n */\nexport const defaultThemePreset: ThemePreset = 'zinc';\n\n/**\n * Gets colors for a theme preset.\n *\n * @param preset - Theme preset name\n * @returns Complete color scheme (light and dark)\n */\nexport function getPresetColors(preset: ThemePreset): PresetColors {\n return themePresets[preset];\n}\n\n/**\n * Gets light or dark colors for a theme preset.\n *\n * @param preset - Theme preset name\n * @param isDark - Whether dark mode is active\n * @returns Semantic color palette for the specified mode\n */\nexport function getPresetColorsForMode(\n preset: ThemePreset,\n isDark: boolean\n): ThemeColors {\n const presetColors = themePresets[preset];\n return isDark ? presetColors.dark : presetColors.light;\n}\n","/**\n * Haptics Utilities\n *\n * Unified haptic feedback interface.\n * Falls back gracefully when expo-haptics is not available.\n *\n * Design Philosophy:\n * - Every interactive element should provide tactile feedback\n * - Haptics should be subtle and purposeful\n * - Respect user's haptic preferences\n */\n\n/** Available haptic feedback styles */\nexport type HapticStyle = 'light' | 'medium' | 'heavy' | 'success' | 'warning' | 'error' | 'selection';\n\n/**\n * Haptic presets for common interactions\n */\nexport const hapticPresets = {\n /** For button presses, checkbox toggles */\n buttonPress: 'light' as HapticStyle,\n /** For switch toggles */\n toggle: 'medium' as HapticStyle,\n /** For successful actions */\n success: 'success' as HapticStyle,\n /** For errors */\n error: 'error' as HapticStyle,\n /** For selection changes (radio, picker) */\n selection: 'selection' as HapticStyle,\n /** For destructive actions */\n destructive: 'warning' as HapticStyle,\n} as const;\n\nlet Haptics: typeof import('expo-haptics') | null = null;\n\n// Try to load expo-haptics (optional dependency)\ntry {\n Haptics = require('expo-haptics');\n} catch {\n // expo-haptics not available, haptics will be no-ops\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Global Haptics State\n// ─────────────────────────────────────────────────────────────────────────────\n\nlet hapticsEnabled = true;\n\n/**\n * Enable or disable haptic feedback globally.\n *\n * Use this to respect user preferences or accessibility settings.\n *\n * @param enabled - Whether to enable haptic feedback\n *\n * @example\n * ```tsx\n * // In ThemeProvider or app setup\n * setHapticsEnabled(false);\n *\n * // Or via config\n * <ThemeProvider haptics={false}>\n * ```\n */\nexport function setHapticsEnabled(enabled: boolean): void {\n hapticsEnabled = enabled;\n}\n\n/**\n * Check if haptics are currently enabled.\n *\n * @returns True if haptics are enabled and expo-haptics is available\n */\nexport function isHapticsEnabled(): boolean {\n return hapticsEnabled && Haptics !== null;\n}\n\n/**\n * Trigger haptic feedback.\n *\n * Respects the global haptics enabled state. Disabled via:\n * - `setHapticsEnabled(false)`\n * - `<ThemeProvider haptics={false}>`\n *\n * @param style - Haptic feedback style (defaults to 'light')\n * @returns Promise that resolves when haptic completes\n *\n * @example\n * ```tsx\n * onPress={() => {\n * haptic('light');\n * // ... rest of handler\n * }}\n * ```\n */\nexport async function haptic(style: HapticStyle = 'light'): Promise<void> {\n if (!hapticsEnabled || !Haptics) return;\n\n try {\n switch (style) {\n case 'light':\n await Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light);\n break;\n case 'medium':\n await Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Medium);\n break;\n case 'heavy':\n await Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Heavy);\n break;\n case 'success':\n await Haptics.notificationAsync(Haptics.NotificationFeedbackType.Success);\n break;\n case 'warning':\n await Haptics.notificationAsync(Haptics.NotificationFeedbackType.Warning);\n break;\n case 'error':\n await Haptics.notificationAsync(Haptics.NotificationFeedbackType.Error);\n break;\n case 'selection':\n await Haptics.selectionAsync();\n break;\n }\n } catch {\n // Silently fail if haptics not supported\n }\n}\n\n/**\n * Check if haptics are available.\n *\n * @returns True if expo-haptics is installed and can be used\n */\nexport function hapticsAvailable(): boolean {\n return Haptics !== null;\n}\n","/**\n * Expo Go Detection Utility\n *\n * Provides detection for Expo Go environment to gracefully disable\n * Reanimated animations when running in Expo Go client.\n *\n * @example\n * ```tsx\n * import { isExpoGo, areAnimationsDisabled } from '@metacells/mcellui-core';\n *\n * // Check environment\n * if (isExpoGo()) {\n * console.log('Running in Expo Go');\n * }\n *\n * // Check if animations should be disabled\n * if (areAnimationsDisabled()) {\n * // Skip animation, use static styles\n * }\n * ```\n */\n\nlet executionEnvironment: string | undefined;\n\n// Try to load expo-constants at module load time\ntry {\n // Dynamic require to avoid bundler issues when expo-constants is not available\n const Constants = require('expo-constants').default;\n executionEnvironment = Constants?.executionEnvironment;\n} catch {\n // expo-constants not available - not in Expo environment\n executionEnvironment = undefined;\n}\n\n/**\n * Check if the app is running in Expo Go client.\n *\n * Returns false in development builds, production builds, or non-Expo environments.\n *\n * @returns True if running in Expo Go client\n */\nexport function isExpoGo(): boolean {\n return executionEnvironment === 'storeClient';\n}\n\n// Internal state for animation override\nlet animationsDisabledOverride: boolean | null = null;\n\n/**\n * Manually override the animation disabled state.\n *\n * Set to `true` to force disable animations, `false` to force enable,\n * or `null` to use automatic detection (Expo Go = disabled).\n *\n * @param disabled - Override value (true/false) or null for automatic detection\n */\nexport function setAnimationsDisabled(disabled: boolean | null): void {\n animationsDisabledOverride = disabled;\n}\n\n/**\n * Check if animations should be disabled.\n *\n * Returns true if:\n * - Manually overridden to true via setAnimationsDisabled(true)\n * - Running in Expo Go (automatic detection)\n *\n * Returns false if:\n * - Manually overridden to false via setAnimationsDisabled(false)\n * - Running in development/production build\n *\n * @returns True if animations should be disabled\n */\nexport function areAnimationsDisabled(): boolean {\n if (animationsDisabledOverride !== null) {\n return animationsDisabledOverride;\n }\n return isExpoGo();\n}\n","/**\n * ThemeProvider\n *\n * Provides theme context to all mcellui components.\n * Automatically detects system color scheme and provides all design tokens.\n *\n * Like shadcn/ui - change tokens here to transform the entire UI.\n *\n * @example\n * ```tsx\n * // Full customization\n * <ThemeProvider\n * theme=\"violet\"\n * radius=\"lg\"\n * fonts={{ heading: 'PlayfairDisplay_700Bold' }}\n * colors={{ primary: '#7C3AED' }}\n * >\n * <App />\n * </ThemeProvider>\n * ```\n */\n\nimport React, { createContext, useContext, useMemo, useState, useCallback, useEffect, ReactNode } from 'react';\nimport { useColorScheme, ViewStyle } from 'react-native';\nimport { lightColors, darkColors, ThemeColors } from './colors';\nimport { setHapticsEnabled } from '../utils/haptics';\nimport { setAnimationsDisabled, isExpoGo } from '../utils/expoGo';\nimport { spacing } from './spacing';\nimport {\n createRadius,\n createComponentRadius,\n defaultRadiusPreset,\n type RadiusPreset,\n type RadiusTokens,\n type ComponentRadiusTokens,\n} from './radius';\nimport {\n fontSize,\n fontWeight,\n lineHeight,\n letterSpacing,\n fontFamily,\n geistFontFamily,\n defaultFonts,\n createTypography,\n type Fonts,\n type Typography,\n} from './typography';\nimport { getShadow, getPlatformShadow, ShadowSize, ShadowStyle } from './shadows';\nimport {\n springs,\n timing,\n pressScale,\n durations,\n getAnimationPreset,\n defaultAnimationPreset,\n type AnimationPreset,\n type SpringTokens,\n type TimingTokens,\n type PressScaleTokens,\n type DurationTokens,\n} from './animations';\nimport { components } from './components';\nimport {\n themePresets,\n defaultThemePreset,\n type ThemePreset,\n} from './presets';\n\n/** Resolved color scheme (either 'light' or 'dark') */\nexport type ColorScheme = 'light' | 'dark';\n\n/** User's color scheme preference (can be 'system' for auto-detection) */\nexport type ColorSchemePreference = 'light' | 'dark' | 'system';\n\nexport interface Theme {\n // ─────────────────────────────────────────────────────────────────────────────\n // Color Scheme\n // ─────────────────────────────────────────────────────────────────────────────\n /** Current color scheme */\n colorScheme: ColorScheme;\n /** User's preference: 'light', 'dark', or 'system' */\n colorSchemePreference: ColorSchemePreference;\n /** Whether dark mode is active */\n isDark: boolean;\n /** Set color scheme preference */\n setColorScheme: (preference: ColorSchemePreference) => void;\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Theme Preset\n // ─────────────────────────────────────────────────────────────────────────────\n /** Current theme preset (if using a preset) */\n themePreset?: ThemePreset;\n /** Current radius preset */\n radiusPreset: RadiusPreset;\n /** Current animation preset */\n animationPreset: AnimationPreset;\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Design Tokens\n // ─────────────────────────────────────────────────────────────────────────────\n /** Semantic color tokens */\n colors: ThemeColors;\n /** Spacing scale (0-32) */\n spacing: typeof spacing;\n /** Border radius tokens */\n radius: RadiusTokens;\n /** Component-specific radius presets */\n componentRadius: ComponentRadiusTokens;\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Fonts & Typography\n // ─────────────────────────────────────────────────────────────────────────────\n /** Semantic font tokens (sans, heading, mono) */\n fonts: Fonts;\n /** Font size scale */\n fontSize: typeof fontSize;\n /** Font weight scale */\n fontWeight: typeof fontWeight;\n /** Line height scale */\n lineHeight: typeof lineHeight;\n /** Letter spacing scale */\n letterSpacing: typeof letterSpacing;\n /** Font family tokens (sans, mono, system) @deprecated use fonts instead */\n fontFamily: typeof fontFamily;\n /** Geist font family with weight variants */\n geistFontFamily: typeof geistFontFamily;\n /** Pre-composed typography styles (uses fonts tokens) */\n typography: Typography;\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Shadows\n // ─────────────────────────────────────────────────────────────────────────────\n /** Get shadow style for a size */\n shadow: (size: ShadowSize) => ShadowStyle;\n /** Get platform-optimized shadow style (iOS: shadow*, Android: elevation) */\n platformShadow: (size: ShadowSize) => ViewStyle;\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Animations\n // ─────────────────────────────────────────────────────────────────────────────\n /** Spring animation presets */\n springs: SpringTokens;\n /** Timing animation presets */\n timing: TimingTokens;\n /** Press scale presets */\n pressScale: PressScaleTokens;\n /** Duration presets */\n durations: DurationTokens;\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Component Tokens\n // ─────────────────────────────────────────────────────────────────────────────\n /** Component-specific size/style tokens */\n components: typeof components;\n}\n\nconst ThemeContext = createContext<Theme | null>(null);\n\nexport interface ThemeProviderProps {\n /** Initial color scheme preference */\n defaultColorScheme?: ColorSchemePreference;\n\n /**\n * Theme preset for colors.\n * Pre-designed color schemes: 'zinc', 'slate', 'stone', 'blue', 'green', 'rose', 'orange', 'violet'\n *\n * @example\n * ```tsx\n * <ThemeProvider theme=\"rose\">\n * ```\n */\n theme?: ThemePreset;\n\n /**\n * Base radius preset.\n * Controls roundness of all components: 'none', 'sm', 'md', 'lg', 'full'\n *\n * @example\n * ```tsx\n * <ThemeProvider radius=\"lg\"> // Soft, rounded UI\n * <ThemeProvider radius=\"none\"> // Sharp, brutalist UI\n * ```\n */\n radius?: RadiusPreset;\n\n /**\n * Custom font configuration.\n * Partial overrides are merged with defaults.\n *\n * @example\n * ```tsx\n * <ThemeProvider fonts={{\n * sans: 'Inter_400Regular',\n * heading: 'PlayfairDisplay_700Bold',\n * }}>\n * ```\n */\n fonts?: Partial<Fonts>;\n\n /**\n * Color overrides (applied to both light and dark modes).\n * Merged on top of theme preset colors.\n *\n * @example\n * ```tsx\n * <ThemeProvider\n * theme=\"blue\"\n * colors={{ primary: '#6366F1' }} // Override blue's primary with indigo\n * >\n * ```\n */\n colors?: Partial<ThemeColors>;\n\n /**\n * Light mode specific color overrides.\n * Applied only in light mode, after theme and colors.\n */\n lightColors?: Partial<ThemeColors>;\n\n /**\n * Dark mode specific color overrides.\n * Applied only in dark mode, after theme and colors.\n */\n darkColors?: Partial<ThemeColors>;\n\n /**\n * Enable or disable haptic feedback globally.\n * When false, all `haptic()` calls become no-ops.\n * @default true\n *\n * @example\n * ```tsx\n * // Disable haptics for accessibility or user preference\n * <ThemeProvider haptics={false}>\n * ```\n */\n haptics?: boolean;\n\n /**\n * Animation preset.\n * Controls the overall feel of animations throughout the app.\n * - `subtle`: Professional, smooth animations with minimal overshoot\n * - `playful`: Bouncy, energetic animations with more personality\n * @default 'subtle'\n *\n * @example\n * ```tsx\n * // Professional, smooth animations\n * <ThemeProvider animationPreset=\"subtle\">\n *\n * // Bouncy, fun animations\n * <ThemeProvider animationPreset=\"playful\">\n * ```\n */\n animationPreset?: AnimationPreset;\n\n /**\n * Enable or disable animations globally.\n * - `true`: Force enable animations\n * - `false`: Force disable animations (components will use static styles)\n * - `'auto'`: Automatically detect - disable in Expo Go, enable in dev/prod builds\n * @default 'auto'\n *\n * @example\n * ```tsx\n * // Auto-detect (disabled in Expo Go)\n * <ThemeProvider animations=\"auto\">\n *\n * // Force disable for testing or accessibility\n * <ThemeProvider animations={false}>\n * ```\n */\n animations?: boolean | 'auto';\n\n /** Children components */\n children: ReactNode;\n}\n\nexport function ThemeProvider({\n defaultColorScheme = 'system',\n theme: themePreset,\n radius: radiusPreset = defaultRadiusPreset,\n fonts: fontOverrides,\n colors: colorOverrides,\n lightColors: lightColorOverrides,\n darkColors: darkColorOverrides,\n haptics = true,\n animationPreset = defaultAnimationPreset,\n animations = 'auto',\n children,\n}: ThemeProviderProps) {\n const systemColorScheme = useColorScheme();\n const [preference, setPreference] = useState<ColorSchemePreference>(defaultColorScheme);\n\n // Set global haptics enabled state\n useEffect(() => {\n setHapticsEnabled(haptics);\n }, [haptics]);\n\n // Set global animations enabled state\n useEffect(() => {\n if (animations === 'auto') {\n // Use automatic detection (Expo Go = disabled)\n setAnimationsDisabled(null);\n } else {\n // Use explicit override\n setAnimationsDisabled(!animations);\n }\n }, [animations]);\n\n const setColorScheme = useCallback((newPreference: ColorSchemePreference) => {\n setPreference(newPreference);\n }, []);\n\n // Merge font overrides with defaults\n const fonts = useMemo<Fonts>(\n () => ({\n ...defaultFonts,\n ...fontOverrides,\n }),\n [fontOverrides]\n );\n\n // Generate typography with resolved fonts\n const typography = useMemo(() => createTypography(fonts), [fonts]);\n\n // Generate radius tokens from preset\n const radius = useMemo(() => createRadius(radiusPreset), [radiusPreset]);\n const componentRadius = useMemo(() => createComponentRadius(radius), [radius]);\n\n const theme = useMemo<Theme>(() => {\n // Resolve actual color scheme from preference\n let resolvedScheme: ColorScheme;\n if (preference === 'system') {\n resolvedScheme = systemColorScheme === 'dark' ? 'dark' : 'light';\n } else {\n resolvedScheme = preference;\n }\n\n const isDark = resolvedScheme === 'dark';\n\n // Build colors: base -> preset -> overrides -> mode-specific overrides\n let colors: ThemeColors;\n\n // Start with base colors or preset colors\n if (themePreset) {\n const presetColors = themePresets[themePreset];\n colors = isDark ? { ...presetColors.dark } : { ...presetColors.light };\n } else {\n colors = isDark ? { ...darkColors } : { ...lightColors };\n }\n\n // Apply general color overrides\n if (colorOverrides) {\n colors = { ...colors, ...colorOverrides };\n }\n\n // Apply mode-specific overrides\n if (isDark && darkColorOverrides) {\n colors = { ...colors, ...darkColorOverrides };\n } else if (!isDark && lightColorOverrides) {\n colors = { ...colors, ...lightColorOverrides };\n }\n\n return {\n // Color Scheme\n colorScheme: resolvedScheme,\n colorSchemePreference: preference,\n isDark,\n setColorScheme,\n\n // Theme Preset\n themePreset,\n radiusPreset,\n animationPreset,\n\n // Design Tokens\n colors,\n spacing,\n radius,\n componentRadius,\n\n // Fonts & Typography\n fonts,\n fontSize,\n fontWeight,\n lineHeight,\n letterSpacing,\n fontFamily,\n geistFontFamily,\n typography,\n\n // Shadows\n shadow: (size: ShadowSize) => getShadow(size, isDark),\n platformShadow: (size: ShadowSize) => getPlatformShadow(size, isDark),\n\n // Animations (resolved from preset)\n ...getAnimationPreset(animationPreset),\n\n // Component Tokens\n components,\n };\n }, [\n preference,\n systemColorScheme,\n setColorScheme,\n themePreset,\n radiusPreset,\n animationPreset,\n fonts,\n typography,\n radius,\n componentRadius,\n colorOverrides,\n lightColorOverrides,\n darkColorOverrides,\n ]);\n\n return (\n <ThemeContext.Provider value={theme}>\n {children}\n </ThemeContext.Provider>\n );\n}\n\n/**\n * Hook to access theme values\n *\n * @example\n * ```tsx\n * const { colors, spacing, radius, components } = useTheme();\n *\n * // Use design tokens\n * <View style={{\n * backgroundColor: colors.card,\n * padding: spacing[4],\n * borderRadius: radius.lg,\n * ...platformShadow('md')\n * }}>\n * <Text style={typography.body}>Hello</Text>\n * </View>\n *\n * // Use component tokens\n * const buttonSize = components.button.md;\n * <View style={{\n * height: buttonSize.height,\n * paddingHorizontal: buttonSize.paddingHorizontal,\n * borderRadius: buttonSize.borderRadius,\n * }} />\n * ```\n */\nexport function useTheme(): Theme {\n const theme = useContext(ThemeContext);\n\n if (!theme) {\n // Fallback for when ThemeProvider is not present\n const isDark = false;\n const fallbackTypography = createTypography(defaultFonts);\n const fallbackRadius = createRadius(defaultRadiusPreset);\n const fallbackComponentRadius = createComponentRadius(fallbackRadius);\n\n return {\n colorScheme: 'light',\n colorSchemePreference: 'system',\n isDark,\n setColorScheme: () => {\n console.warn('ThemeProvider not found. setColorScheme will not work.');\n },\n themePreset: undefined,\n radiusPreset: defaultRadiusPreset,\n animationPreset: defaultAnimationPreset,\n colors: lightColors,\n spacing,\n radius: fallbackRadius,\n componentRadius: fallbackComponentRadius,\n fonts: defaultFonts,\n fontSize,\n fontWeight,\n lineHeight,\n letterSpacing,\n fontFamily,\n geistFontFamily,\n typography: fallbackTypography,\n shadow: (size: ShadowSize) => getShadow(size, isDark),\n platformShadow: (size: ShadowSize) => getPlatformShadow(size, isDark),\n ...getAnimationPreset(defaultAnimationPreset),\n components,\n };\n }\n\n return theme;\n}\n\n/**\n * Hook to get current color scheme.\n *\n * Returns the resolved color scheme ('light' or 'dark'), even when preference is 'system'.\n *\n * @returns Current color scheme\n *\n * @example\n * ```tsx\n * const colorScheme = useColorSchemeValue();\n * // colorScheme is 'light' or 'dark' (never 'system')\n * ```\n */\nexport function useColorSchemeValue(): ColorScheme {\n const theme = useTheme();\n return theme.colorScheme;\n}\n\n/**\n * Hook to check if dark mode is active.\n *\n * Convenience hook equivalent to `useTheme().isDark`.\n *\n * @returns True if dark mode is active, false otherwise\n *\n * @example\n * ```tsx\n * const isDark = useIsDark();\n * <View style={{ backgroundColor: isDark ? '#000' : '#fff' }} />\n * ```\n */\nexport function useIsDark(): boolean {\n const theme = useTheme();\n return theme.isDark;\n}\n","/**\n * Design Tokens: Colors\n *\n * Inspired by:\n * - iOS 17+ Dynamic Colors\n * - Arc Browser palette\n * - Linear App design system\n */\n\nexport const colors = {\n // Neutral scale (gray)\n neutral: {\n 50: '#fafafa',\n 100: '#f5f5f5',\n 200: '#e5e5e5',\n 300: '#d4d4d4',\n 400: '#a3a3a3',\n 500: '#737373',\n 600: '#525252',\n 700: '#404040',\n 800: '#262626',\n 900: '#171717',\n 950: '#0a0a0a',\n },\n\n // Primary (customizable accent)\n primary: {\n 50: '#eff6ff',\n 100: '#dbeafe',\n 200: '#bfdbfe',\n 300: '#93c5fd',\n 400: '#60a5fa',\n 500: '#3b82f6',\n 600: '#2563eb',\n 700: '#1d4ed8',\n 800: '#1e40af',\n 900: '#1e3a8a',\n 950: '#172554',\n },\n\n // Semantic colors\n success: {\n light: '#4ade80',\n DEFAULT: '#22c55e',\n dark: '#16a34a',\n },\n\n warning: {\n light: '#fbbf24',\n DEFAULT: '#f59e0b',\n dark: '#d97706',\n },\n\n error: {\n light: '#f87171',\n DEFAULT: '#ef4444',\n dark: '#dc2626',\n },\n\n // Special\n white: '#ffffff',\n black: '#000000',\n transparent: 'transparent',\n} as const;\n\nexport type Colors = typeof colors;\nexport type ColorKey = keyof Colors;\n","/**\n * Design Tokens: Spacing\n *\n * 4px base unit system\n */\n\nexport const spacing = {\n 0: 0,\n 0.5: 2,\n 1: 4,\n 1.5: 6,\n 2: 8,\n 2.5: 10,\n 3: 12,\n 3.5: 14,\n 4: 16,\n 5: 20,\n 6: 24,\n 7: 28,\n 8: 32,\n 9: 36,\n 10: 40,\n 11: 44,\n 12: 48,\n 14: 56,\n 16: 64,\n 20: 80,\n 24: 96,\n 28: 112,\n 32: 128,\n 36: 144,\n 40: 160,\n 44: 176,\n 48: 192,\n 52: 208,\n 56: 224,\n 60: 240,\n 64: 256,\n 72: 288,\n 80: 320,\n 96: 384,\n} as const;\n\nexport type Spacing = typeof spacing;\nexport type SpacingKey = keyof Spacing;\n","/**\n * Design Tokens: Typography\n *\n * System font stack with iOS/Android optimization\n */\n\nimport { Platform } from 'react-native';\n\nexport const fontFamily = {\n // System defaults (platform-optimized)\n sans: Platform.select({\n ios: 'System',\n android: 'Roboto',\n default: 'System',\n }),\n mono: Platform.select({\n ios: 'Menlo',\n android: 'monospace',\n default: 'monospace',\n }),\n} as const;\n\nexport const fontSize = {\n xs: 12,\n sm: 14,\n base: 16,\n lg: 18,\n xl: 20,\n '2xl': 24,\n '3xl': 30,\n '4xl': 36,\n '5xl': 48,\n '6xl': 60,\n} as const;\n\nexport const fontWeight = {\n thin: '100',\n extralight: '200',\n light: '300',\n normal: '400',\n medium: '500',\n semibold: '600',\n bold: '700',\n extrabold: '800',\n black: '900',\n} as const;\n\nexport const lineHeight = {\n none: 1,\n tight: 1.25,\n snug: 1.375,\n normal: 1.5,\n relaxed: 1.625,\n loose: 2,\n} as const;\n\nexport const letterSpacing = {\n tighter: -0.8,\n tight: -0.4,\n normal: 0,\n wide: 0.4,\n wider: 0.8,\n widest: 1.6,\n} as const;\n\nexport type FontFamily = typeof fontFamily;\nexport type FontSize = typeof fontSize;\nexport type FontWeight = typeof fontWeight;\nexport type LineHeight = typeof lineHeight;\nexport type LetterSpacing = typeof letterSpacing;\n","/**\n * Design Tokens: Border Radius\n */\n\nexport const radius = {\n none: 0,\n sm: 4,\n DEFAULT: 8,\n md: 12,\n lg: 16,\n xl: 24,\n '2xl': 32,\n '3xl': 48,\n full: 9999,\n} as const;\n\nexport type Radius = typeof radius;\nexport type RadiusKey = keyof Radius;\n","/**\n * Design Tokens: Shadows\n *\n * Cross-platform shadow definitions\n */\n\nimport { Platform, ViewStyle } from 'react-native';\n\ntype ShadowStyle = Pick<\n ViewStyle,\n 'shadowColor' | 'shadowOffset' | 'shadowOpacity' | 'shadowRadius' | 'elevation'\n>;\n\nconst createShadow = (\n offsetY: number,\n blur: number,\n opacity: number,\n elevation: number\n): ShadowStyle => ({\n shadowColor: '#000',\n shadowOffset: { width: 0, height: offsetY },\n shadowOpacity: opacity,\n shadowRadius: blur,\n ...(Platform.OS === 'android' && { elevation }),\n});\n\nexport const shadows = {\n none: createShadow(0, 0, 0, 0),\n sm: createShadow(1, 2, 0.05, 1),\n DEFAULT: createShadow(2, 4, 0.1, 2),\n md: createShadow(4, 6, 0.1, 4),\n lg: createShadow(8, 10, 0.1, 8),\n xl: createShadow(12, 16, 0.15, 12),\n '2xl': createShadow(16, 24, 0.2, 16),\n} as const;\n\nexport type Shadows = typeof shadows;\nexport type ShadowKey = keyof Shadows;\n","/**\n * NativeUI Configuration Types\n *\n * Define your app's design system in a single config file.\n * Similar to tailwind.config.js but for React Native.\n *\n * @example\n * ```ts\n * // mcellui.config.ts\n * import { defineConfig } from '@metacells/mcellui-core';\n *\n * export default defineConfig({\n * theme: 'blue',\n * radius: 'lg',\n * colors: {\n * primary: '#6366F1',\n * },\n * });\n * ```\n */\n\nimport type { ThemePreset } from '../theme/presets';\nimport type { RadiusPreset } from '../theme/radius';\nimport type { ThemeColors } from '../theme/colors';\nimport type { Fonts } from '../theme/typography';\nimport type { AnimationPreset } from '../theme/animations';\n\n/**\n * NativeUI configuration object.\n * Place in `mcellui.config.ts` at your project root.\n */\nexport interface NativeUIConfig {\n // ============================================\n // Runtime Configuration (used by ConfigProvider)\n // ============================================\n\n /**\n * Color theme preset.\n * @default 'zinc'\n */\n theme?: ThemePreset;\n\n /**\n * Border radius preset.\n * Controls roundness of all components.\n * @default 'md'\n */\n radius?: RadiusPreset;\n\n /**\n * Default color scheme preference.\n * @default 'system'\n */\n colorScheme?: 'light' | 'dark' | 'system';\n\n /**\n * Color overrides (applied to both light and dark modes).\n */\n colors?: Partial<ThemeColors>;\n\n /**\n * Light mode specific color overrides.\n */\n lightColors?: Partial<ThemeColors>;\n\n /**\n * Dark mode specific color overrides.\n */\n darkColors?: Partial<ThemeColors>;\n\n /**\n * Font configuration.\n */\n fonts?: Partial<Fonts>;\n\n /**\n * Enable or disable haptic feedback globally.\n * @default true\n */\n haptics?: boolean;\n\n /**\n * Animation preset.\n * Controls the overall feel of animations throughout the app.\n * - `subtle`: Professional, smooth animations with minimal overshoot\n * - `playful`: Bouncy, energetic animations with more personality\n * @default 'subtle'\n */\n animationPreset?: AnimationPreset;\n\n /**\n * Component-specific overrides.\n * Override default sizes, padding, etc.\n */\n components?: {\n button?: {\n defaultVariant?: 'default' | 'secondary' | 'outline' | 'ghost' | 'destructive';\n defaultSize?: 'sm' | 'md' | 'lg';\n };\n input?: {\n defaultSize?: 'sm' | 'md' | 'lg';\n };\n card?: {\n defaultVariant?: 'default' | 'elevated' | 'outlined';\n };\n badge?: {\n defaultVariant?: 'default' | 'secondary' | 'destructive' | 'outline';\n defaultSize?: 'sm' | 'md' | 'lg';\n };\n avatar?: {\n defaultSize?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n };\n };\n\n // ============================================\n // CLI Configuration (used by `npx mcellui add`)\n // ============================================\n\n /**\n * Path where components will be installed.\n * @default './components/ui'\n */\n componentsPath?: string;\n\n /**\n * Path where utilities (cn, etc.) will be installed.\n * @default './lib/utils'\n */\n utilsPath?: string;\n\n /**\n * Style preset for components.\n * @default 'default'\n */\n style?: 'default' | 'ios' | 'material';\n\n /**\n * Path aliases for imports.\n */\n aliases?: {\n /** Alias for components directory */\n components?: string;\n /** Alias for utils directory */\n utils?: string;\n };\n}\n\n/**\n * Resolved configuration with all defaults applied.\n */\nexport interface ResolvedNativeUIConfig extends Required<Omit<NativeUIConfig, 'colors' | 'lightColors' | 'darkColors' | 'fonts' | 'components' | 'aliases' | 'haptics' | 'animationPreset'>> {\n colors: Partial<ThemeColors>;\n lightColors: Partial<ThemeColors>;\n darkColors: Partial<ThemeColors>;\n fonts: Partial<Fonts>;\n haptics: boolean;\n animationPreset: AnimationPreset;\n components: NonNullable<NativeUIConfig['components']>;\n aliases: NonNullable<NativeUIConfig['aliases']>;\n}\n\n/**\n * Default configuration values.\n */\nexport const defaultConfig: ResolvedNativeUIConfig = {\n // Runtime defaults\n theme: 'zinc',\n radius: 'md',\n colorScheme: 'system',\n colors: {},\n lightColors: {},\n darkColors: {},\n fonts: {},\n haptics: true,\n animationPreset: 'subtle',\n components: {},\n // CLI defaults\n componentsPath: './components/ui',\n utilsPath: './lib/utils',\n style: 'default',\n aliases: {\n components: '@/components',\n utils: '@/lib/utils',\n },\n};\n","/**\n * defineConfig\n *\n * Helper function to define NativeUI configuration with type safety.\n * Use this in your `mcellui.config.ts` file.\n *\n * @example\n * ```ts\n * // mcellui.config.ts\n * import { defineConfig } from '@metacells/mcellui-core';\n *\n * export default defineConfig({\n * theme: 'blue',\n * radius: 'lg',\n * colors: {\n * primary: '#6366F1',\n * secondary: '#F3F4F6',\n * },\n * fonts: {\n * heading: 'PlayfairDisplay_700Bold',\n * },\n * components: {\n * button: {\n * defaultVariant: 'default',\n * defaultSize: 'md',\n * },\n * },\n * });\n * ```\n */\n\nimport { NativeUIConfig, ResolvedNativeUIConfig, defaultConfig } from './types';\n\n/**\n * Define your NativeUI configuration with full type safety and autocomplete.\n *\n * @param config - Your configuration options\n * @returns The same config object (for type inference)\n */\nexport function defineConfig(config: NativeUIConfig): NativeUIConfig {\n return config;\n}\n\n/**\n * Resolve a partial config into a full config with defaults.\n *\n * @param config - Partial configuration\n * @returns Fully resolved configuration with defaults applied\n */\nexport function resolveConfig(config: NativeUIConfig = {}): ResolvedNativeUIConfig {\n return {\n // Runtime configuration\n theme: config.theme ?? defaultConfig.theme,\n radius: config.radius ?? defaultConfig.radius,\n colorScheme: config.colorScheme ?? defaultConfig.colorScheme,\n colors: config.colors ?? defaultConfig.colors,\n lightColors: config.lightColors ?? defaultConfig.lightColors,\n darkColors: config.darkColors ?? defaultConfig.darkColors,\n fonts: config.fonts ?? defaultConfig.fonts,\n haptics: config.haptics ?? defaultConfig.haptics,\n animationPreset: config.animationPreset ?? defaultConfig.animationPreset,\n components: {\n ...defaultConfig.components,\n ...config.components,\n },\n // CLI configuration\n componentsPath: config.componentsPath ?? defaultConfig.componentsPath,\n utilsPath: config.utilsPath ?? defaultConfig.utilsPath,\n style: config.style ?? defaultConfig.style,\n aliases: {\n ...defaultConfig.aliases,\n ...config.aliases,\n },\n };\n}\n","/**\n * ConfigProvider\n *\n * Wraps ThemeProvider and automatically applies configuration from mcellui.config.ts.\n * This is the recommended way to set up NativeUI in your app.\n *\n * @example\n * ```tsx\n * // App.tsx - with auto-config (requires metro-plugin)\n * import { ConfigProvider } from '@metacells/mcellui-core';\n *\n * export default function App() {\n * return (\n * <ConfigProvider>\n * <YourApp />\n * </ConfigProvider>\n * );\n * }\n *\n * // App.tsx - with explicit config\n * import { ConfigProvider } from '@metacells/mcellui-core';\n * import config from './mcellui.config';\n *\n * export default function App() {\n * return (\n * <ConfigProvider config={config}>\n * <YourApp />\n * </ConfigProvider>\n * );\n * }\n * ```\n */\n\nimport React, { createContext, useContext, ReactNode, useMemo } from 'react';\nimport { ThemeProvider, ThemeProviderProps } from '../theme/ThemeProvider';\nimport { NativeUIConfig, ResolvedNativeUIConfig } from './types';\nimport { resolveConfig } from './defineConfig';\n\n// Lazy-loaded auto-config to avoid circular dependency\n// The config is loaded on first access, not at module initialization\nlet autoConfig: NativeUIConfig | null = null;\n\nfunction getAutoConfig(): NativeUIConfig {\n if (autoConfig === null) {\n try {\n // This module is resolved by @metacells/mcellui-metro-plugin\n // to either the user's config file or an empty default\n autoConfig = require('@mcellui/auto-config').default ?? {};\n } catch {\n // Metro plugin not configured, use empty default\n autoConfig = {};\n }\n }\n // Type assertion safe because autoConfig is always set to {} if null\n return autoConfig as NativeUIConfig;\n}\n\n// Config context for accessing raw config values\nconst ConfigContext = createContext<ResolvedNativeUIConfig | null>(null);\n\nexport interface ConfigProviderProps {\n /**\n * NativeUI configuration object.\n * Import from your mcellui.config.ts file.\n */\n config?: NativeUIConfig;\n\n /**\n * Override the color scheme preference.\n * Takes precedence over config.colorScheme.\n */\n colorScheme?: 'light' | 'dark' | 'system';\n\n /**\n * Override the theme preset.\n * Takes precedence over config.theme.\n */\n theme?: ThemeProviderProps['theme'];\n\n /**\n * Override the radius preset.\n * Takes precedence over config.radius.\n */\n radius?: ThemeProviderProps['radius'];\n\n /**\n * Children components.\n */\n children: ReactNode;\n}\n\n/**\n * ConfigProvider combines your mcellui.config.ts with ThemeProvider.\n * Use this as the root of your app for the easiest setup.\n *\n * If no config is provided and @metacells/mcellui-metro-plugin is set up,\n * it will automatically load your mcellui.config.ts file.\n */\nexport function ConfigProvider({\n config,\n colorScheme,\n theme,\n radius,\n children,\n}: ConfigProviderProps) {\n // Use provided config, or fall back to auto-discovered config\n const effectiveConfig = config ?? getAutoConfig();\n\n // Resolve config with defaults\n const resolvedConfig = useMemo(() => resolveConfig(effectiveConfig), [effectiveConfig]);\n\n // Props can override config values\n const finalTheme = theme ?? resolvedConfig.theme;\n const finalRadius = radius ?? resolvedConfig.radius;\n const finalColorScheme = colorScheme ?? resolvedConfig.colorScheme;\n\n return (\n <ConfigContext.Provider value={resolvedConfig}>\n <ThemeProvider\n defaultColorScheme={finalColorScheme}\n theme={finalTheme}\n radius={finalRadius}\n colors={resolvedConfig.colors}\n lightColors={resolvedConfig.lightColors}\n darkColors={resolvedConfig.darkColors}\n fonts={resolvedConfig.fonts}\n >\n {children}\n </ThemeProvider>\n </ConfigContext.Provider>\n );\n}\n\n/**\n * Hook to access the raw NativeUI configuration.\n * Useful for accessing component defaults and other config values.\n *\n * @example\n * ```tsx\n * const config = useConfig();\n * const defaultButtonSize = config.components.button?.defaultSize ?? 'md';\n * ```\n */\nexport function useConfig(): ResolvedNativeUIConfig {\n const config = useContext(ConfigContext);\n\n if (!config) {\n // Return default config if no provider\n return resolveConfig({});\n }\n\n return config;\n}\n","/**\n * cn() - Class Name / Style Merger\n *\n * The core utility for merging styles in mcellui.\n * Inspired by shadcn/ui's cn() but adapted for React Native StyleSheet.\n */\n\nimport { StyleSheet, ViewStyle, TextStyle, ImageStyle } from 'react-native';\n\ntype Style = ViewStyle | TextStyle | ImageStyle;\ntype StyleInput = Style | Style[] | null | undefined | false;\n\n/**\n * Merges multiple style objects into a single flattened style.\n *\n * Handles undefined, null, false, and nested arrays. React Native equivalent\n * of clsx/cn for web.\n *\n * @param inputs - Style objects or falsy values to merge\n * @returns Merged and flattened style object\n *\n * @example\n * ```tsx\n * const styles = cn(\n * baseStyles.container,\n * isActive && activeStyles,\n * { padding: 16 }\n * );\n * ```\n */\nexport function cn(...inputs: StyleInput[]): Style {\n const styles: Style[] = [];\n\n for (const input of inputs) {\n if (!input) continue;\n\n if (Array.isArray(input)) {\n const flattened = StyleSheet.flatten(input);\n if (flattened) styles.push(flattened);\n } else {\n styles.push(input);\n }\n }\n\n return StyleSheet.flatten(styles);\n}\n\n/**\n * Creates a style object from conditional styles.\n *\n * More explicit alternative to cn() for complex conditions.\n *\n * @param styles - Object mapping condition names to style values\n * @returns Merged and flattened style object\n *\n * @example\n * ```tsx\n * const styles = mergeStyles({\n * base: baseStyle,\n * active: isActive && activeStyle,\n * disabled: isDisabled && disabledStyle,\n * });\n * ```\n */\nexport function mergeStyles(styles: Record<string, StyleInput>): Style {\n return cn(...Object.values(styles));\n}\n","/**\n * Platform Utilities\n *\n * Helpers for platform-specific behavior\n */\n\nimport { Platform, Dimensions, PixelRatio } from 'react-native';\n\n/** True if running on iOS */\nexport const isIOS = Platform.OS === 'ios';\n\n/** True if running on Android */\nexport const isAndroid = Platform.OS === 'android';\n\n/** True if running on web */\nexport const isWeb = Platform.OS === 'web';\n\n/** iOS version number (returns 0 on non-iOS platforms) */\nexport const iosVersion = isIOS\n ? parseInt(String(Platform.Version), 10)\n : 0;\n\n/** Android API level (returns 0 on non-Android platforms) */\nexport const androidApiLevel = isAndroid\n ? (Platform.Version as number)\n : 0;\n\n/**\n * Check if device is a tablet.\n *\n * Uses screen dimensions heuristic (600dp minimum, aspect ratio < 1.6).\n *\n * @returns True if device is likely a tablet\n */\nexport function isTablet(): boolean {\n const { width, height } = Dimensions.get('window');\n const aspectRatio = Math.max(width, height) / Math.min(width, height);\n const isLargeScreen = Math.min(width, height) >= 600;\n\n return isLargeScreen && aspectRatio < 1.6;\n}\n\n/** Device pixel ratio for crisp rendering */\nexport const pixelRatio = PixelRatio.get();\n\n/**\n * Round to nearest pixel for crisp lines and borders.\n *\n * @param value - Value in logical pixels\n * @returns Value rounded to nearest physical pixel\n */\nexport function roundToNearestPixel(value: number): number {\n return PixelRatio.roundToNearestPixel(value);\n}\n\n/**\n * Get safe font scale (clamped for accessibility).\n *\n * Prevents excessively large text from breaking layouts when users enable\n * large text accessibility settings.\n *\n * @param maxScale - Maximum scale to allow (defaults to 1.3)\n * @returns Clamped font scale factor\n */\nexport function getFontScale(maxScale = 1.3): number {\n return Math.min(PixelRatio.getFontScale(), maxScale);\n}\n","/**\n * Accessibility Utilities\n *\n * Helpers for building accessible components\n */\n\nimport { AccessibilityRole, AccessibilityState } from 'react-native';\n\nexport interface A11yProps {\n accessible?: boolean;\n accessibilityLabel?: string;\n accessibilityHint?: string;\n accessibilityRole?: AccessibilityRole;\n accessibilityState?: AccessibilityState;\n}\n\n/**\n * Creates accessibility props for a button.\n *\n * @param label - Accessible label for the button\n * @param options - Optional button state (hint, disabled, selected)\n * @returns Accessibility props to spread onto component\n *\n * @example\n * ```tsx\n * <Pressable {...buttonA11y('Submit', { disabled: isLoading })} />\n * ```\n */\nexport function buttonA11y(\n label: string,\n options?: {\n hint?: string;\n disabled?: boolean;\n selected?: boolean;\n }\n): A11yProps {\n return {\n accessible: true,\n accessibilityRole: 'button',\n accessibilityLabel: label,\n accessibilityHint: options?.hint,\n accessibilityState: {\n disabled: options?.disabled,\n selected: options?.selected,\n },\n };\n}\n\n/**\n * Creates accessibility props for a checkbox/switch.\n *\n * @param label - Accessible label for the toggle\n * @param checked - Whether the toggle is checked\n * @param options - Optional toggle state (hint, disabled)\n * @returns Accessibility props to spread onto component\n *\n * @example\n * ```tsx\n * <Pressable {...toggleA11y('Dark Mode', isDark, { disabled: false })} />\n * ```\n */\nexport function toggleA11y(\n label: string,\n checked: boolean,\n options?: {\n hint?: string;\n disabled?: boolean;\n }\n): A11yProps {\n return {\n accessible: true,\n accessibilityRole: 'switch',\n accessibilityLabel: label,\n accessibilityHint: options?.hint,\n accessibilityState: {\n checked,\n disabled: options?.disabled,\n },\n };\n}\n\n/**\n * Creates accessibility props for a link.\n *\n * @param label - Accessible label for the link\n * @param options - Optional hint text\n * @returns Accessibility props to spread onto component\n *\n * @example\n * ```tsx\n * <Pressable {...linkA11y('View Details', { hint: 'Opens product page' })} />\n * ```\n */\nexport function linkA11y(\n label: string,\n options?: {\n hint?: string;\n }\n): A11yProps {\n return {\n accessible: true,\n accessibilityRole: 'link',\n accessibilityLabel: label,\n accessibilityHint: options?.hint ?? 'Double tap to open',\n };\n}\n\n/**\n * Creates accessibility props for an image.\n *\n * @param label - Accessible label describing the image\n * @param options - Optional decorative flag (hides from screen readers)\n * @returns Accessibility props to spread onto Image component\n *\n * @example\n * ```tsx\n * <Image {...imageA11y('Profile photo')} />\n * <Image {...imageA11y('', { decorative: true })} />\n * ```\n */\nexport function imageA11y(\n label: string,\n options?: {\n decorative?: boolean;\n }\n): A11yProps {\n if (options?.decorative) {\n return {\n accessible: false,\n accessibilityLabel: undefined,\n };\n }\n\n return {\n accessible: true,\n accessibilityRole: 'image',\n accessibilityLabel: label,\n };\n}\n\n/**\n * Creates accessibility props for a heading.\n *\n * @param label - Accessible label for the heading\n * @returns Accessibility props to spread onto Text component\n *\n * @example\n * ```tsx\n * <Text {...headingA11y('Dashboard')} style={typography.h1}>Dashboard</Text>\n * ```\n */\nexport function headingA11y(label: string): A11yProps {\n return {\n accessible: true,\n accessibilityRole: 'header',\n accessibilityLabel: label,\n };\n}\n","/**\n * Typography Utilities\n *\n * Helper functions for working with typography tokens in React Native.\n * React Native requires absolute lineHeight values (in pixels), not CSS\n * multipliers like web.\n *\n * @example\n * ```tsx\n * import { getLineHeight, lineHeight, fontSize } from '@metacells/mcellui-core';\n *\n * // Instead of inline calculations:\n * // lineHeight: fontSize.base * 1.5\n *\n * // Use the helper:\n * lineHeight: getLineHeight(fontSize.base, lineHeight.normal)\n * // or with shorthand:\n * lineHeight: getLineHeight(14, 'normal')\n * ```\n */\n\nimport { fontSize, lineHeight as lineHeightTokens, type LineHeightKey } from '../theme/typography';\n\n/**\n * Calculates absolute lineHeight for React Native.\n *\n * React Native requires lineHeight as absolute pixel values, not CSS multipliers.\n * This helper converts fontSize + multiplier into the correct absolute value.\n *\n * @param size - Font size in pixels (e.g., fontSize.base = 14)\n * @param multiplier - Either a numeric multiplier (1.5) or a lineHeight key ('normal')\n * @returns Absolute lineHeight in pixels\n *\n * @example\n * ```tsx\n * // Using numeric multiplier\n * getLineHeight(14, 1.5) // => 21\n *\n * // Using lineHeight token key\n * getLineHeight(fontSize.base, 'normal') // => 21\n *\n * // Using lineHeight token value directly\n * getLineHeight(fontSize.base, lineHeight.normal) // => 21\n * ```\n */\nexport function getLineHeight(\n size: number,\n multiplier: number | LineHeightKey\n): number {\n const mult = typeof multiplier === 'string'\n ? lineHeightTokens[multiplier]\n : multiplier;\n\n return Math.round(size * mult);\n}\n\n/**\n * Pre-computed lineHeight values for common fontSize + lineHeight combinations.\n *\n * Use these when you want consistent, pre-calculated values without calling\n * getLineHeight() each time.\n *\n * @example\n * ```tsx\n * import { computedLineHeight } from '@metacells/mcellui-core';\n *\n * <Text style={{ fontSize: 14, lineHeight: computedLineHeight.base.normal }}>\n * Body text with normal line height\n * </Text>\n * ```\n */\nexport const computedLineHeight = {\n /** fontSize['2xs'] = 10 */\n '2xs': {\n none: getLineHeight(fontSize['2xs'], 'none'),\n tight: getLineHeight(fontSize['2xs'], 'tight'),\n snug: getLineHeight(fontSize['2xs'], 'snug'),\n normal: getLineHeight(fontSize['2xs'], 'normal'),\n relaxed: getLineHeight(fontSize['2xs'], 'relaxed'),\n loose: getLineHeight(fontSize['2xs'], 'loose'),\n },\n /** fontSize.xs = 11 */\n xs: {\n none: getLineHeight(fontSize.xs, 'none'),\n tight: getLineHeight(fontSize.xs, 'tight'),\n snug: getLineHeight(fontSize.xs, 'snug'),\n normal: getLineHeight(fontSize.xs, 'normal'),\n relaxed: getLineHeight(fontSize.xs, 'relaxed'),\n loose: getLineHeight(fontSize.xs, 'loose'),\n },\n /** fontSize.sm = 12 */\n sm: {\n none: getLineHeight(fontSize.sm, 'none'),\n tight: getLineHeight(fontSize.sm, 'tight'),\n snug: getLineHeight(fontSize.sm, 'snug'),\n normal: getLineHeight(fontSize.sm, 'normal'),\n relaxed: getLineHeight(fontSize.sm, 'relaxed'),\n loose: getLineHeight(fontSize.sm, 'loose'),\n },\n /** fontSize.base = 14 */\n base: {\n none: getLineHeight(fontSize.base, 'none'),\n tight: getLineHeight(fontSize.base, 'tight'),\n snug: getLineHeight(fontSize.base, 'snug'),\n normal: getLineHeight(fontSize.base, 'normal'),\n relaxed: getLineHeight(fontSize.base, 'relaxed'),\n loose: getLineHeight(fontSize.base, 'loose'),\n },\n /** fontSize.md = 16 */\n md: {\n none: getLineHeight(fontSize.md, 'none'),\n tight: getLineHeight(fontSize.md, 'tight'),\n snug: getLineHeight(fontSize.md, 'snug'),\n normal: getLineHeight(fontSize.md, 'normal'),\n relaxed: getLineHeight(fontSize.md, 'relaxed'),\n loose: getLineHeight(fontSize.md, 'loose'),\n },\n /** fontSize.lg = 18 */\n lg: {\n none: getLineHeight(fontSize.lg, 'none'),\n tight: getLineHeight(fontSize.lg, 'tight'),\n snug: getLineHeight(fontSize.lg, 'snug'),\n normal: getLineHeight(fontSize.lg, 'normal'),\n relaxed: getLineHeight(fontSize.lg, 'relaxed'),\n loose: getLineHeight(fontSize.lg, 'loose'),\n },\n /** fontSize.xl = 20 */\n xl: {\n none: getLineHeight(fontSize.xl, 'none'),\n tight: getLineHeight(fontSize.xl, 'tight'),\n snug: getLineHeight(fontSize.xl, 'snug'),\n normal: getLineHeight(fontSize.xl, 'normal'),\n relaxed: getLineHeight(fontSize.xl, 'relaxed'),\n loose: getLineHeight(fontSize.xl, 'loose'),\n },\n /** fontSize['2xl'] = 24 */\n '2xl': {\n none: getLineHeight(fontSize['2xl'], 'none'),\n tight: getLineHeight(fontSize['2xl'], 'tight'),\n snug: getLineHeight(fontSize['2xl'], 'snug'),\n normal: getLineHeight(fontSize['2xl'], 'normal'),\n relaxed: getLineHeight(fontSize['2xl'], 'relaxed'),\n loose: getLineHeight(fontSize['2xl'], 'loose'),\n },\n /** fontSize['3xl'] = 30 */\n '3xl': {\n none: getLineHeight(fontSize['3xl'], 'none'),\n tight: getLineHeight(fontSize['3xl'], 'tight'),\n snug: getLineHeight(fontSize['3xl'], 'snug'),\n normal: getLineHeight(fontSize['3xl'], 'normal'),\n relaxed: getLineHeight(fontSize['3xl'], 'relaxed'),\n loose: getLineHeight(fontSize['3xl'], 'loose'),\n },\n /** fontSize['4xl'] = 36 */\n '4xl': {\n none: getLineHeight(fontSize['4xl'], 'none'),\n tight: getLineHeight(fontSize['4xl'], 'tight'),\n snug: getLineHeight(fontSize['4xl'], 'snug'),\n normal: getLineHeight(fontSize['4xl'], 'normal'),\n relaxed: getLineHeight(fontSize['4xl'], 'relaxed'),\n loose: getLineHeight(fontSize['4xl'], 'loose'),\n },\n /** fontSize['5xl'] = 48 */\n '5xl': {\n none: getLineHeight(fontSize['5xl'], 'none'),\n tight: getLineHeight(fontSize['5xl'], 'tight'),\n snug: getLineHeight(fontSize['5xl'], 'snug'),\n normal: getLineHeight(fontSize['5xl'], 'normal'),\n relaxed: getLineHeight(fontSize['5xl'], 'relaxed'),\n loose: getLineHeight(fontSize['5xl'], 'loose'),\n },\n} as const;\n\nexport type ComputedLineHeightKey = keyof typeof computedLineHeight;\n","/**\n * Pressable Primitive\n *\n * Enhanced Pressable with:\n * - Built-in haptic feedback\n * - Reduce motion support\n * - Configurable press states\n */\n\nimport React, { useCallback } from 'react';\nimport {\n Pressable as RNPressable,\n PressableProps as RNPressableProps,\n ViewStyle,\n AccessibilityInfo,\n} from 'react-native';\nimport { haptic } from '../utils/haptics';\n\nexport interface PressableProps extends Omit<RNPressableProps, 'style'> {\n /**\n * Style or style function receiving pressed state\n */\n style?: ViewStyle | ((state: { pressed: boolean }) => ViewStyle);\n\n /**\n * Haptic feedback style on press\n * @default 'light'\n */\n hapticStyle?: 'none' | 'light' | 'medium' | 'heavy' | 'selection';\n\n /**\n * Opacity when pressed\n * @default 0.7\n */\n pressedOpacity?: number;\n\n /**\n * Scale when pressed (respects reduce motion)\n * @default 1\n */\n pressedScale?: number;\n}\n\nexport const Pressable = React.forwardRef<\n React.ElementRef<typeof RNPressable>,\n PressableProps\n>(\n (\n {\n style,\n hapticStyle = 'light',\n pressedOpacity = 0.7,\n pressedScale = 1,\n onPressIn,\n disabled,\n children,\n ...props\n },\n ref\n ) => {\n const [reduceMotion, setReduceMotion] = React.useState(false);\n\n React.useEffect(() => {\n AccessibilityInfo.isReduceMotionEnabled().then(setReduceMotion);\n const subscription = AccessibilityInfo.addEventListener(\n 'reduceMotionChanged',\n setReduceMotion\n );\n return () => subscription.remove();\n }, []);\n\n const handlePressIn = useCallback(\n (event: Parameters<NonNullable<RNPressableProps['onPressIn']>>[0]) => {\n if (hapticStyle !== 'none') {\n haptic(hapticStyle === 'selection' ? 'selection' : hapticStyle);\n }\n onPressIn?.(event);\n },\n [hapticStyle, onPressIn]\n );\n\n const getStyle = useCallback(\n ({ pressed }: { pressed: boolean }): ViewStyle => {\n const baseStyle = typeof style === 'function' ? style({ pressed }) : style;\n const pressedStyle: ViewStyle = pressed\n ? {\n opacity: pressedOpacity,\n transform: reduceMotion ? undefined : [{ scale: pressedScale }],\n }\n : {};\n\n return {\n ...baseStyle,\n ...pressedStyle,\n };\n },\n [style, pressedOpacity, pressedScale, reduceMotion]\n );\n\n return (\n <RNPressable\n ref={ref}\n style={getStyle}\n onPressIn={handlePressIn}\n disabled={disabled}\n {...props}\n >\n {children}\n </RNPressable>\n );\n }\n);\n\nPressable.displayName = 'Pressable';\n","/**\n * Portal Primitive\n *\n * Teleports children to a different part of the React tree.\n * Essential for overlays like Dialogs, Toasts, Dropdowns.\n *\n * Usage:\n * 1. Wrap your app with <PortalProvider>\n * 2. Place <PortalHost /> at the root (after other content)\n * 3. Use <Portal> anywhere to render content at the host\n */\n\nimport React, {\n createContext,\n useContext,\n useState,\n useCallback,\n useMemo,\n useId,\n} from 'react';\nimport { View, StyleSheet } from 'react-native';\n\n// --- Types ---\n\nexport interface PortalContextValue {\n /**\n * Register a portal to be rendered at the host\n */\n mount: (key: string, element: React.ReactNode) => void;\n /**\n * Remove a portal from the host\n */\n unmount: (key: string) => void;\n}\n\nexport interface PortalProviderProps {\n children: React.ReactNode;\n}\n\nexport interface PortalHostProps {\n /**\n * Name of the host (for multiple hosts)\n * @default 'root'\n */\n name?: string;\n}\n\nexport interface PortalProps {\n children: React.ReactNode;\n /**\n * Name of the host to render into\n * @default 'root'\n */\n hostName?: string;\n}\n\n// --- Context ---\n\nconst PortalContext = createContext<PortalContextValue | null>(null);\n\nconst usePortalContext = () => {\n const context = useContext(PortalContext);\n if (!context) {\n throw new Error('Portal must be used within a PortalProvider');\n }\n return context;\n};\n\n// --- Components ---\n\n/**\n * Provides the portal context to the app.\n * Wrap your root component with this provider.\n */\nexport function PortalProvider({ children }: PortalProviderProps) {\n const [portals, setPortals] = useState<Map<string, React.ReactNode>>(\n new Map()\n );\n\n const mount = useCallback((key: string, element: React.ReactNode) => {\n setPortals((prev) => {\n const next = new Map(prev);\n next.set(key, element);\n return next;\n });\n }, []);\n\n const unmount = useCallback((key: string) => {\n setPortals((prev) => {\n const next = new Map(prev);\n next.delete(key);\n return next;\n });\n }, []);\n\n const contextValue = useMemo(() => ({ mount, unmount }), [mount, unmount]);\n\n return (\n <PortalContext.Provider value={contextValue}>\n {children}\n <PortalHost />\n </PortalContext.Provider>\n );\n}\n\nPortalProvider.displayName = 'PortalProvider';\n\n/**\n * The target where portals render their content.\n * Automatically included in PortalProvider, but can be placed manually\n * for custom layouts.\n */\nexport function PortalHost({ name = 'root' }: PortalHostProps) {\n const [portals, setPortals] = useState<Map<string, React.ReactNode>>(\n new Map()\n );\n\n // Create a separate context for this specific host\n const mount = useCallback((key: string, element: React.ReactNode) => {\n setPortals((prev) => {\n const next = new Map(prev);\n next.set(key, element);\n return next;\n });\n }, []);\n\n const unmount = useCallback((key: string) => {\n setPortals((prev) => {\n const next = new Map(prev);\n next.delete(key);\n return next;\n });\n }, []);\n\n return (\n <PortalHostContext.Provider value={{ mount, unmount, name }}>\n <View style={styles.host} pointerEvents=\"box-none\">\n {Array.from(portals.values())}\n </View>\n </PortalHostContext.Provider>\n );\n}\n\nPortalHost.displayName = 'PortalHost';\n\n// Host-specific context for named hosts\ninterface PortalHostContextValue extends PortalContextValue {\n name: string;\n}\n\nconst PortalHostContext = createContext<PortalHostContextValue | null>(null);\n\n/**\n * Renders children into the nearest PortalHost.\n */\nexport function Portal({ children, hostName = 'root' }: PortalProps) {\n const portalContext = useContext(PortalContext);\n const key = useId();\n\n React.useEffect(() => {\n if (!portalContext) {\n console.warn('Portal: No PortalProvider found. Content will not render.');\n return;\n }\n\n portalContext.mount(key, children);\n\n return () => {\n portalContext.unmount(key);\n };\n }, [portalContext, key, children]);\n\n return null;\n}\n\nPortal.displayName = 'Portal';\n\n// --- Styles ---\n\nconst styles = StyleSheet.create({\n host: {\n ...StyleSheet.absoluteFillObject,\n zIndex: 9999,\n },\n});\n","/**\n * Slot Primitive\n *\n * Merges its props with its immediate child, similar to Radix UI's Slot.\n * Enables flexible composition patterns where a component can either\n * render its default element or forward props to a custom child.\n *\n * Usage:\n * <Slot style={slotStyle} onPress={handlePress}>\n * <Pressable style={childStyle}>Content</Pressable>\n * </Slot>\n *\n * Result: Pressable receives merged style and both onPress handlers\n */\n\nimport React, { Children, isValidElement, cloneElement } from 'react';\nimport { StyleProp, ViewStyle, TextStyle } from 'react-native';\n\n// --- Types ---\n\ntype AnyProps = Record<string, unknown>;\n\nexport interface SlotProps {\n children: React.ReactNode;\n /**\n * Additional props to merge with the child\n */\n [key: string]: unknown;\n}\n\nexport interface SlottableProps {\n /**\n * When true, renders as Slot (forwarding props to child)\n * When false/undefined, renders as the component's default element\n */\n asChild?: boolean;\n children?: React.ReactNode;\n}\n\n// --- Utilities ---\n\n/**\n * Merges multiple style props into one\n */\nfunction mergeStyles(\n ...styles: (StyleProp<ViewStyle | TextStyle> | undefined)[]\n): StyleProp<ViewStyle | TextStyle> {\n return styles.filter(Boolean) as StyleProp<ViewStyle | TextStyle>;\n}\n\n/**\n * Merges multiple event handlers into one that calls all of them\n */\nfunction mergeHandlers<T extends (...args: unknown[]) => void>(\n ...handlers: (T | undefined)[]\n): T | undefined {\n const validHandlers = handlers.filter(Boolean) as T[];\n if (validHandlers.length === 0) return undefined;\n if (validHandlers.length === 1) return validHandlers[0];\n\n return ((...args: unknown[]) => {\n validHandlers.forEach((handler) => handler(...args));\n }) as T;\n}\n\n/**\n * Checks if a prop is an event handler (starts with 'on' + capital letter)\n */\nfunction isEventHandler(key: string): boolean {\n return /^on[A-Z]/.test(key);\n}\n\n/**\n * Merges slot props with child props\n */\nfunction mergeProps(slotProps: AnyProps, childProps: AnyProps): AnyProps {\n const merged: AnyProps = { ...childProps };\n\n for (const key of Object.keys(slotProps)) {\n const slotValue = slotProps[key];\n const childValue = childProps[key];\n\n if (key === 'style') {\n // Merge styles\n merged[key] = mergeStyles(\n slotValue as StyleProp<ViewStyle>,\n childValue as StyleProp<ViewStyle>\n );\n } else if (key === 'className') {\n // Merge classNames (for NativeWind)\n merged[key] = [childValue, slotValue].filter(Boolean).join(' ');\n } else if (isEventHandler(key)) {\n // Merge event handlers\n merged[key] = mergeHandlers(\n slotValue as (() => void) | undefined,\n childValue as (() => void) | undefined\n );\n } else if (childValue === undefined) {\n // Only use slot value if child doesn't define it\n merged[key] = slotValue;\n }\n // Otherwise, child props take precedence\n }\n\n return merged;\n}\n\n// --- Components ---\n\n/**\n * Slot component that forwards props to its single child.\n * The child receives merged props (styles combined, handlers chained).\n */\nexport const Slot = React.forwardRef<unknown, SlotProps>(\n ({ children, ...slotProps }, forwardedRef) => {\n const child = Children.only(children);\n\n if (!isValidElement(child)) {\n console.warn('Slot: Expected a single valid React element as child');\n return null;\n }\n\n const childProps = child.props as AnyProps;\n const mergedProps = mergeProps(slotProps, childProps);\n\n // Handle ref forwarding\n const childRef = (child as { ref?: React.Ref<unknown> }).ref;\n const ref = forwardedRef\n ? composeRefs(forwardedRef, childRef)\n : childRef;\n\n return cloneElement(child, {\n ...mergedProps,\n ref,\n } as AnyProps);\n }\n);\n\nSlot.displayName = 'Slot';\n\n/**\n * Helper component for conditional slot rendering.\n * Use with asChild prop pattern.\n */\nexport function Slottable({ children }: { children: React.ReactNode }) {\n return <>{children}</>;\n}\n\nSlottable.displayName = 'Slottable';\n\n// --- Ref Utilities ---\n\ntype PossibleRef<T> = React.Ref<T> | undefined;\n\n/**\n * Composes multiple refs into a single ref callback\n */\nfunction composeRefs<T>(...refs: PossibleRef<T>[]): React.RefCallback<T> {\n return (node) => {\n refs.forEach((ref) => {\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref != null) {\n (ref as React.MutableRefObject<T | null>).current = node;\n }\n });\n };\n}\n\n/**\n * Hook to compose refs\n */\nexport function useComposedRefs<T>(\n ...refs: PossibleRef<T>[]\n): React.RefCallback<T> {\n return React.useCallback(composeRefs(...refs), refs);\n}\n","/**\n * ErrorBoundary\n *\n * A React error boundary component for catching and handling\n * runtime errors in mcellui components.\n *\n * @example\n * ```tsx\n * // Wrap individual components\n * <ErrorBoundary fallback={<Text>Something went wrong</Text>}>\n * <MyComponent />\n * </ErrorBoundary>\n *\n * // With custom error handler\n * <ErrorBoundary\n * onError={(error, errorInfo) => {\n * logErrorToService(error, errorInfo);\n * }}\n * fallback={({ error, reset }) => (\n * <View>\n * <Text>Error: {error.message}</Text>\n * <Button onPress={reset}>Try Again</Button>\n * </View>\n * )}\n * >\n * <MyComponent />\n * </ErrorBoundary>\n * ```\n */\n\nimport React, { Component, ReactNode, ErrorInfo } from 'react';\nimport { View, Text, StyleSheet, Pressable } from 'react-native';\n\nexport interface ErrorBoundaryFallbackProps {\n /** The error that was caught */\n error: Error;\n /** Function to reset the error boundary and retry */\n reset: () => void;\n}\n\nexport interface ErrorBoundaryProps {\n /** Children to render when no error */\n children: ReactNode;\n\n /**\n * Fallback UI to show when an error occurs.\n * Can be a ReactNode or a render function receiving error details.\n */\n fallback?: ReactNode | ((props: ErrorBoundaryFallbackProps) => ReactNode);\n\n /**\n * Callback when an error is caught.\n * Use for logging errors to external services.\n */\n onError?: (error: Error, errorInfo: ErrorInfo) => void;\n\n /**\n * Callback when the error boundary resets.\n */\n onReset?: () => void;\n}\n\ninterface ErrorBoundaryState {\n hasError: boolean;\n error: Error | null;\n}\n\nexport class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {\n constructor(props: ErrorBoundaryProps) {\n super(props);\n this.state = { hasError: false, error: null };\n }\n\n static getDerivedStateFromError(error: Error): ErrorBoundaryState {\n return { hasError: true, error };\n }\n\n componentDidCatch(error: Error, errorInfo: ErrorInfo): void {\n this.props.onError?.(error, errorInfo);\n }\n\n reset = (): void => {\n this.props.onReset?.();\n this.setState({ hasError: false, error: null });\n };\n\n render(): ReactNode {\n const { hasError, error } = this.state;\n const { children, fallback } = this.props;\n\n if (hasError && error) {\n // No fallback provided - render default\n if (!fallback) {\n return (\n <DefaultErrorFallback\n error={error}\n reset={this.reset}\n />\n );\n }\n\n // Render function fallback\n if (typeof fallback === 'function') {\n return fallback({ error, reset: this.reset });\n }\n\n // ReactNode fallback\n return fallback;\n }\n\n return children;\n }\n}\n\n/**\n * Default error fallback UI\n */\nfunction DefaultErrorFallback({ error, reset }: ErrorBoundaryFallbackProps) {\n return (\n <View style={styles.container}>\n <Text style={styles.title}>Something went wrong</Text>\n <Text style={styles.message}>{error.message}</Text>\n <Pressable style={styles.button} onPress={reset}>\n <Text style={styles.buttonText}>Try Again</Text>\n </Pressable>\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n padding: 24,\n backgroundColor: '#f8f8f8',\n },\n title: {\n fontSize: 18,\n fontWeight: '600',\n color: '#1a1a1a',\n marginBottom: 8,\n },\n message: {\n fontSize: 14,\n color: '#666',\n textAlign: 'center',\n marginBottom: 24,\n },\n button: {\n backgroundColor: '#1a1a1a',\n paddingHorizontal: 24,\n paddingVertical: 12,\n borderRadius: 8,\n },\n buttonText: {\n color: '#fff',\n fontSize: 14,\n fontWeight: '500',\n },\n});\n\n/**\n * Higher-order component to wrap a component with an error boundary\n *\n * @example\n * ```tsx\n * const SafeMyComponent = withErrorBoundary(MyComponent, {\n * fallback: <Text>Error loading component</Text>,\n * });\n * ```\n */\nexport function withErrorBoundary<P extends object>(\n WrappedComponent: React.ComponentType<P>,\n errorBoundaryProps?: Omit<ErrorBoundaryProps, 'children'>\n): React.FC<P> {\n const displayName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n\n const ComponentWithErrorBoundary: React.FC<P> = (props) => (\n <ErrorBoundary {...errorBoundaryProps}>\n <WrappedComponent {...props} />\n </ErrorBoundary>\n );\n\n ComponentWithErrorBoundary.displayName = `withErrorBoundary(${displayName})`;\n\n return ComponentWithErrorBoundary;\n}\n","/**\n * NativeUI Constants\n *\n * Zentralisierte Magic Numbers und Konfigurationswerte.\n * Diese Werte werden von Components verwendet und können\n * über Props überschrieben werden.\n *\n * @example\n * ```tsx\n * import { SHEET_CONSTANTS } from '@metacells/mcellui-core';\n *\n * // In SheetContent:\n * if (translationY > height * SHEET_CONSTANTS.closeThreshold) {\n * close();\n * }\n * ```\n */\n\n// ============================================\n// Sheet Constants\n// ============================================\n\nexport const SHEET_CONSTANTS = {\n /** Threshold (0-1) für automatisches Schließen beim Ziehen */\n closeThreshold: 0.3,\n /** Geschwindigkeit (px/s) für Swipe-to-Close */\n velocityThreshold: 500,\n /** Backdrop Fade-In Dauer (ms) */\n backdropFadeInDuration: 200,\n /** Backdrop Fade-Out Dauer (ms) */\n backdropFadeOutDuration: 150,\n /** Maximale Backdrop Opacity */\n backdropMaxOpacity: 0.5,\n /** Handle Breite (px) */\n handleWidth: 36,\n /** Handle Höhe (px) */\n handleHeight: 4,\n /** Handle Container Padding Top (px) */\n handlePaddingTop: 12,\n /** Handle Container Padding Bottom (px) */\n handlePaddingBottom: 8,\n /** Content Horizontal Padding (px) */\n contentPaddingHorizontal: 16,\n} as const;\n\n// ============================================\n// Dialog Constants\n// ============================================\n\nexport const DIALOG_CONSTANTS = {\n /** Screen Margin für Dialog Breite (px) */\n screenMargin: 48,\n /** Close Animation Dauer (ms) */\n closeAnimationDuration: 150,\n /** Start Scale für Enter Animation */\n enterStartScale: 0.95,\n /** Dialog Content Padding (px) */\n contentPadding: 24,\n /** Backdrop Max Opacity */\n backdropMaxOpacity: 0.5,\n} as const;\n\n// ============================================\n// Toast Constants\n// ============================================\n\nexport const TOAST_CONSTANTS = {\n /** Standard Anzeigedauer (ms) */\n defaultDuration: 4000,\n /** Maximale gleichzeitig sichtbare Toasts */\n maxToasts: 3,\n /** Fade-Out Dauer (ms) */\n fadeOutDuration: 150,\n /** Container Top Offset vom SafeArea (px) */\n containerTopOffset: 8,\n /** Toast Width Margin (px) - wird von Screen Width abgezogen */\n widthMargin: 32,\n /** Fallback Farben wenn Theme sie nicht hat */\n fallbackColors: {\n success: '#22c55e',\n successForeground: '#ffffff',\n warning: '#f59e0b',\n warningForeground: '#000000',\n },\n} as const;\n\n// ============================================\n// Button Constants\n// ============================================\n\nexport const BUTTON_CONSTANTS = {\n /** Scale beim Drücken (0-1) */\n pressScale: 0.97,\n /** Opacity bei disabled */\n disabledOpacity: 0.5,\n} as const;\n\n// ============================================\n// Swipeable Row Constants\n// ============================================\n\nexport const SWIPEABLE_CONSTANTS = {\n /** Standard Action Button Breite (px) */\n actionWidth: 80,\n /** Geschwindigkeit für Snap (px/s) */\n velocityThreshold: 500,\n /** Full Swipe Threshold (0-1 von Screen Width) */\n fullSwipeThreshold: 0.5,\n /** Full Swipe Animation Dauer (ms) */\n fullSwipeAnimationDuration: 200,\n /** Resistance Factor am Edge (0-1) */\n resistanceFactor: 0.2,\n /** Active Offset für Gesture Start (px) */\n activeOffset: 10,\n /** Action Icon Margin Bottom (px) */\n actionIconMarginBottom: 4,\n /** Action Button Horizontal Padding (px) */\n actionButtonPaddingHorizontal: 8,\n /** Action Label Font Size */\n actionLabelFontSize: 12,\n} as const;\n\n// ============================================\n// Animation Constants (ergänzend zu theme/animations)\n// ============================================\n\nexport const ANIMATION_CONSTANTS = {\n /** Standard Spring Damping */\n springDamping: 20,\n /** Standard Spring Stiffness */\n springStiffness: 200,\n} as const;\n\n// ============================================\n// Slider Constants\n// ============================================\n\nexport const SLIDER_CONSTANTS = {\n /** Track Höhe (px) */\n trackHeight: 6,\n /** Thumb Größe (px) */\n thumbSize: 24,\n /** Hit Slop für Touch (px) */\n hitSlop: 10,\n} as const;\n\n// ============================================\n// Stepper Constants\n// ============================================\n\nexport const STEPPER_CONSTANTS = {\n /** Button Größe (px) */\n buttonSize: 36,\n /** Long Press Delay (ms) */\n longPressDelay: 500,\n /** Repeat Interval (ms) */\n repeatInterval: 100,\n /** Min Input Width (px) */\n minInputWidth: 48,\n} as const;\n\n// ============================================\n// Typography Constants (für Component Styles)\n// ============================================\n\nexport const TYPOGRAPHY_CONSTANTS = {\n /** Title Font Size für Overlays (Sheet, Dialog) */\n overlayTitleSize: 18,\n /** Description Font Size für Overlays */\n overlayDescriptionSize: 14,\n /** Description Line Height für Dialogs */\n overlayDescriptionLineHeight: 20,\n} as const;\n\n// ============================================\n// Alert Constants\n// ============================================\n\nexport const ALERT_CONSTANTS = {\n /** Padding für Small Variant (px) */\n paddingSm: 12,\n /** Padding für Medium Variant (px) */\n paddingMd: 16,\n /** Padding für Large Variant (px) */\n paddingLg: 20,\n /** Icon Size für Small Variant (px) */\n iconSizeSm: 16,\n /** Icon Size für Medium Variant (px) */\n iconSizeMd: 20,\n /** Icon Size für Large Variant (px) */\n iconSizeLg: 24,\n /** Gap zwischen Icon und Text für Small (px) */\n gapSm: 8,\n /** Gap zwischen Icon und Text für Medium (px) */\n gapMd: 12,\n /** Gap zwischen Icon und Text für Large (px) */\n gapLg: 16,\n /** Title Font Size für Small (px) */\n titleFontSizeSm: 13,\n /** Title Font Size für Medium (px) */\n titleFontSizeMd: 15,\n /** Title Font Size für Large (px) */\n titleFontSizeLg: 17,\n /** Text Font Size für Small (px) */\n textFontSizeSm: 12,\n /** Text Font Size für Medium (px) */\n textFontSizeMd: 14,\n /** Text Font Size für Large (px) */\n textFontSizeLg: 16,\n} as const;\n\n// ============================================\n// Popover Constants\n// ============================================\n\nexport const POPOVER_CONSTANTS = {\n /** Default Offset vom Trigger (px) */\n defaultOffset: 8,\n /** Default Max Width (px) */\n defaultMaxWidth: 280,\n /** Minimum Width (px) */\n minWidth: 120,\n /** Animation Fade-In Dauer (ms) */\n animationInDuration: 150,\n /** Animation Fade-Out Dauer (ms) */\n animationOutDuration: 100,\n /** Spring Damping */\n springDamping: 20,\n /** Spring Stiffness */\n springStiffness: 400,\n} as const;\n\n// ============================================\n// Tooltip Constants\n// ============================================\n\nexport const TOOLTIP_CONSTANTS = {\n /** Content Padding (px) */\n padding: 12,\n /** Margin vom Trigger (px) */\n margin: 8,\n /** Arrow Size (px) */\n arrowSize: 8,\n /** Default Max Width (px) */\n defaultMaxWidth: 250,\n /** Default Delay before showing (ms) */\n defaultDelay: 500,\n /** Animation Fade-In Dauer (ms) */\n animationInDuration: 150,\n /** Animation Fade-Out Dauer (ms) */\n animationOutDuration: 100,\n} as const;\n\n// ============================================\n// Progress Constants\n// ============================================\n\nexport const PROGRESS_CONSTANTS = {\n /** Indeterminate bar width as percentage */\n indeterminateWidth: 30,\n /** Fallback colors for success/warning variants */\n fallbackColors: {\n success: '#22c55e',\n warning: '#f59e0b',\n },\n} as const;\n\n// ============================================\n// Export Types\n// ============================================\n\nexport type SheetConstants = typeof SHEET_CONSTANTS;\nexport type DialogConstants = typeof DIALOG_CONSTANTS;\nexport type ToastConstants = typeof TOAST_CONSTANTS;\nexport type ButtonConstants = typeof BUTTON_CONSTANTS;\nexport type SwipeableConstants = typeof SWIPEABLE_CONSTANTS;\nexport type AnimationConstants = typeof ANIMATION_CONSTANTS;\nexport type SliderConstants = typeof SLIDER_CONSTANTS;\nexport type StepperConstants = typeof STEPPER_CONSTANTS;\nexport type TypographyConstants = typeof TYPOGRAPHY_CONSTANTS;\nexport type AlertConstants = typeof ALERT_CONSTANTS;\nexport type PopoverConstants = typeof POPOVER_CONSTANTS;\nexport type TooltipConstants = typeof TOOLTIP_CONSTANTS;\nexport type ProgressConstants = typeof PROGRESS_CONSTANTS;\n"]}
|