diff --git a/.gitignore b/.gitignore
index 67f3212..f1be469 100644
--- a/.gitignore
+++ b/.gitignore
@@ -76,7 +76,7 @@ android/keystores/debug.keystore
.turbo/
# generated by bob
-lib/
+dist/
# React Native Codegen
ios/generated
diff --git a/README.md b/README.md
index d66d438..2e05edf 100644
--- a/README.md
+++ b/README.md
@@ -1,25 +1,133 @@
# react-native-nayan
-React Native Component Library
+React Native Component Library for smooth and faster mobile application development.
-## Installation
+## ✨ Features
+- 🌈 Enterprise-class UI designed for mobile applications.
+- 📦 A set of high-quality React native components out of the box.
+- 🛡 Written in TypeScript with predictable static types.
+- ⚙️ Whole package of design resources and development tools.
+- 🎨 Powerful theme customization based on Tailwind and Nativewind.
+
+## 🔨 Installation
```sh
npm install react-native-nayan
```
-## Usage
+## 🕹 Usage
+Follow Nativewind installation as per the [nativewind](https://www.nativewind.dev/getting-started/installation) documentation.
+Change tailwind.config.ts as bellow
-## Contributing
+```typescript
+const { hairlineWidth } = require('nativewind/theme');
+const colors = require('tailwindcss/colors');
-See the [contributing guide](CONTRIBUTING.md) to learn how to contribute to the repository and the development workflow.
+/** @type {import('tailwindcss').Config} */
+module.exports = {
+ darkMode: 'class',
+ content: [
+ './src/**/*.{js,jsx,ts,tsx}',
+ '../src/**/*.{js,jsx,ts,tsx}'
+ ],
+ presets: [require('nativewind/preset')],
+ theme: {
+ colors: {
+ ...colors,
+ primary: 'var(--color-primary)',
+ card: 'var(--color-card)',
+ text: 'var(--color-text)',
+ muted: 'var(--color-muted)',
+ border: 'var(--color-border)',
+ background: 'var(--color-background)'
+ },
+ extend: {
+ borderWidth: {
+ hairline: hairlineWidth()
+ },
+ keyframes: {
+ 'accordion-down': {
+ from: { height: '0' },
+ to: { height: 'var(--radix-accordion-content-height)' }
+ },
+ 'accordion-up': {
+ from: { height: 'var(--radix-accordion-content-height)' },
+ to: { height: '0' }
+ }
+ },
+ animation: {
+ 'accordion-down': 'accordion-down 0.2s ease-out',
+ 'accordion-up': 'accordion-up 0.2s ease-out'
+ }
+ }
+ },
+ plugins: []
+};
+```
+
+Create theme colors constant with your choice of colors
+
+```typescript
+import { DarkTheme, DefaultTheme } from '@react-navigation/native';
+
+export const themeColors = {
+ light: {
+ ...DefaultTheme,
+ colors: {
+ primary: 'hsl(215 100% 45%)',
+ background: 'hsl(216 20% 95%)',
+ card: 'hsl(0 0% 100%)',
+ text: 'hsl(0 0% 2%)',
+ muted: 'hsl(0 0% 50%)',
+ border: 'hsl(0 0% 88%)',
+ notification: 'hsl(0 0% 100%)'
+ }
+ },
+ dark: {
+ ...DarkTheme,
+ colors: {
+ primary: 'hsl(209 100% 58%)',
+ background: 'hsl(0 0% 12%)',
+ card: 'hsl(0 0% 21%)',
+ text: 'hsl(0 0% 96%)',
+ muted: 'hsl(0 0% 69%)',
+ border: 'hsl(0 0% 31%)',
+ notification: 'hsl(0 0% 21%)'
+ }
+ }
+};
+```
+
+Change your app starting file as bellow
+
+```tsx
+import '../global.css';
+import 'react-native-reanimated';
+import { NText, NPress, NTheme, useColorScheme } from 'react-native-nayan';
+import { View } from 'react-native';
+import { themeColors } from './constants';
-## License
+export default function App() {
+ const {colorScheme, setColorScheme} = useColorScheme();
-MIT
+ const chnageTheme = () => {
+ setColorScheme(colorScheme === 'dark' ? 'light' : 'dark');
+ }
----
+ return (
+
+
+
+ Change Theme
+
+
+
+ );
+}
+```
+
+## 🤝 Contributing
-Made with [create-react-native-library](https://github.com/callstack/react-native-builder-bob)
+See the [contributing guide](CONTRIBUTING.md) to learn how to contribute to the repository and the development workflow.
diff --git a/components.json b/components.json
new file mode 100644
index 0000000..044a956
--- /dev/null
+++ b/components.json
@@ -0,0 +1,6 @@
+{
+ "aliases": {
+ "components": "@/components",
+ "lib": "@/lib"
+ }
+}
diff --git a/example/android/.gitignore b/example/android/.gitignore
new file mode 100644
index 0000000..8a6be07
--- /dev/null
+++ b/example/android/.gitignore
@@ -0,0 +1,16 @@
+# OSX
+#
+.DS_Store
+
+# Android/IntelliJ
+#
+build/
+.idea
+.gradle
+local.properties
+*.iml
+*.hprof
+.cxx/
+
+# Bundle artifacts
+*.jsbundle
diff --git a/example/android/app/build.gradle b/example/android/app/build.gradle
new file mode 100644
index 0000000..653251a
--- /dev/null
+++ b/example/android/app/build.gradle
@@ -0,0 +1,176 @@
+apply plugin: "com.android.application"
+apply plugin: "org.jetbrains.kotlin.android"
+apply plugin: "com.facebook.react"
+
+def projectRoot = rootDir.getAbsoluteFile().getParentFile().getAbsolutePath()
+
+/**
+ * This is the configuration block to customize your React Native Android app.
+ * By default you don't need to apply any configuration, just uncomment the lines you need.
+ */
+react {
+ entryFile = file(["node", "-e", "require('expo/scripts/resolveAppEntry')", projectRoot, "android", "absolute"].execute(null, rootDir).text.trim())
+ reactNativeDir = new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim()).getParentFile().getAbsoluteFile()
+ hermesCommand = new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + "/sdks/hermesc/%OS-BIN%/hermesc"
+ codegenDir = new File(["node", "--print", "require.resolve('@react-native/codegen/package.json', { paths: [require.resolve('react-native/package.json')] })"].execute(null, rootDir).text.trim()).getParentFile().getAbsoluteFile()
+
+ // Use Expo CLI to bundle the app, this ensures the Metro config
+ // works correctly with Expo projects.
+ cliFile = new File(["node", "--print", "require.resolve('@expo/cli', { paths: [require.resolve('expo/package.json')] })"].execute(null, rootDir).text.trim())
+ bundleCommand = "export:embed"
+
+ /* Folders */
+ // The root of your project, i.e. where "package.json" lives. Default is '../..'
+ // root = file("../../")
+ // The folder where the react-native NPM package is. Default is ../../node_modules/react-native
+ // reactNativeDir = file("../../node_modules/react-native")
+ // The folder where the react-native Codegen package is. Default is ../../node_modules/@react-native/codegen
+ // codegenDir = file("../../node_modules/@react-native/codegen")
+
+ /* Variants */
+ // The list of variants to that are debuggable. For those we're going to
+ // skip the bundling of the JS bundle and the assets. By default is just 'debug'.
+ // If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants.
+ // debuggableVariants = ["liteDebug", "prodDebug"]
+
+ /* Bundling */
+ // A list containing the node command and its flags. Default is just 'node'.
+ // nodeExecutableAndArgs = ["node"]
+
+ //
+ // The path to the CLI configuration file. Default is empty.
+ // bundleConfig = file(../rn-cli.config.js)
+ //
+ // The name of the generated asset file containing your JS bundle
+ // bundleAssetName = "MyApplication.android.bundle"
+ //
+ // The entry file for bundle generation. Default is 'index.android.js' or 'index.js'
+ // entryFile = file("../js/MyApplication.android.js")
+ //
+ // A list of extra flags to pass to the 'bundle' commands.
+ // See https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle
+ // extraPackagerArgs = []
+
+ /* Hermes Commands */
+ // The hermes compiler command to run. By default it is 'hermesc'
+ // hermesCommand = "$rootDir/my-custom-hermesc/bin/hermesc"
+ //
+ // The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map"
+ // hermesFlags = ["-O", "-output-source-map"]
+
+ /* Autolinking */
+ autolinkLibrariesWithApp()
+}
+
+/**
+ * Set this to true to Run Proguard on Release builds to minify the Java bytecode.
+ */
+def enableProguardInReleaseBuilds = (findProperty('android.enableProguardInReleaseBuilds') ?: false).toBoolean()
+
+/**
+ * The preferred build flavor of JavaScriptCore (JSC)
+ *
+ * For example, to use the international variant, you can use:
+ * `def jscFlavor = 'org.webkit:android-jsc-intl:+'`
+ *
+ * The international variant includes ICU i18n library and necessary data
+ * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that
+ * give correct results when using with locales other than en-US. Note that
+ * this variant is about 6MiB larger per architecture than default.
+ */
+def jscFlavor = 'org.webkit:android-jsc:+'
+
+android {
+ ndkVersion rootProject.ext.ndkVersion
+
+ buildToolsVersion rootProject.ext.buildToolsVersion
+ compileSdk rootProject.ext.compileSdkVersion
+
+ namespace 'nayan.example'
+ defaultConfig {
+ applicationId 'nayan.example'
+ minSdkVersion rootProject.ext.minSdkVersion
+ targetSdkVersion rootProject.ext.targetSdkVersion
+ versionCode 1
+ versionName "1.0.0"
+ }
+ signingConfigs {
+ debug {
+ storeFile file('debug.keystore')
+ storePassword 'android'
+ keyAlias 'androiddebugkey'
+ keyPassword 'android'
+ }
+ }
+ buildTypes {
+ debug {
+ signingConfig signingConfigs.debug
+ }
+ release {
+ // Caution! In production, you need to generate your own keystore file.
+ // see https://reactnative.dev/docs/signed-apk-android.
+ signingConfig signingConfigs.debug
+ shrinkResources (findProperty('android.enableShrinkResourcesInReleaseBuilds')?.toBoolean() ?: false)
+ minifyEnabled enableProguardInReleaseBuilds
+ proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
+ crunchPngs (findProperty('android.enablePngCrunchInReleaseBuilds')?.toBoolean() ?: true)
+ }
+ }
+ packagingOptions {
+ jniLibs {
+ useLegacyPackaging (findProperty('expo.useLegacyPackaging')?.toBoolean() ?: false)
+ }
+ }
+ androidResources {
+ ignoreAssetsPattern '!.svn:!.git:!.ds_store:!*.scc:!CVS:!thumbs.db:!picasa.ini:!*~'
+ }
+}
+
+// Apply static values from `gradle.properties` to the `android.packagingOptions`
+// Accepts values in comma delimited lists, example:
+// android.packagingOptions.pickFirsts=/LICENSE,**/picasa.ini
+["pickFirsts", "excludes", "merges", "doNotStrip"].each { prop ->
+ // Split option: 'foo,bar' -> ['foo', 'bar']
+ def options = (findProperty("android.packagingOptions.$prop") ?: "").split(",");
+ // Trim all elements in place.
+ for (i in 0.. 0) {
+ println "android.packagingOptions.$prop += $options ($options.length)"
+ // Ex: android.packagingOptions.pickFirsts += '**/SCCS/**'
+ options.each {
+ android.packagingOptions[prop] += it
+ }
+ }
+}
+
+dependencies {
+ // The version of react-native is set by the React Native Gradle Plugin
+ implementation("com.facebook.react:react-android")
+
+ def isGifEnabled = (findProperty('expo.gif.enabled') ?: "") == "true";
+ def isWebpEnabled = (findProperty('expo.webp.enabled') ?: "") == "true";
+ def isWebpAnimatedEnabled = (findProperty('expo.webp.animated') ?: "") == "true";
+
+ if (isGifEnabled) {
+ // For animated gif support
+ implementation("com.facebook.fresco:animated-gif:${reactAndroidLibs.versions.fresco.get()}")
+ }
+
+ if (isWebpEnabled) {
+ // For webp support
+ implementation("com.facebook.fresco:webpsupport:${reactAndroidLibs.versions.fresco.get()}")
+ if (isWebpAnimatedEnabled) {
+ // Animated webp support
+ implementation("com.facebook.fresco:animated-webp:${reactAndroidLibs.versions.fresco.get()}")
+ }
+ }
+
+ if (hermesEnabled.toBoolean()) {
+ implementation("com.facebook.react:hermes-android")
+ } else {
+ implementation jscFlavor
+ }
+}
diff --git a/example/android/app/debug.keystore b/example/android/app/debug.keystore
new file mode 100644
index 0000000..364e105
Binary files /dev/null and b/example/android/app/debug.keystore differ
diff --git a/example/android/app/proguard-rules.pro b/example/android/app/proguard-rules.pro
new file mode 100644
index 0000000..551eb41
--- /dev/null
+++ b/example/android/app/proguard-rules.pro
@@ -0,0 +1,14 @@
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the proguardFiles
+# directive in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# react-native-reanimated
+-keep class com.swmansion.reanimated.** { *; }
+-keep class com.facebook.react.turbomodule.** { *; }
+
+# Add any project specific keep options here:
diff --git a/example/android/app/src/debug/AndroidManifest.xml b/example/android/app/src/debug/AndroidManifest.xml
new file mode 100644
index 0000000..3ec2507
--- /dev/null
+++ b/example/android/app/src/debug/AndroidManifest.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
diff --git a/example/android/app/src/main/AndroidManifest.xml b/example/android/app/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..787e012
--- /dev/null
+++ b/example/android/app/src/main/AndroidManifest.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/example/android/app/src/main/java/nayan/example/MainActivity.kt b/example/android/app/src/main/java/nayan/example/MainActivity.kt
new file mode 100644
index 0000000..b83ec78
--- /dev/null
+++ b/example/android/app/src/main/java/nayan/example/MainActivity.kt
@@ -0,0 +1,61 @@
+package nayan.example
+
+import android.os.Build
+import android.os.Bundle
+
+import com.facebook.react.ReactActivity
+import com.facebook.react.ReactActivityDelegate
+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled
+import com.facebook.react.defaults.DefaultReactActivityDelegate
+
+import expo.modules.ReactActivityDelegateWrapper
+
+class MainActivity : ReactActivity() {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ // Set the theme to AppTheme BEFORE onCreate to support
+ // coloring the background, status bar, and navigation bar.
+ // This is required for expo-splash-screen.
+ setTheme(R.style.AppTheme);
+ super.onCreate(null)
+ }
+
+ /**
+ * Returns the name of the main component registered from JavaScript. This is used to schedule
+ * rendering of the component.
+ */
+ override fun getMainComponentName(): String = "main"
+
+ /**
+ * Returns the instance of the [ReactActivityDelegate]. We use [DefaultReactActivityDelegate]
+ * which allows you to enable New Architecture with a single boolean flags [fabricEnabled]
+ */
+ override fun createReactActivityDelegate(): ReactActivityDelegate {
+ return ReactActivityDelegateWrapper(
+ this,
+ BuildConfig.IS_NEW_ARCHITECTURE_ENABLED,
+ object : DefaultReactActivityDelegate(
+ this,
+ mainComponentName,
+ fabricEnabled
+ ){})
+ }
+
+ /**
+ * Align the back button behavior with Android S
+ * where moving root activities to background instead of finishing activities.
+ * @see onBackPressed
+ */
+ override fun invokeDefaultOnBackPressed() {
+ if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.R) {
+ if (!moveTaskToBack(false)) {
+ // For non-root activities, use the default implementation to finish them.
+ super.invokeDefaultOnBackPressed()
+ }
+ return
+ }
+
+ // Use the default back button implementation on Android S
+ // because it's doing more than [Activity.moveTaskToBack] in fact.
+ super.invokeDefaultOnBackPressed()
+ }
+}
diff --git a/example/android/app/src/main/java/nayan/example/MainApplication.kt b/example/android/app/src/main/java/nayan/example/MainApplication.kt
new file mode 100644
index 0000000..8a1d4f4
--- /dev/null
+++ b/example/android/app/src/main/java/nayan/example/MainApplication.kt
@@ -0,0 +1,57 @@
+package nayan.example
+
+import android.app.Application
+import android.content.res.Configuration
+
+import com.facebook.react.PackageList
+import com.facebook.react.ReactApplication
+import com.facebook.react.ReactNativeHost
+import com.facebook.react.ReactPackage
+import com.facebook.react.ReactHost
+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load
+import com.facebook.react.defaults.DefaultReactNativeHost
+import com.facebook.react.soloader.OpenSourceMergedSoMapping
+import com.facebook.soloader.SoLoader
+
+import expo.modules.ApplicationLifecycleDispatcher
+import expo.modules.ReactNativeHostWrapper
+
+class MainApplication : Application(), ReactApplication {
+
+ override val reactNativeHost: ReactNativeHost = ReactNativeHostWrapper(
+ this,
+ object : DefaultReactNativeHost(this) {
+ override fun getPackages(): List {
+ val packages = PackageList(this).packages
+ // Packages that cannot be autolinked yet can be added manually here, for example:
+ // packages.add(new MyReactNativePackage());
+ return packages
+ }
+
+ override fun getJSMainModuleName(): String = ".expo/.virtual-metro-entry"
+
+ override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG
+
+ override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED
+ override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED
+ }
+ )
+
+ override val reactHost: ReactHost
+ get() = ReactNativeHostWrapper.createReactHost(applicationContext, reactNativeHost)
+
+ override fun onCreate() {
+ super.onCreate()
+ SoLoader.init(this, OpenSourceMergedSoMapping)
+ if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
+ // If you opted-in for the New Architecture, we load the native entry point for this app.
+ load()
+ }
+ ApplicationLifecycleDispatcher.onApplicationCreate(this)
+ }
+
+ override fun onConfigurationChanged(newConfig: Configuration) {
+ super.onConfigurationChanged(newConfig)
+ ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig)
+ }
+}
diff --git a/example/android/app/src/main/res/drawable-hdpi/splashscreen_logo.png b/example/android/app/src/main/res/drawable-hdpi/splashscreen_logo.png
new file mode 100644
index 0000000..31df827
Binary files /dev/null and b/example/android/app/src/main/res/drawable-hdpi/splashscreen_logo.png differ
diff --git a/example/android/app/src/main/res/drawable-mdpi/splashscreen_logo.png b/example/android/app/src/main/res/drawable-mdpi/splashscreen_logo.png
new file mode 100644
index 0000000..ef243aa
Binary files /dev/null and b/example/android/app/src/main/res/drawable-mdpi/splashscreen_logo.png differ
diff --git a/example/android/app/src/main/res/drawable-xhdpi/splashscreen_logo.png b/example/android/app/src/main/res/drawable-xhdpi/splashscreen_logo.png
new file mode 100644
index 0000000..e9d5474
Binary files /dev/null and b/example/android/app/src/main/res/drawable-xhdpi/splashscreen_logo.png differ
diff --git a/example/android/app/src/main/res/drawable-xxhdpi/splashscreen_logo.png b/example/android/app/src/main/res/drawable-xxhdpi/splashscreen_logo.png
new file mode 100644
index 0000000..d61da15
Binary files /dev/null and b/example/android/app/src/main/res/drawable-xxhdpi/splashscreen_logo.png differ
diff --git a/example/android/app/src/main/res/drawable-xxxhdpi/splashscreen_logo.png b/example/android/app/src/main/res/drawable-xxxhdpi/splashscreen_logo.png
new file mode 100644
index 0000000..4aeed11
Binary files /dev/null and b/example/android/app/src/main/res/drawable-xxxhdpi/splashscreen_logo.png differ
diff --git a/example/android/app/src/main/res/drawable/ic_launcher_background.xml b/example/android/app/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 0000000..883b2a0
--- /dev/null
+++ b/example/android/app/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,6 @@
+
+
+ -
+
+
+
\ No newline at end of file
diff --git a/example/android/app/src/main/res/drawable/rn_edit_text_material.xml b/example/android/app/src/main/res/drawable/rn_edit_text_material.xml
new file mode 100644
index 0000000..5c25e72
--- /dev/null
+++ b/example/android/app/src/main/res/drawable/rn_edit_text_material.xml
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/example/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/example/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 0000000..3941bea
--- /dev/null
+++ b/example/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/example/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/example/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 0000000..3941bea
--- /dev/null
+++ b/example/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp
new file mode 100644
index 0000000..7fae0cc
Binary files /dev/null and b/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp differ
diff --git a/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp b/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp
new file mode 100644
index 0000000..ac03dbf
Binary files /dev/null and b/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp differ
diff --git a/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
new file mode 100644
index 0000000..afa0a4e
Binary files /dev/null and b/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp differ
diff --git a/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp
new file mode 100644
index 0000000..78aaf45
Binary files /dev/null and b/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp differ
diff --git a/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp b/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp
new file mode 100644
index 0000000..e1173a9
Binary files /dev/null and b/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp differ
diff --git a/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
new file mode 100644
index 0000000..c4f6e10
Binary files /dev/null and b/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp differ
diff --git a/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp
new file mode 100644
index 0000000..7a0f085
Binary files /dev/null and b/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp differ
diff --git a/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp b/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp
new file mode 100644
index 0000000..ff086fd
Binary files /dev/null and b/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp differ
diff --git a/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
new file mode 100644
index 0000000..6c2d40b
Binary files /dev/null and b/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp differ
diff --git a/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
new file mode 100644
index 0000000..730e3fa
Binary files /dev/null and b/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp differ
diff --git a/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp b/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp
new file mode 100644
index 0000000..f7f1d06
Binary files /dev/null and b/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp differ
diff --git a/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
new file mode 100644
index 0000000..3452615
Binary files /dev/null and b/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp differ
diff --git a/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
new file mode 100644
index 0000000..b11a322
Binary files /dev/null and b/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp differ
diff --git a/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp b/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp
new file mode 100644
index 0000000..49a464e
Binary files /dev/null and b/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp differ
diff --git a/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
new file mode 100644
index 0000000..b51fd15
Binary files /dev/null and b/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp differ
diff --git a/example/android/app/src/main/res/values-night/colors.xml b/example/android/app/src/main/res/values-night/colors.xml
new file mode 100644
index 0000000..3c05de5
--- /dev/null
+++ b/example/android/app/src/main/res/values-night/colors.xml
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/example/android/app/src/main/res/values/colors.xml b/example/android/app/src/main/res/values/colors.xml
new file mode 100644
index 0000000..f387b90
--- /dev/null
+++ b/example/android/app/src/main/res/values/colors.xml
@@ -0,0 +1,6 @@
+
+ #ffffff
+ #ffffff
+ #023c69
+ #ffffff
+
\ No newline at end of file
diff --git a/example/android/app/src/main/res/values/strings.xml b/example/android/app/src/main/res/values/strings.xml
new file mode 100644
index 0000000..41eadde
--- /dev/null
+++ b/example/android/app/src/main/res/values/strings.xml
@@ -0,0 +1,5 @@
+
+ example
+ contain
+ false
+
\ No newline at end of file
diff --git a/example/android/app/src/main/res/values/styles.xml b/example/android/app/src/main/res/values/styles.xml
new file mode 100644
index 0000000..da52521
--- /dev/null
+++ b/example/android/app/src/main/res/values/styles.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/example/android/build.gradle b/example/android/build.gradle
new file mode 100644
index 0000000..abbcb8e
--- /dev/null
+++ b/example/android/build.gradle
@@ -0,0 +1,41 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+
+buildscript {
+ ext {
+ buildToolsVersion = findProperty('android.buildToolsVersion') ?: '35.0.0'
+ minSdkVersion = Integer.parseInt(findProperty('android.minSdkVersion') ?: '24')
+ compileSdkVersion = Integer.parseInt(findProperty('android.compileSdkVersion') ?: '35')
+ targetSdkVersion = Integer.parseInt(findProperty('android.targetSdkVersion') ?: '34')
+ kotlinVersion = findProperty('android.kotlinVersion') ?: '1.9.25'
+
+ ndkVersion = "26.1.10909125"
+ }
+ repositories {
+ google()
+ mavenCentral()
+ }
+ dependencies {
+ classpath('com.android.tools.build:gradle')
+ classpath('com.facebook.react:react-native-gradle-plugin')
+ classpath('org.jetbrains.kotlin:kotlin-gradle-plugin')
+ }
+}
+
+apply plugin: "com.facebook.react.rootproject"
+
+allprojects {
+ repositories {
+ maven {
+ // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
+ url(new File(['node', '--print', "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim(), '../android'))
+ }
+ maven {
+ // Android JSC is installed from npm
+ url(new File(['node', '--print', "require.resolve('jsc-android/package.json', { paths: [require.resolve('react-native/package.json')] })"].execute(null, rootDir).text.trim(), '../dist'))
+ }
+
+ google()
+ mavenCentral()
+ maven { url 'https://www.jitpack.io' }
+ }
+}
diff --git a/example/android/gradle.properties b/example/android/gradle.properties
new file mode 100644
index 0000000..7531e9e
--- /dev/null
+++ b/example/android/gradle.properties
@@ -0,0 +1,56 @@
+# Project-wide Gradle settings.
+
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+# Default value: -Xmx512m -XX:MaxMetaspaceSize=256m
+org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m
+
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
+
+# AndroidX package structure to make it clearer which packages are bundled with the
+# Android operating system, and which are packaged with your app's APK
+# https://developer.android.com/topic/libraries/support-library/androidx-rn
+android.useAndroidX=true
+
+# Enable AAPT2 PNG crunching
+android.enablePngCrunchInReleaseBuilds=true
+
+# Use this property to specify which architecture you want to build.
+# You can also override it from the CLI using
+# ./gradlew -PreactNativeArchitectures=x86_64
+reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64
+
+# Use this property to enable support to the new architecture.
+# This will allow you to use TurboModules and the Fabric render in
+# your application. You should enable this flag either if you want
+# to write custom TurboModules/Fabric components OR use libraries that
+# are providing them.
+newArchEnabled=true
+
+# Use this property to enable or disable the Hermes JS engine.
+# If set to false, you will be using JSC instead.
+hermesEnabled=true
+
+# Enable GIF support in React Native images (~200 B increase)
+expo.gif.enabled=true
+# Enable webp support in React Native images (~85 KB increase)
+expo.webp.enabled=true
+# Enable animated webp support (~3.4 MB increase)
+# Disabled by default because iOS doesn't support animated webp
+expo.webp.animated=false
+
+# Enable network inspector
+EX_DEV_CLIENT_NETWORK_INSPECTOR=true
+
+# Use legacy packaging to compress native libraries in the resulting APK.
+expo.useLegacyPackaging=false
diff --git a/example/android/gradle/wrapper/gradle-wrapper.jar b/example/android/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..a4b76b9
Binary files /dev/null and b/example/android/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/example/android/gradle/wrapper/gradle-wrapper.properties b/example/android/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..79eb9d0
--- /dev/null
+++ b/example/android/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,7 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-all.zip
+networkTimeout=10000
+validateDistributionUrl=true
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git a/example/android/gradlew b/example/android/gradlew
new file mode 100755
index 0000000..f5feea6
--- /dev/null
+++ b/example/android/gradlew
@@ -0,0 +1,252 @@
+#!/bin/sh
+
+#
+# Copyright © 2015-2021 the original authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# SPDX-License-Identifier: Apache-2.0
+#
+
+##############################################################################
+#
+# Gradle start up script for POSIX generated by Gradle.
+#
+# Important for running:
+#
+# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
+# noncompliant, but you have some other compliant shell such as ksh or
+# bash, then to run this script, type that shell name before the whole
+# command line, like:
+#
+# ksh Gradle
+#
+# Busybox and similar reduced shells will NOT work, because this script
+# requires all of these POSIX shell features:
+# * functions;
+# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
+# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
+# * compound commands having a testable exit status, especially «case»;
+# * various built-in commands including «command», «set», and «ulimit».
+#
+# Important for patching:
+#
+# (2) This script targets any POSIX shell, so it avoids extensions provided
+# by Bash, Ksh, etc; in particular arrays are avoided.
+#
+# The "traditional" practice of packing multiple parameters into a
+# space-separated string is a well documented source of bugs and security
+# problems, so this is (mostly) avoided, by progressively accumulating
+# options in "$@", and eventually passing that to Java.
+#
+# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
+# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
+# see the in-line comments for details.
+#
+# There are tweaks for specific operating systems such as AIX, CygWin,
+# Darwin, MinGW, and NonStop.
+#
+# (3) This script is generated from the Groovy template
+# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
+# within the Gradle project.
+#
+# You can find Gradle at https://github.com/gradle/gradle/.
+#
+##############################################################################
+
+# Attempt to set APP_HOME
+
+# Resolve links: $0 may be a link
+app_path=$0
+
+# Need this for daisy-chained symlinks.
+while
+ APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
+ [ -h "$app_path" ]
+do
+ ls=$( ls -ld "$app_path" )
+ link=${ls#*' -> '}
+ case $link in #(
+ /*) app_path=$link ;; #(
+ *) app_path=$APP_HOME$link ;;
+ esac
+done
+
+# This is normally unused
+# shellcheck disable=SC2034
+APP_BASE_NAME=${0##*/}
+# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
+APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s
+' "$PWD" ) || exit
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD=maximum
+
+warn () {
+ echo "$*"
+} >&2
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+} >&2
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "$( uname )" in #(
+ CYGWIN* ) cygwin=true ;; #(
+ Darwin* ) darwin=true ;; #(
+ MSYS* | MINGW* ) msys=true ;; #(
+ NONSTOP* ) nonstop=true ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD=$JAVA_HOME/jre/sh/java
+ else
+ JAVACMD=$JAVA_HOME/bin/java
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD=java
+ if ! command -v java >/dev/null 2>&1
+ then
+ die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+fi
+
+# Increase the maximum file descriptors if we can.
+if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
+ case $MAX_FD in #(
+ max*)
+ # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
+ # shellcheck disable=SC2039,SC3045
+ MAX_FD=$( ulimit -H -n ) ||
+ warn "Could not query maximum file descriptor limit"
+ esac
+ case $MAX_FD in #(
+ '' | soft) :;; #(
+ *)
+ # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
+ # shellcheck disable=SC2039,SC3045
+ ulimit -n "$MAX_FD" ||
+ warn "Could not set maximum file descriptor limit to $MAX_FD"
+ esac
+fi
+
+# Collect all arguments for the java command, stacking in reverse order:
+# * args from the command line
+# * the main class name
+# * -classpath
+# * -D...appname settings
+# * --module-path (only if needed)
+# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
+
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if "$cygwin" || "$msys" ; then
+ APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
+ CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
+
+ JAVACMD=$( cygpath --unix "$JAVACMD" )
+
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ for arg do
+ if
+ case $arg in #(
+ -*) false ;; # don't mess with options #(
+ /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
+ [ -e "$t" ] ;; #(
+ *) false ;;
+ esac
+ then
+ arg=$( cygpath --path --ignore --mixed "$arg" )
+ fi
+ # Roll the args list around exactly as many times as the number of
+ # args, so each arg winds up back in the position where it started, but
+ # possibly modified.
+ #
+ # NB: a `for` loop captures its iteration list before it begins, so
+ # changing the positional parameters here affects neither the number of
+ # iterations, nor the values presented in `arg`.
+ shift # remove old arg
+ set -- "$@" "$arg" # push replacement arg
+ done
+fi
+
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
+# Collect all arguments for the java command:
+# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
+# and any embedded shellness will be escaped.
+# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
+# treated as '${Hostname}' itself on the command line.
+
+set -- \
+ "-Dorg.gradle.appname=$APP_BASE_NAME" \
+ -classpath "$CLASSPATH" \
+ org.gradle.wrapper.GradleWrapperMain \
+ "$@"
+
+# Stop when "xargs" is not available.
+if ! command -v xargs >/dev/null 2>&1
+then
+ die "xargs is not available"
+fi
+
+# Use "xargs" to parse quoted args.
+#
+# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
+#
+# In Bash we could simply go:
+#
+# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
+# set -- "${ARGS[@]}" "$@"
+#
+# but POSIX shell has neither arrays nor command substitution, so instead we
+# post-process each arg (as a line of input to sed) to backslash-escape any
+# character that might be a shell metacharacter, then use eval to reverse
+# that process (while maintaining the separation between arguments), and wrap
+# the whole thing up as a single "set" statement.
+#
+# This will of course break if any of these variables contains a newline or
+# an unmatched quote.
+#
+
+eval "set -- $(
+ printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
+ xargs -n1 |
+ sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
+ tr '\n' ' '
+ )" '"$@"'
+
+exec "$JAVACMD" "$@"
diff --git a/example/android/gradlew.bat b/example/android/gradlew.bat
new file mode 100644
index 0000000..9d21a21
--- /dev/null
+++ b/example/android/gradlew.bat
@@ -0,0 +1,94 @@
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+@rem SPDX-License-Identifier: Apache-2.0
+@rem
+
+@if "%DEBUG%"=="" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%"=="" set DIRNAME=.
+@rem This is normally unused
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if %ERRORLEVEL% equ 0 goto execute
+
+echo. 1>&2
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
+echo. 1>&2
+echo Please set the JAVA_HOME variable in your environment to match the 1>&2
+echo location of your Java installation. 1>&2
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto execute
+
+echo. 1>&2
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
+echo. 1>&2
+echo Please set the JAVA_HOME variable in your environment to match the 1>&2
+echo location of your Java installation. 1>&2
+
+goto fail
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
+
+:end
+@rem End local scope for the variables with windows NT shell
+if %ERRORLEVEL% equ 0 goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+set EXIT_CODE=%ERRORLEVEL%
+if %EXIT_CODE% equ 0 set EXIT_CODE=1
+if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
+exit /b %EXIT_CODE%
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/example/android/settings.gradle b/example/android/settings.gradle
new file mode 100644
index 0000000..bff466b
--- /dev/null
+++ b/example/android/settings.gradle
@@ -0,0 +1,38 @@
+pluginManagement {
+ includeBuild(new File(["node", "--print", "require.resolve('@react-native/gradle-plugin/package.json', { paths: [require.resolve('react-native/package.json')] })"].execute(null, rootDir).text.trim()).getParentFile().toString())
+}
+plugins { id("com.facebook.react.settings") }
+
+extensions.configure(com.facebook.react.ReactSettingsExtension) { ex ->
+ if (System.getenv('EXPO_USE_COMMUNITY_AUTOLINKING') == '1') {
+ ex.autolinkLibrariesFromCommand()
+ } else {
+ def command = [
+ 'node',
+ '--no-warnings',
+ '--eval',
+ 'require(require.resolve(\'expo-modules-autolinking\', { paths: [require.resolve(\'expo/package.json\')] }))(process.argv.slice(1))',
+ 'react-native-config',
+ '--json',
+ '--platform',
+ 'android'
+ ].toList()
+ ex.autolinkLibrariesFromCommand(command)
+ }
+}
+
+rootProject.name = 'example'
+
+dependencyResolutionManagement {
+ versionCatalogs {
+ reactAndroidLibs {
+ from(files(new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim(), "../gradle/libs.versions.toml")))
+ }
+ }
+}
+
+apply from: new File(["node", "--print", "require.resolve('expo/package.json')"].execute(null, rootDir).text.trim(), "../scripts/autolinking.gradle");
+useExpoModules()
+
+include ':app'
+includeBuild(new File(["node", "--print", "require.resolve('@react-native/gradle-plugin/package.json', { paths: [require.resolve('react-native/package.json')] })"].execute(null, rootDir).text.trim()).getParentFile())
diff --git a/example/app.json b/example/app.json
index 1fdcd34..6cbce19 100644
--- a/example/app.json
+++ b/example/app.json
@@ -5,7 +5,7 @@
"version": "1.0.0",
"orientation": "portrait",
"icon": "./assets/icon.png",
- "userInterfaceStyle": "light",
+ "userInterfaceStyle": "automatic",
"newArchEnabled": true,
"splash": {
"image": "./assets/splash-icon.png",
diff --git a/example/index.js b/example/index.js
index cf82bdb..018d06f 100644
--- a/example/index.js
+++ b/example/index.js
@@ -1,4 +1,3 @@
-import './global.css';
import { registerRootComponent } from 'expo';
import App from './src/App';
diff --git a/example/ios/.gitignore b/example/ios/.gitignore
new file mode 100644
index 0000000..8beb344
--- /dev/null
+++ b/example/ios/.gitignore
@@ -0,0 +1,30 @@
+# OSX
+#
+.DS_Store
+
+# Xcode
+#
+build/
+*.pbxuser
+!default.pbxuser
+*.mode1v3
+!default.mode1v3
+*.mode2v3
+!default.mode2v3
+*.perspectivev3
+!default.perspectivev3
+xcuserdata
+*.xccheckout
+*.moved-aside
+DerivedData
+*.hmap
+*.ipa
+*.xcuserstate
+project.xcworkspace
+.xcode.env.local
+
+# Bundle artifacts
+*.jsbundle
+
+# CocoaPods
+/Pods/
diff --git a/example/ios/.xcode.env b/example/ios/.xcode.env
new file mode 100644
index 0000000..3d5782c
--- /dev/null
+++ b/example/ios/.xcode.env
@@ -0,0 +1,11 @@
+# This `.xcode.env` file is versioned and is used to source the environment
+# used when running script phases inside Xcode.
+# To customize your local environment, you can create an `.xcode.env.local`
+# file that is not versioned.
+
+# NODE_BINARY variable contains the PATH to the node executable.
+#
+# Customize the NODE_BINARY variable here.
+# For example, to use nvm with brew, add the following line
+# . "$(brew --prefix nvm)/nvm.sh" --no-use
+export NODE_BINARY=$(command -v node)
diff --git a/example/ios/Podfile b/example/ios/Podfile
new file mode 100644
index 0000000..d17bb82
--- /dev/null
+++ b/example/ios/Podfile
@@ -0,0 +1,66 @@
+require File.join(File.dirname(`node --print "require.resolve('expo/package.json')"`), "scripts/autolinking")
+require File.join(File.dirname(`node --print "require.resolve('react-native/package.json')"`), "scripts/react_native_pods")
+
+require 'json'
+podfile_properties = JSON.parse(File.read(File.join(__dir__, 'Podfile.properties.json'))) rescue {}
+
+ENV['RCT_NEW_ARCH_ENABLED'] = podfile_properties['newArchEnabled'] == 'true' ? '1' : '0'
+ENV['EX_DEV_CLIENT_NETWORK_INSPECTOR'] = podfile_properties['EX_DEV_CLIENT_NETWORK_INSPECTOR']
+
+platform :ios, podfile_properties['ios.deploymentTarget'] || '15.1'
+install! 'cocoapods',
+ :deterministic_uuids => false
+
+prepare_react_native_project!
+
+target 'example' do
+ use_expo_modules!
+
+ if ENV['EXPO_USE_COMMUNITY_AUTOLINKING'] == '1'
+ config_command = ['node', '-e', "process.argv=['', '', 'config'];require('@react-native-community/cli').run()"];
+ else
+ config_command = [
+ 'node',
+ '--no-warnings',
+ '--eval',
+ 'require(require.resolve(\'expo-modules-autolinking\', { paths: [require.resolve(\'expo/package.json\')] }))(process.argv.slice(1))',
+ 'react-native-config',
+ '--json',
+ '--platform',
+ 'ios'
+ ]
+ end
+
+ config = use_native_modules!(config_command)
+
+ use_frameworks! :linkage => podfile_properties['ios.useFrameworks'].to_sym if podfile_properties['ios.useFrameworks']
+ use_frameworks! :linkage => ENV['USE_FRAMEWORKS'].to_sym if ENV['USE_FRAMEWORKS']
+
+ use_react_native!(
+ :path => config[:reactNativePath],
+ :hermes_enabled => podfile_properties['expo.jsEngine'] == nil || podfile_properties['expo.jsEngine'] == 'hermes',
+ # An absolute path to your application root.
+ :app_path => "#{Pod::Config.instance.installation_root}/..",
+ :privacy_file_aggregation_enabled => podfile_properties['apple.privacyManifestAggregationEnabled'] != 'false',
+ )
+
+ post_install do |installer|
+ react_native_post_install(
+ installer,
+ config[:reactNativePath],
+ :mac_catalyst_enabled => false,
+ :ccache_enabled => podfile_properties['apple.ccacheEnabled'] == 'true',
+ )
+
+ # This is necessary for Xcode 14, because it signs resource bundles by default
+ # when building for devices.
+ installer.target_installation_results.pod_target_installation_results
+ .each do |pod_name, target_installation_result|
+ target_installation_result.resource_bundle_targets.each do |resource_bundle_target|
+ resource_bundle_target.build_configurations.each do |config|
+ config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO'
+ end
+ end
+ end
+ end
+end
diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock
new file mode 100644
index 0000000..ddea302
--- /dev/null
+++ b/example/ios/Podfile.lock
@@ -0,0 +1,2114 @@
+PODS:
+ - boost (1.84.0)
+ - DoubleConversion (1.1.6)
+ - EXConstants (17.0.7):
+ - ExpoModulesCore
+ - Expo (52.0.37):
+ - ExpoModulesCore
+ - ExpoAsset (11.0.4):
+ - ExpoModulesCore
+ - ExpoFileSystem (18.0.11):
+ - ExpoModulesCore
+ - ExpoFont (13.0.4):
+ - ExpoModulesCore
+ - ExpoKeepAwake (14.0.3):
+ - ExpoModulesCore
+ - ExpoModulesCore (2.2.2):
+ - DoubleConversion
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - React-jsinspector
+ - React-NativeModulesApple
+ - React-RCTAppDelegate
+ - React-RCTFabric
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - FBLazyVector (0.76.7)
+ - fmt (9.1.0)
+ - glog (0.3.5)
+ - hermes-engine (0.76.7):
+ - hermes-engine/Pre-built (= 0.76.7)
+ - hermes-engine/Pre-built (0.76.7)
+ - RCT-Folly (2024.01.01.00):
+ - boost
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - RCT-Folly/Default (= 2024.01.01.00)
+ - RCT-Folly/Default (2024.01.01.00):
+ - boost
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - RCT-Folly/Fabric (2024.01.01.00):
+ - boost
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - RCTDeprecation (0.76.7)
+ - RCTRequired (0.76.7)
+ - RCTTypeSafety (0.76.7):
+ - FBLazyVector (= 0.76.7)
+ - RCTRequired (= 0.76.7)
+ - React-Core (= 0.76.7)
+ - React (0.76.7):
+ - React-Core (= 0.76.7)
+ - React-Core/DevSupport (= 0.76.7)
+ - React-Core/RCTWebSocket (= 0.76.7)
+ - React-RCTActionSheet (= 0.76.7)
+ - React-RCTAnimation (= 0.76.7)
+ - React-RCTBlob (= 0.76.7)
+ - React-RCTImage (= 0.76.7)
+ - React-RCTLinking (= 0.76.7)
+ - React-RCTNetwork (= 0.76.7)
+ - React-RCTSettings (= 0.76.7)
+ - React-RCTText (= 0.76.7)
+ - React-RCTVibration (= 0.76.7)
+ - React-callinvoker (0.76.7)
+ - React-Core (0.76.7):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTDeprecation
+ - React-Core/Default (= 0.76.7)
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-perflogger
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket (= 0.7.1)
+ - Yoga
+ - React-Core/CoreModulesHeaders (0.76.7):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTDeprecation
+ - React-Core/Default
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-perflogger
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket (= 0.7.1)
+ - Yoga
+ - React-Core/Default (0.76.7):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTDeprecation
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-perflogger
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket (= 0.7.1)
+ - Yoga
+ - React-Core/DevSupport (0.76.7):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTDeprecation
+ - React-Core/Default (= 0.76.7)
+ - React-Core/RCTWebSocket (= 0.76.7)
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-perflogger
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket (= 0.7.1)
+ - Yoga
+ - React-Core/RCTActionSheetHeaders (0.76.7):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTDeprecation
+ - React-Core/Default
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-perflogger
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket (= 0.7.1)
+ - Yoga
+ - React-Core/RCTAnimationHeaders (0.76.7):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTDeprecation
+ - React-Core/Default
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-perflogger
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket (= 0.7.1)
+ - Yoga
+ - React-Core/RCTBlobHeaders (0.76.7):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTDeprecation
+ - React-Core/Default
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-perflogger
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket (= 0.7.1)
+ - Yoga
+ - React-Core/RCTImageHeaders (0.76.7):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTDeprecation
+ - React-Core/Default
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-perflogger
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket (= 0.7.1)
+ - Yoga
+ - React-Core/RCTLinkingHeaders (0.76.7):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTDeprecation
+ - React-Core/Default
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-perflogger
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket (= 0.7.1)
+ - Yoga
+ - React-Core/RCTNetworkHeaders (0.76.7):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTDeprecation
+ - React-Core/Default
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-perflogger
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket (= 0.7.1)
+ - Yoga
+ - React-Core/RCTSettingsHeaders (0.76.7):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTDeprecation
+ - React-Core/Default
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-perflogger
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket (= 0.7.1)
+ - Yoga
+ - React-Core/RCTTextHeaders (0.76.7):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTDeprecation
+ - React-Core/Default
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-perflogger
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket (= 0.7.1)
+ - Yoga
+ - React-Core/RCTVibrationHeaders (0.76.7):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTDeprecation
+ - React-Core/Default
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-perflogger
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket (= 0.7.1)
+ - Yoga
+ - React-Core/RCTWebSocket (0.76.7):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTDeprecation
+ - React-Core/Default (= 0.76.7)
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-perflogger
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket (= 0.7.1)
+ - Yoga
+ - React-CoreModules (0.76.7):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTTypeSafety (= 0.76.7)
+ - React-Core/CoreModulesHeaders (= 0.76.7)
+ - React-jsi (= 0.76.7)
+ - React-jsinspector
+ - React-NativeModulesApple
+ - React-RCTBlob
+ - React-RCTImage (= 0.76.7)
+ - ReactCodegen
+ - ReactCommon
+ - SocketRocket (= 0.7.1)
+ - React-cxxreact (0.76.7):
+ - boost
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - React-callinvoker (= 0.76.7)
+ - React-debug (= 0.76.7)
+ - React-jsi (= 0.76.7)
+ - React-jsinspector
+ - React-logger (= 0.76.7)
+ - React-perflogger (= 0.76.7)
+ - React-runtimeexecutor (= 0.76.7)
+ - React-timing (= 0.76.7)
+ - React-debug (0.76.7)
+ - React-defaultsnativemodule (0.76.7):
+ - DoubleConversion
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-domnativemodule
+ - React-Fabric
+ - React-featureflags
+ - React-featureflagsnativemodule
+ - React-graphics
+ - React-idlecallbacksnativemodule
+ - React-ImageManager
+ - React-microtasksnativemodule
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-domnativemodule (0.76.7):
+ - DoubleConversion
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-FabricComponents
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-Fabric (0.76.7):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric/animations (= 0.76.7)
+ - React-Fabric/attributedstring (= 0.76.7)
+ - React-Fabric/componentregistry (= 0.76.7)
+ - React-Fabric/componentregistrynative (= 0.76.7)
+ - React-Fabric/components (= 0.76.7)
+ - React-Fabric/core (= 0.76.7)
+ - React-Fabric/dom (= 0.76.7)
+ - React-Fabric/imagemanager (= 0.76.7)
+ - React-Fabric/leakchecker (= 0.76.7)
+ - React-Fabric/mounting (= 0.76.7)
+ - React-Fabric/observers (= 0.76.7)
+ - React-Fabric/scheduler (= 0.76.7)
+ - React-Fabric/telemetry (= 0.76.7)
+ - React-Fabric/templateprocessor (= 0.76.7)
+ - React-Fabric/uimanager (= 0.76.7)
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/animations (0.76.7):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/attributedstring (0.76.7):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/componentregistry (0.76.7):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/componentregistrynative (0.76.7):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/components (0.76.7):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric/components/legacyviewmanagerinterop (= 0.76.7)
+ - React-Fabric/components/root (= 0.76.7)
+ - React-Fabric/components/view (= 0.76.7)
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/components/legacyviewmanagerinterop (0.76.7):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/components/root (0.76.7):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/components/view (0.76.7):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-Fabric/core (0.76.7):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/dom (0.76.7):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/imagemanager (0.76.7):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/leakchecker (0.76.7):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/mounting (0.76.7):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/observers (0.76.7):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric/observers/events (= 0.76.7)
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/observers/events (0.76.7):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/scheduler (0.76.7):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric/observers/events
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-performancetimeline
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/telemetry (0.76.7):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/templateprocessor (0.76.7):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/uimanager (0.76.7):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric/uimanager/consistency (= 0.76.7)
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererconsistency
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/uimanager/consistency (0.76.7):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererconsistency
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-FabricComponents (0.76.7):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric
+ - React-FabricComponents/components (= 0.76.7)
+ - React-FabricComponents/textlayoutmanager (= 0.76.7)
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-FabricComponents/components (0.76.7):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric
+ - React-FabricComponents/components/inputaccessory (= 0.76.7)
+ - React-FabricComponents/components/iostextinput (= 0.76.7)
+ - React-FabricComponents/components/modal (= 0.76.7)
+ - React-FabricComponents/components/rncore (= 0.76.7)
+ - React-FabricComponents/components/safeareaview (= 0.76.7)
+ - React-FabricComponents/components/scrollview (= 0.76.7)
+ - React-FabricComponents/components/text (= 0.76.7)
+ - React-FabricComponents/components/textinput (= 0.76.7)
+ - React-FabricComponents/components/unimplementedview (= 0.76.7)
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-FabricComponents/components/inputaccessory (0.76.7):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-FabricComponents/components/iostextinput (0.76.7):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-FabricComponents/components/modal (0.76.7):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-FabricComponents/components/rncore (0.76.7):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-FabricComponents/components/safeareaview (0.76.7):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-FabricComponents/components/scrollview (0.76.7):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-FabricComponents/components/text (0.76.7):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-FabricComponents/components/textinput (0.76.7):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-FabricComponents/components/unimplementedview (0.76.7):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-FabricComponents/textlayoutmanager (0.76.7):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-FabricImage (0.76.7):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired (= 0.76.7)
+ - RCTTypeSafety (= 0.76.7)
+ - React-Fabric
+ - React-graphics
+ - React-ImageManager
+ - React-jsi
+ - React-jsiexecutor (= 0.76.7)
+ - React-logger
+ - React-rendererdebug
+ - React-utils
+ - ReactCommon
+ - Yoga
+ - React-featureflags (0.76.7)
+ - React-featureflagsnativemodule (0.76.7):
+ - DoubleConversion
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-graphics (0.76.7):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - React-jsi
+ - React-jsiexecutor
+ - React-utils
+ - React-hermes (0.76.7):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - React-cxxreact (= 0.76.7)
+ - React-jsi
+ - React-jsiexecutor (= 0.76.7)
+ - React-jsinspector
+ - React-perflogger (= 0.76.7)
+ - React-runtimeexecutor
+ - React-idlecallbacksnativemodule (0.76.7):
+ - DoubleConversion
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-ImageManager (0.76.7):
+ - glog
+ - RCT-Folly/Fabric
+ - React-Core/Default
+ - React-debug
+ - React-Fabric
+ - React-graphics
+ - React-rendererdebug
+ - React-utils
+ - React-jserrorhandler (0.76.7):
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - React-cxxreact
+ - React-debug
+ - React-jsi
+ - React-jsi (0.76.7):
+ - boost
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - React-jsiexecutor (0.76.7):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - React-cxxreact (= 0.76.7)
+ - React-jsi (= 0.76.7)
+ - React-jsinspector
+ - React-perflogger (= 0.76.7)
+ - React-jsinspector (0.76.7):
+ - DoubleConversion
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - React-featureflags
+ - React-jsi
+ - React-perflogger (= 0.76.7)
+ - React-runtimeexecutor (= 0.76.7)
+ - React-jsitracing (0.76.7):
+ - React-jsi
+ - React-logger (0.76.7):
+ - glog
+ - React-Mapbuffer (0.76.7):
+ - glog
+ - React-debug
+ - React-microtasksnativemodule (0.76.7):
+ - DoubleConversion
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - react-native-keyboard-controller (1.16.7):
+ - DoubleConversion
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - react-native-mmkv (3.2.0):
+ - DoubleConversion
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - react-native-safe-area-context (4.14.1):
+ - DoubleConversion
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - react-native-safe-area-context/common (= 4.14.1)
+ - react-native-safe-area-context/fabric (= 4.14.1)
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - react-native-safe-area-context/common (4.14.1):
+ - DoubleConversion
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - react-native-safe-area-context/fabric (4.14.1):
+ - DoubleConversion
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - react-native-safe-area-context/common
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-nativeconfig (0.76.7)
+ - React-NativeModulesApple (0.76.7):
+ - glog
+ - hermes-engine
+ - React-callinvoker
+ - React-Core
+ - React-cxxreact
+ - React-jsi
+ - React-jsinspector
+ - React-runtimeexecutor
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - React-perflogger (0.76.7):
+ - DoubleConversion
+ - RCT-Folly (= 2024.01.01.00)
+ - React-performancetimeline (0.76.7):
+ - RCT-Folly (= 2024.01.01.00)
+ - React-cxxreact
+ - React-timing
+ - React-RCTActionSheet (0.76.7):
+ - React-Core/RCTActionSheetHeaders (= 0.76.7)
+ - React-RCTAnimation (0.76.7):
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTTypeSafety
+ - React-Core/RCTAnimationHeaders
+ - React-jsi
+ - React-NativeModulesApple
+ - ReactCodegen
+ - ReactCommon
+ - React-RCTAppDelegate (0.76.7):
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-CoreModules
+ - React-debug
+ - React-defaultsnativemodule
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-hermes
+ - React-nativeconfig
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-RCTImage
+ - React-RCTNetwork
+ - React-rendererdebug
+ - React-RuntimeApple
+ - React-RuntimeCore
+ - React-RuntimeHermes
+ - React-runtimescheduler
+ - React-utils
+ - ReactCodegen
+ - ReactCommon
+ - React-RCTBlob (0.76.7):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - React-Core/RCTBlobHeaders
+ - React-Core/RCTWebSocket
+ - React-jsi
+ - React-jsinspector
+ - React-NativeModulesApple
+ - React-RCTNetwork
+ - ReactCodegen
+ - ReactCommon
+ - React-RCTFabric (0.76.7):
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-FabricComponents
+ - React-FabricImage
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - React-jsi
+ - React-jsinspector
+ - React-nativeconfig
+ - React-performancetimeline
+ - React-RCTImage
+ - React-RCTText
+ - React-rendererconsistency
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - Yoga
+ - React-RCTImage (0.76.7):
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTTypeSafety
+ - React-Core/RCTImageHeaders
+ - React-jsi
+ - React-NativeModulesApple
+ - React-RCTNetwork
+ - ReactCodegen
+ - ReactCommon
+ - React-RCTLinking (0.76.7):
+ - React-Core/RCTLinkingHeaders (= 0.76.7)
+ - React-jsi (= 0.76.7)
+ - React-NativeModulesApple
+ - ReactCodegen
+ - ReactCommon
+ - ReactCommon/turbomodule/core (= 0.76.7)
+ - React-RCTNetwork (0.76.7):
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTTypeSafety
+ - React-Core/RCTNetworkHeaders
+ - React-jsi
+ - React-NativeModulesApple
+ - ReactCodegen
+ - ReactCommon
+ - React-RCTSettings (0.76.7):
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTTypeSafety
+ - React-Core/RCTSettingsHeaders
+ - React-jsi
+ - React-NativeModulesApple
+ - ReactCodegen
+ - ReactCommon
+ - React-RCTText (0.76.7):
+ - React-Core/RCTTextHeaders (= 0.76.7)
+ - Yoga
+ - React-RCTVibration (0.76.7):
+ - RCT-Folly (= 2024.01.01.00)
+ - React-Core/RCTVibrationHeaders
+ - React-jsi
+ - React-NativeModulesApple
+ - ReactCodegen
+ - ReactCommon
+ - React-rendererconsistency (0.76.7)
+ - React-rendererdebug (0.76.7):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - RCT-Folly (= 2024.01.01.00)
+ - React-debug
+ - React-rncore (0.76.7)
+ - React-RuntimeApple (0.76.7):
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - React-callinvoker
+ - React-Core/Default
+ - React-CoreModules
+ - React-cxxreact
+ - React-jserrorhandler
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-Mapbuffer
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-RuntimeCore
+ - React-runtimeexecutor
+ - React-RuntimeHermes
+ - React-runtimescheduler
+ - React-utils
+ - React-RuntimeCore (0.76.7):
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - React-cxxreact
+ - React-featureflags
+ - React-jserrorhandler
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-performancetimeline
+ - React-runtimeexecutor
+ - React-runtimescheduler
+ - React-utils
+ - React-runtimeexecutor (0.76.7):
+ - React-jsi (= 0.76.7)
+ - React-RuntimeHermes (0.76.7):
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsinspector
+ - React-jsitracing
+ - React-nativeconfig
+ - React-RuntimeCore
+ - React-utils
+ - React-runtimescheduler (0.76.7):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - React-callinvoker
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-jsi
+ - React-performancetimeline
+ - React-rendererconsistency
+ - React-rendererdebug
+ - React-runtimeexecutor
+ - React-timing
+ - React-utils
+ - React-timing (0.76.7)
+ - React-utils (0.76.7):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - React-debug
+ - React-jsi (= 0.76.7)
+ - ReactCodegen (0.76.7):
+ - DoubleConversion
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-FabricImage
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-NativeModulesApple
+ - React-rendererdebug
+ - React-utils
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - ReactCommon (0.76.7):
+ - ReactCommon/turbomodule (= 0.76.7)
+ - ReactCommon/turbomodule (0.76.7):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - React-callinvoker (= 0.76.7)
+ - React-cxxreact (= 0.76.7)
+ - React-jsi (= 0.76.7)
+ - React-logger (= 0.76.7)
+ - React-perflogger (= 0.76.7)
+ - ReactCommon/turbomodule/bridging (= 0.76.7)
+ - ReactCommon/turbomodule/core (= 0.76.7)
+ - ReactCommon/turbomodule/bridging (0.76.7):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - React-callinvoker (= 0.76.7)
+ - React-cxxreact (= 0.76.7)
+ - React-jsi (= 0.76.7)
+ - React-logger (= 0.76.7)
+ - React-perflogger (= 0.76.7)
+ - ReactCommon/turbomodule/core (0.76.7):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - React-callinvoker (= 0.76.7)
+ - React-cxxreact (= 0.76.7)
+ - React-debug (= 0.76.7)
+ - React-featureflags (= 0.76.7)
+ - React-jsi (= 0.76.7)
+ - React-logger (= 0.76.7)
+ - React-perflogger (= 0.76.7)
+ - React-utils (= 0.76.7)
+ - RNGestureHandler (2.24.0):
+ - DoubleConversion
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - RNReanimated (3.17.1):
+ - DoubleConversion
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-hermes
+ - React-ImageManager
+ - React-jsi
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - RNReanimated/reanimated (= 3.17.1)
+ - RNReanimated/worklets (= 3.17.1)
+ - Yoga
+ - RNReanimated/reanimated (3.17.1):
+ - DoubleConversion
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-hermes
+ - React-ImageManager
+ - React-jsi
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - RNReanimated/reanimated/apple (= 3.17.1)
+ - Yoga
+ - RNReanimated/reanimated/apple (3.17.1):
+ - DoubleConversion
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-hermes
+ - React-ImageManager
+ - React-jsi
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - RNReanimated/worklets (3.17.1):
+ - DoubleConversion
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-hermes
+ - React-ImageManager
+ - React-jsi
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - RNReanimated/worklets/apple (= 3.17.1)
+ - Yoga
+ - RNReanimated/worklets/apple (3.17.1):
+ - DoubleConversion
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-hermes
+ - React-ImageManager
+ - React-jsi
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - SocketRocket (0.7.1)
+ - Yoga (0.0.0)
+
+DEPENDENCIES:
+ - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`)
+ - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)
+ - EXConstants (from `../node_modules/expo-constants/ios`)
+ - Expo (from `../node_modules/expo`)
+ - ExpoAsset (from `../node_modules/expo-asset/ios`)
+ - ExpoFileSystem (from `../node_modules/expo-file-system/ios`)
+ - ExpoFont (from `../node_modules/expo-font/ios`)
+ - ExpoKeepAwake (from `../node_modules/expo-keep-awake/ios`)
+ - ExpoModulesCore (from `../node_modules/expo-modules-core`)
+ - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)
+ - fmt (from `../node_modules/react-native/third-party-podspecs/fmt.podspec`)
+ - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`)
+ - hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`)
+ - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)
+ - RCT-Folly/Fabric (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)
+ - RCTDeprecation (from `../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation`)
+ - RCTRequired (from `../node_modules/react-native/Libraries/Required`)
+ - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`)
+ - React (from `../node_modules/react-native/`)
+ - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`)
+ - React-Core (from `../node_modules/react-native/`)
+ - React-Core/RCTWebSocket (from `../node_modules/react-native/`)
+ - React-CoreModules (from `../node_modules/react-native/React/CoreModules`)
+ - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`)
+ - React-debug (from `../node_modules/react-native/ReactCommon/react/debug`)
+ - React-defaultsnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/defaults`)
+ - React-domnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/dom`)
+ - React-Fabric (from `../node_modules/react-native/ReactCommon`)
+ - React-FabricComponents (from `../node_modules/react-native/ReactCommon`)
+ - React-FabricImage (from `../node_modules/react-native/ReactCommon`)
+ - React-featureflags (from `../node_modules/react-native/ReactCommon/react/featureflags`)
+ - React-featureflagsnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/featureflags`)
+ - React-graphics (from `../node_modules/react-native/ReactCommon/react/renderer/graphics`)
+ - React-hermes (from `../node_modules/react-native/ReactCommon/hermes`)
+ - React-idlecallbacksnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/idlecallbacks`)
+ - React-ImageManager (from `../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios`)
+ - React-jserrorhandler (from `../node_modules/react-native/ReactCommon/jserrorhandler`)
+ - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`)
+ - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`)
+ - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector-modern`)
+ - React-jsitracing (from `../node_modules/react-native/ReactCommon/hermes/executor/`)
+ - React-logger (from `../node_modules/react-native/ReactCommon/logger`)
+ - React-Mapbuffer (from `../node_modules/react-native/ReactCommon`)
+ - React-microtasksnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/microtasks`)
+ - react-native-keyboard-controller (from `../node_modules/react-native-keyboard-controller`)
+ - react-native-mmkv (from `../node_modules/react-native-mmkv`)
+ - react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`)
+ - React-nativeconfig (from `../node_modules/react-native/ReactCommon`)
+ - React-NativeModulesApple (from `../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`)
+ - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`)
+ - React-performancetimeline (from `../node_modules/react-native/ReactCommon/react/performance/timeline`)
+ - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`)
+ - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`)
+ - React-RCTAppDelegate (from `../node_modules/react-native/Libraries/AppDelegate`)
+ - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`)
+ - React-RCTFabric (from `../node_modules/react-native/React`)
+ - React-RCTImage (from `../node_modules/react-native/Libraries/Image`)
+ - React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`)
+ - React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`)
+ - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`)
+ - React-RCTText (from `../node_modules/react-native/Libraries/Text`)
+ - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`)
+ - React-rendererconsistency (from `../node_modules/react-native/ReactCommon/react/renderer/consistency`)
+ - React-rendererdebug (from `../node_modules/react-native/ReactCommon/react/renderer/debug`)
+ - React-rncore (from `../node_modules/react-native/ReactCommon`)
+ - React-RuntimeApple (from `../node_modules/react-native/ReactCommon/react/runtime/platform/ios`)
+ - React-RuntimeCore (from `../node_modules/react-native/ReactCommon/react/runtime`)
+ - React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`)
+ - React-RuntimeHermes (from `../node_modules/react-native/ReactCommon/react/runtime`)
+ - React-runtimescheduler (from `../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler`)
+ - React-timing (from `../node_modules/react-native/ReactCommon/react/timing`)
+ - React-utils (from `../node_modules/react-native/ReactCommon/react/utils`)
+ - ReactCodegen (from `build/generated/ios`)
+ - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`)
+ - RNGestureHandler (from `../node_modules/react-native-gesture-handler`)
+ - RNReanimated (from `../node_modules/react-native-reanimated`)
+ - Yoga (from `../node_modules/react-native/ReactCommon/yoga`)
+
+SPEC REPOS:
+ trunk:
+ - SocketRocket
+
+EXTERNAL SOURCES:
+ boost:
+ :podspec: "../node_modules/react-native/third-party-podspecs/boost.podspec"
+ DoubleConversion:
+ :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec"
+ EXConstants:
+ :path: "../node_modules/expo-constants/ios"
+ Expo:
+ :path: "../node_modules/expo"
+ ExpoAsset:
+ :path: "../node_modules/expo-asset/ios"
+ ExpoFileSystem:
+ :path: "../node_modules/expo-file-system/ios"
+ ExpoFont:
+ :path: "../node_modules/expo-font/ios"
+ ExpoKeepAwake:
+ :path: "../node_modules/expo-keep-awake/ios"
+ ExpoModulesCore:
+ :path: "../node_modules/expo-modules-core"
+ FBLazyVector:
+ :path: "../node_modules/react-native/Libraries/FBLazyVector"
+ fmt:
+ :podspec: "../node_modules/react-native/third-party-podspecs/fmt.podspec"
+ glog:
+ :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec"
+ hermes-engine:
+ :podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec"
+ :tag: hermes-2024-11-12-RNv0.76.2-5b4aa20c719830dcf5684832b89a6edb95ac3d64
+ RCT-Folly:
+ :podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec"
+ RCTDeprecation:
+ :path: "../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation"
+ RCTRequired:
+ :path: "../node_modules/react-native/Libraries/Required"
+ RCTTypeSafety:
+ :path: "../node_modules/react-native/Libraries/TypeSafety"
+ React:
+ :path: "../node_modules/react-native/"
+ React-callinvoker:
+ :path: "../node_modules/react-native/ReactCommon/callinvoker"
+ React-Core:
+ :path: "../node_modules/react-native/"
+ React-CoreModules:
+ :path: "../node_modules/react-native/React/CoreModules"
+ React-cxxreact:
+ :path: "../node_modules/react-native/ReactCommon/cxxreact"
+ React-debug:
+ :path: "../node_modules/react-native/ReactCommon/react/debug"
+ React-defaultsnativemodule:
+ :path: "../node_modules/react-native/ReactCommon/react/nativemodule/defaults"
+ React-domnativemodule:
+ :path: "../node_modules/react-native/ReactCommon/react/nativemodule/dom"
+ React-Fabric:
+ :path: "../node_modules/react-native/ReactCommon"
+ React-FabricComponents:
+ :path: "../node_modules/react-native/ReactCommon"
+ React-FabricImage:
+ :path: "../node_modules/react-native/ReactCommon"
+ React-featureflags:
+ :path: "../node_modules/react-native/ReactCommon/react/featureflags"
+ React-featureflagsnativemodule:
+ :path: "../node_modules/react-native/ReactCommon/react/nativemodule/featureflags"
+ React-graphics:
+ :path: "../node_modules/react-native/ReactCommon/react/renderer/graphics"
+ React-hermes:
+ :path: "../node_modules/react-native/ReactCommon/hermes"
+ React-idlecallbacksnativemodule:
+ :path: "../node_modules/react-native/ReactCommon/react/nativemodule/idlecallbacks"
+ React-ImageManager:
+ :path: "../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios"
+ React-jserrorhandler:
+ :path: "../node_modules/react-native/ReactCommon/jserrorhandler"
+ React-jsi:
+ :path: "../node_modules/react-native/ReactCommon/jsi"
+ React-jsiexecutor:
+ :path: "../node_modules/react-native/ReactCommon/jsiexecutor"
+ React-jsinspector:
+ :path: "../node_modules/react-native/ReactCommon/jsinspector-modern"
+ React-jsitracing:
+ :path: "../node_modules/react-native/ReactCommon/hermes/executor/"
+ React-logger:
+ :path: "../node_modules/react-native/ReactCommon/logger"
+ React-Mapbuffer:
+ :path: "../node_modules/react-native/ReactCommon"
+ React-microtasksnativemodule:
+ :path: "../node_modules/react-native/ReactCommon/react/nativemodule/microtasks"
+ react-native-keyboard-controller:
+ :path: "../node_modules/react-native-keyboard-controller"
+ react-native-mmkv:
+ :path: "../node_modules/react-native-mmkv"
+ react-native-safe-area-context:
+ :path: "../node_modules/react-native-safe-area-context"
+ React-nativeconfig:
+ :path: "../node_modules/react-native/ReactCommon"
+ React-NativeModulesApple:
+ :path: "../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios"
+ React-perflogger:
+ :path: "../node_modules/react-native/ReactCommon/reactperflogger"
+ React-performancetimeline:
+ :path: "../node_modules/react-native/ReactCommon/react/performance/timeline"
+ React-RCTActionSheet:
+ :path: "../node_modules/react-native/Libraries/ActionSheetIOS"
+ React-RCTAnimation:
+ :path: "../node_modules/react-native/Libraries/NativeAnimation"
+ React-RCTAppDelegate:
+ :path: "../node_modules/react-native/Libraries/AppDelegate"
+ React-RCTBlob:
+ :path: "../node_modules/react-native/Libraries/Blob"
+ React-RCTFabric:
+ :path: "../node_modules/react-native/React"
+ React-RCTImage:
+ :path: "../node_modules/react-native/Libraries/Image"
+ React-RCTLinking:
+ :path: "../node_modules/react-native/Libraries/LinkingIOS"
+ React-RCTNetwork:
+ :path: "../node_modules/react-native/Libraries/Network"
+ React-RCTSettings:
+ :path: "../node_modules/react-native/Libraries/Settings"
+ React-RCTText:
+ :path: "../node_modules/react-native/Libraries/Text"
+ React-RCTVibration:
+ :path: "../node_modules/react-native/Libraries/Vibration"
+ React-rendererconsistency:
+ :path: "../node_modules/react-native/ReactCommon/react/renderer/consistency"
+ React-rendererdebug:
+ :path: "../node_modules/react-native/ReactCommon/react/renderer/debug"
+ React-rncore:
+ :path: "../node_modules/react-native/ReactCommon"
+ React-RuntimeApple:
+ :path: "../node_modules/react-native/ReactCommon/react/runtime/platform/ios"
+ React-RuntimeCore:
+ :path: "../node_modules/react-native/ReactCommon/react/runtime"
+ React-runtimeexecutor:
+ :path: "../node_modules/react-native/ReactCommon/runtimeexecutor"
+ React-RuntimeHermes:
+ :path: "../node_modules/react-native/ReactCommon/react/runtime"
+ React-runtimescheduler:
+ :path: "../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler"
+ React-timing:
+ :path: "../node_modules/react-native/ReactCommon/react/timing"
+ React-utils:
+ :path: "../node_modules/react-native/ReactCommon/react/utils"
+ ReactCodegen:
+ :path: build/generated/ios
+ ReactCommon:
+ :path: "../node_modules/react-native/ReactCommon"
+ RNGestureHandler:
+ :path: "../node_modules/react-native-gesture-handler"
+ RNReanimated:
+ :path: "../node_modules/react-native-reanimated"
+ Yoga:
+ :path: "../node_modules/react-native/ReactCommon/yoga"
+
+SPEC CHECKSUMS:
+ boost: 1dca942403ed9342f98334bf4c3621f011aa7946
+ DoubleConversion: f16ae600a246532c4020132d54af21d0ddb2a385
+ EXConstants: 30c43b9ca8391c31bab9cc45c97f16eddcf11042
+ Expo: 63515728b6f238842dc95702eb0fb385f00d7c5a
+ ExpoAsset: 4033893dfb333b444bf45e951351254137b658d5
+ ExpoFileSystem: 2d804c73034c0d65eb2a640e0a77627033b69edc
+ ExpoFont: f354e926f8feae5e831ec8087f36652b44a0b188
+ ExpoKeepAwake: b0171a73665bfcefcfcc311742a72a956e6aa680
+ ExpoModulesCore: 7f5e59799b89e5fad1d7cc6070744c1003ca320f
+ FBLazyVector: ca8044c9df513671c85167838b4188791b6f37e1
+ fmt: 10c6e61f4be25dc963c36bd73fc7b1705fe975be
+ glog: 08b301085f15bcbb6ff8632a8ebaf239aae04e6a
+ hermes-engine: eb4a80f6bf578536c58a44198ec93a30f6e69218
+ RCT-Folly: 84578c8756030547307e4572ab1947de1685c599
+ RCTDeprecation: 7691283dd69fed46f6653d376de6fa83aaad774c
+ RCTRequired: eac044a04629288f272ee6706e31f81f3a2b4bfe
+ RCTTypeSafety: cfe499e127eda6dd46e5080e12d80d0bfe667228
+ React: 1f3737a983fdd26fb3d388ddbca41a26950fe929
+ React-callinvoker: 5c15ac628eab5468fe0b4dc453495f4742761f00
+ React-Core: e467bf49f10da6fe92d915d2311cd0fd9bfbe052
+ React-CoreModules: 0299b3c0782edd3b37c8445ba07bf18ceb73812d
+ React-cxxreact: 54e253030b3b82b05575f19a1fb0e25c049f30ba
+ React-debug: 2086b55a5e55fb0abae58c42b8f280ebd708c956
+ React-defaultsnativemodule: f80f41ea8c1216917fd224b553291360e0e6a175
+ React-domnativemodule: b14aaaf4afbaa7e1dbc86ad78cbcc71eb59f1faf
+ React-Fabric: 409ce8a065374d737bdbc0fce506dcdda8f51e88
+ React-FabricComponents: bd5faafffd07e56cf217d5417e80ec29348c19d9
+ React-FabricImage: 04d01f3ecfed6121733613a5c794f684e81cb3fb
+ React-featureflags: 4503c901bf16b267b689e8a1aed24e951e0b091b
+ React-featureflagsnativemodule: 79c980bfc96bcdcc9bd793d49fe75bbfb0e417ad
+ React-graphics: c2febdc940fb3ebdaef082d940b70254ef49c7a1
+ React-hermes: 91baa15c07e76b0768d6e10f4dac1c080a47eef4
+ React-idlecallbacksnativemodule: 5daef402290b91e54a884101b032186c03fa1827
+ React-ImageManager: b258354a48a92168edc41fdc0c14a4310cc4d576
+ React-jserrorhandler: 45d858315f6474dad3912aadb3f6595004dc5f4f
+ React-jsi: 87fa67556d7a82125bc77930bf973717fb726d14
+ React-jsiexecutor: 3a92052dd96cff1cd693fa3ef8d9738b1d05372a
+ React-jsinspector: 05aff7dd91b0685d351cdeb8c151c9f9ec97accd
+ React-jsitracing: 419fa21e8543f5a938b11b5a0bfc257b00dac7a5
+ React-logger: 5cad0c76d056809523289e589309012215a393b5
+ React-Mapbuffer: a381120aea722d2244d4e4b663a10d4c3b2d4e51
+ React-microtasksnativemodule: d9b946675010659cddd1c7611c074216579c8ad3
+ react-native-keyboard-controller: e0a892155c8e9ba81f46d46819da645210610809
+ react-native-mmkv: b4af3744580f08e1ffc7761103b408d313b2f772
+ react-native-safe-area-context: 2985d96d364676d1e2e2d5e77f64860874e31e13
+ React-nativeconfig: 67fa7a63ea288cb5b1d0dd2deaf240405fec164f
+ React-NativeModulesApple: 34b7a4d7441a4ee78d18109ff107c1ccf7c074a9
+ React-perflogger: d1149037ac466ad2141d4ae541ca16cb73b2343b
+ React-performancetimeline: 6b46b0a17727a3ec22ec4777d156d6b6efc4f8eb
+ React-RCTActionSheet: ad84d5a0bd1ad1782f0b78b280c6f329ad79a53a
+ React-RCTAnimation: 64ed42bb43b33b0d861126f83048429606390903
+ React-RCTAppDelegate: de8150cd7e748bd7a98ffc05c88f21c668407ab4
+ React-RCTBlob: e74dfdbbfcd46d9d1eec3b3a0f045e655e3f7861
+ React-RCTFabric: bc0327e719fb12f969ac0e17485ba274b9c2c335
+ React-RCTImage: 1b6d8ad60f74a3cec4ee52e0ca55f1773afd03f4
+ React-RCTLinking: 88b2384d876346fbb16839a60c1d20830b2e95fe
+ React-RCTNetwork: 88aa473814e796d3a7bc6a0b51e7ae5749bdc243
+ React-RCTSettings: 0d73a1846aef87ef07c2026c186ea0d80602a130
+ React-RCTText: bfdb776f849156f895909ee999b4b5f2f9cf9a0b
+ React-RCTVibration: 81c8bbcc841ce5a7ae6e1bd2ec949b30e58d1fcf
+ React-rendererconsistency: 65d4692825fda4d9516924b68c29d0f28da3158c
+ React-rendererdebug: ab3696594d3506acc22ecea4dd68ac258c529c2d
+ React-rncore: 6aca111c05a48c58189a005cb10a7b52780738dc
+ React-RuntimeApple: 5245e8cf30e417fe3e798ed991b938679656ab8f
+ React-RuntimeCore: c79d23b31aded614f4afeaac53f4da37c792c362
+ React-runtimeexecutor: 732038d7c356ba74132f1d16253a410621d3c2c1
+ React-RuntimeHermes: b3b1d7fc42d74141a71ae23fedbc4e07e5a7fbd2
+ React-runtimescheduler: 6e804311c6c9512ffe7f4b68d012767b225c48a1
+ React-timing: c2915214b94a62bdf77d2965c31f76bc25b362a5
+ React-utils: 0342746d2cf989cf5e0d1b84c98cfa152edbdf3f
+ ReactCodegen: e1c019dc68733dd2c5d3b263b4a6dc72002c0045
+ ReactCommon: 81e0744ee33adfd6d586141b927024f488bc49ea
+ RNGestureHandler: 6aedf747478f64fbeddb3ad5d5d0dfdf2361d136
+ RNReanimated: d3b6cc70edd33d2d204c6fed3b8d16c6bf6a091c
+ SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748
+ Yoga: 90d80701b27946c4b23461c00a7207f300a6ff71
+
+PODFILE CHECKSUM: 7111cb0109850378b078b31993e62f5f22d4dcde
+
+COCOAPODS: 1.16.2
diff --git a/example/ios/Podfile.properties.json b/example/ios/Podfile.properties.json
new file mode 100644
index 0000000..417e2e5
--- /dev/null
+++ b/example/ios/Podfile.properties.json
@@ -0,0 +1,5 @@
+{
+ "expo.jsEngine": "hermes",
+ "EX_DEV_CLIENT_NETWORK_INSPECTOR": "true",
+ "newArchEnabled": "true"
+}
diff --git a/example/ios/example.xcodeproj/project.pbxproj b/example/ios/example.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..836060b
--- /dev/null
+++ b/example/ios/example.xcodeproj/project.pbxproj
@@ -0,0 +1,538 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 46;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; };
+ 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
+ 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
+ 3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */; };
+ 5E248882432A6D3D483DDE19 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 0E29A1E601811EC833B73FF7 /* PrivacyInfo.xcprivacy */; };
+ 96905EF65AED1B983A6B3ABC /* libPods-example.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 58EEBF8E8E6FB1BC6CAF49B5 /* libPods-example.a */; };
+ B18059E884C0ABDD17F3DC3D /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAC715A2D49A985799AEE119 /* ExpoModulesProvider.swift */; };
+ BB2F792D24A3F905000567C9 /* Expo.plist in Resources */ = {isa = PBXBuildFile; fileRef = BB2F792C24A3F905000567C9 /* Expo.plist */; };
+ F9F8C85DE44146D3A2AD1945 /* noop-file.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E6FFB1FE8DD4B9DB8150375 /* noop-file.swift */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ 0E29A1E601811EC833B73FF7 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = example/PrivacyInfo.xcprivacy; sourceTree = ""; };
+ 13B07F961A680F5B00A75B9A /* example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = example.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = example/AppDelegate.h; sourceTree = ""; };
+ 13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = example/AppDelegate.mm; sourceTree = ""; };
+ 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = example/Images.xcassets; sourceTree = ""; };
+ 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = example/Info.plist; sourceTree = ""; };
+ 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = example/main.m; sourceTree = ""; };
+ 1E6FFB1FE8DD4B9DB8150375 /* noop-file.swift */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.swift; name = "noop-file.swift"; path = "example/noop-file.swift"; sourceTree = ""; };
+ 58EEBF8E8E6FB1BC6CAF49B5 /* libPods-example.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-example.a"; sourceTree = BUILT_PRODUCTS_DIR; };
+ 6C2E3173556A471DD304B334 /* Pods-example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-example.debug.xcconfig"; path = "Target Support Files/Pods-example/Pods-example.debug.xcconfig"; sourceTree = ""; };
+ 7A4D352CD337FB3A3BF06240 /* Pods-example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-example.release.xcconfig"; path = "Target Support Files/Pods-example/Pods-example.release.xcconfig"; sourceTree = ""; };
+ AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = SplashScreen.storyboard; path = example/SplashScreen.storyboard; sourceTree = ""; };
+ BB2F792C24A3F905000567C9 /* Expo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Expo.plist; sourceTree = ""; };
+ ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
+ FAC715A2D49A985799AEE119 /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-example/ExpoModulesProvider.swift"; sourceTree = ""; };
+ FB52A993DFCA4F6B9942E146 /* example-Bridging-Header.h */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.h; name = "example-Bridging-Header.h"; path = "example/example-Bridging-Header.h"; sourceTree = ""; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 13B07F8C1A680F5B00A75B9A /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 96905EF65AED1B983A6B3ABC /* libPods-example.a in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 13B07FAE1A68108700A75B9A /* example */ = {
+ isa = PBXGroup;
+ children = (
+ BB2F792B24A3F905000567C9 /* Supporting */,
+ 13B07FAF1A68108700A75B9A /* AppDelegate.h */,
+ 13B07FB01A68108700A75B9A /* AppDelegate.mm */,
+ 13B07FB51A68108700A75B9A /* Images.xcassets */,
+ 13B07FB61A68108700A75B9A /* Info.plist */,
+ 13B07FB71A68108700A75B9A /* main.m */,
+ AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */,
+ 1E6FFB1FE8DD4B9DB8150375 /* noop-file.swift */,
+ FB52A993DFCA4F6B9942E146 /* example-Bridging-Header.h */,
+ 0E29A1E601811EC833B73FF7 /* PrivacyInfo.xcprivacy */,
+ );
+ name = example;
+ sourceTree = "";
+ };
+ 2D16E6871FA4F8E400B85C8A /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ ED297162215061F000B7C4FE /* JavaScriptCore.framework */,
+ 58EEBF8E8E6FB1BC6CAF49B5 /* libPods-example.a */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+ 832341AE1AAA6A7D00B99B32 /* Libraries */ = {
+ isa = PBXGroup;
+ children = (
+ );
+ name = Libraries;
+ sourceTree = "";
+ };
+ 83CBB9F61A601CBA00E9B192 = {
+ isa = PBXGroup;
+ children = (
+ 13B07FAE1A68108700A75B9A /* example */,
+ 832341AE1AAA6A7D00B99B32 /* Libraries */,
+ 83CBBA001A601CBA00E9B192 /* Products */,
+ 2D16E6871FA4F8E400B85C8A /* Frameworks */,
+ D65327D7A22EEC0BE12398D9 /* Pods */,
+ D7E4C46ADA2E9064B798F356 /* ExpoModulesProviders */,
+ );
+ indentWidth = 2;
+ sourceTree = "";
+ tabWidth = 2;
+ usesTabs = 0;
+ };
+ 83CBBA001A601CBA00E9B192 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 13B07F961A680F5B00A75B9A /* example.app */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ 92DBD88DE9BF7D494EA9DA96 /* example */ = {
+ isa = PBXGroup;
+ children = (
+ FAC715A2D49A985799AEE119 /* ExpoModulesProvider.swift */,
+ );
+ name = example;
+ sourceTree = "";
+ };
+ BB2F792B24A3F905000567C9 /* Supporting */ = {
+ isa = PBXGroup;
+ children = (
+ BB2F792C24A3F905000567C9 /* Expo.plist */,
+ );
+ name = Supporting;
+ path = example/Supporting;
+ sourceTree = "";
+ };
+ D65327D7A22EEC0BE12398D9 /* Pods */ = {
+ isa = PBXGroup;
+ children = (
+ 6C2E3173556A471DD304B334 /* Pods-example.debug.xcconfig */,
+ 7A4D352CD337FB3A3BF06240 /* Pods-example.release.xcconfig */,
+ );
+ path = Pods;
+ sourceTree = "";
+ };
+ D7E4C46ADA2E9064B798F356 /* ExpoModulesProviders */ = {
+ isa = PBXGroup;
+ children = (
+ 92DBD88DE9BF7D494EA9DA96 /* example */,
+ );
+ name = ExpoModulesProviders;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 13B07F861A680F5B00A75B9A /* example */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "example" */;
+ buildPhases = (
+ 08A4A3CD28434E44B6B9DE2E /* [CP] Check Pods Manifest.lock */,
+ 172243D01EBC0CE70EFF102A /* [Expo] Configure project */,
+ 13B07F871A680F5B00A75B9A /* Sources */,
+ 13B07F8C1A680F5B00A75B9A /* Frameworks */,
+ 13B07F8E1A680F5B00A75B9A /* Resources */,
+ 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
+ 800E24972A6A228C8D4807E9 /* [CP] Copy Pods Resources */,
+ 8B5BD00FA25DDE50D4B2171D /* [CP] Embed Pods Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = example;
+ productName = example;
+ productReference = 13B07F961A680F5B00A75B9A /* example.app */;
+ productType = "com.apple.product-type.application";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 83CBB9F71A601CBA00E9B192 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastUpgradeCheck = 1130;
+ TargetAttributes = {
+ 13B07F861A680F5B00A75B9A = {
+ LastSwiftMigration = 1250;
+ };
+ };
+ };
+ buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "example" */;
+ compatibilityVersion = "Xcode 3.2";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = 83CBB9F61A601CBA00E9B192;
+ productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 13B07F861A680F5B00A75B9A /* example */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 13B07F8E1A680F5B00A75B9A /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ BB2F792D24A3F905000567C9 /* Expo.plist in Resources */,
+ 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
+ 3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */,
+ 5E248882432A6D3D483DDE19 /* PrivacyInfo.xcprivacy in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+ 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = {
+ isa = PBXShellScriptBuildPhase;
+ alwaysOutOfDate = 1;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "Bundle React Native code and images";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "if [[ -f \"$PODS_ROOT/../.xcode.env\" ]]; then\n source \"$PODS_ROOT/../.xcode.env\"\nfi\nif [[ -f \"$PODS_ROOT/../.xcode.env.local\" ]]; then\n source \"$PODS_ROOT/../.xcode.env.local\"\nfi\n\n# The project root by default is one level up from the ios directory\nexport PROJECT_ROOT=\"$PROJECT_DIR\"/..\n\nif [[ \"$CONFIGURATION\" = *Debug* ]]; then\n export SKIP_BUNDLING=1\nfi\nif [[ -z \"$ENTRY_FILE\" ]]; then\n # Set the entry JS file using the bundler's entry resolution.\n export ENTRY_FILE=\"$(\"$NODE_BINARY\" -e \"require('expo/scripts/resolveAppEntry')\" \"$PROJECT_ROOT\" ios absolute | tail -n 1)\"\nfi\n\nif [[ -z \"$CLI_PATH\" ]]; then\n # Use Expo CLI\n export CLI_PATH=\"$(\"$NODE_BINARY\" --print \"require.resolve('@expo/cli', { paths: [require.resolve('expo/package.json')] })\")\"\nfi\nif [[ -z \"$BUNDLE_COMMAND\" ]]; then\n # Default Expo CLI command for bundling\n export BUNDLE_COMMAND=\"export:embed\"\nfi\n\n# Source .xcode.env.updates if it exists to allow\n# SKIP_BUNDLING to be unset if needed\nif [[ -f \"$PODS_ROOT/../.xcode.env.updates\" ]]; then\n source \"$PODS_ROOT/../.xcode.env.updates\"\nfi\n# Source local changes to allow overrides\n# if needed\nif [[ -f \"$PODS_ROOT/../.xcode.env.local\" ]]; then\n source \"$PODS_ROOT/../.xcode.env.local\"\nfi\n\n`\"$NODE_BINARY\" --print \"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/react-native-xcode.sh'\"`\n\n";
+ };
+ 08A4A3CD28434E44B6B9DE2E /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-example-checkManifestLockResult.txt",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
+ };
+ 172243D01EBC0CE70EFF102A /* [Expo] Configure project */ = {
+ isa = PBXShellScriptBuildPhase;
+ alwaysOutOfDate = 1;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ );
+ name = "[Expo] Configure project";
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "# This script configures Expo modules and generates the modules provider file.\nbash -l -c \"./Pods/Target\\ Support\\ Files/Pods-example/expo-configure-project.sh\"\n";
+ };
+ 800E24972A6A228C8D4807E9 /* [CP] Copy Pods Resources */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-example/Pods-example-resources.sh",
+ "${PODS_CONFIGURATION_BUILD_DIR}/EXConstants/EXConstants.bundle",
+ "${PODS_CONFIGURATION_BUILD_DIR}/EXConstants/ExpoConstants_privacy.bundle",
+ "${PODS_CONFIGURATION_BUILD_DIR}/ExpoFileSystem/ExpoFileSystem_privacy.bundle",
+ "${PODS_CONFIGURATION_BUILD_DIR}/RCT-Folly/RCT-Folly_privacy.bundle",
+ "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/React-Core_privacy.bundle",
+ "${PODS_CONFIGURATION_BUILD_DIR}/React-cxxreact/React-cxxreact_privacy.bundle",
+ "${PODS_CONFIGURATION_BUILD_DIR}/boost/boost_privacy.bundle",
+ "${PODS_CONFIGURATION_BUILD_DIR}/glog/glog_privacy.bundle",
+ );
+ name = "[CP] Copy Pods Resources";
+ outputPaths = (
+ "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EXConstants.bundle",
+ "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ExpoConstants_privacy.bundle",
+ "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ExpoFileSystem_privacy.bundle",
+ "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RCT-Folly_privacy.bundle",
+ "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/React-Core_privacy.bundle",
+ "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/React-cxxreact_privacy.bundle",
+ "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/boost_privacy.bundle",
+ "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/glog_privacy.bundle",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-example/Pods-example-resources.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+ 8B5BD00FA25DDE50D4B2171D /* [CP] Embed Pods Frameworks */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-example/Pods-example-frameworks.sh",
+ "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes",
+ );
+ name = "[CP] Embed Pods Frameworks";
+ outputPaths = (
+ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-example/Pods-example-frameworks.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 13B07F871A680F5B00A75B9A /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */,
+ 13B07FC11A68108700A75B9A /* main.m in Sources */,
+ B18059E884C0ABDD17F3DC3D /* ExpoModulesProvider.swift in Sources */,
+ F9F8C85DE44146D3A2AD1945 /* noop-file.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ 13B07F941A680F5B00A75B9A /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 6C2E3173556A471DD304B334 /* Pods-example.debug.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_ENTITLEMENTS = example/example.entitlements;
+ CURRENT_PROJECT_VERSION = 1;
+ ENABLE_BITCODE = NO;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "$(inherited)",
+ "FB_SONARKIT_ENABLED=1",
+ );
+ INFOPLIST_FILE = example/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 15.1;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ MARKETING_VERSION = 1.0;
+ OTHER_LDFLAGS = (
+ "$(inherited)",
+ "-ObjC",
+ "-lc++",
+ );
+ OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG";
+ PRODUCT_BUNDLE_IDENTIFIER = nayan.example;
+ PRODUCT_NAME = example;
+ SWIFT_OBJC_BRIDGING_HEADER = "example/example-Bridging-Header.h";
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = Debug;
+ };
+ 13B07F951A680F5B00A75B9A /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 7A4D352CD337FB3A3BF06240 /* Pods-example.release.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_ENTITLEMENTS = example/example.entitlements;
+ CURRENT_PROJECT_VERSION = 1;
+ INFOPLIST_FILE = example/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 15.1;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ MARKETING_VERSION = 1.0;
+ OTHER_LDFLAGS = (
+ "$(inherited)",
+ "-ObjC",
+ "-lc++",
+ );
+ OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
+ PRODUCT_BUNDLE_IDENTIFIER = nayan.example;
+ PRODUCT_NAME = example;
+ SWIFT_OBJC_BRIDGING_HEADER = "example/example-Bridging-Header.h";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = Release;
+ };
+ 83CBBA201A601CBA00E9B192 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "c++20";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 15.1;
+ LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)";
+ LIBRARY_SEARCH_PATHS = "$(SDKROOT)/usr/lib/swift\"$(inherited)\"";
+ MTL_ENABLE_DEBUG_INFO = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ OTHER_LDFLAGS = (
+ "$(inherited)",
+ " ",
+ );
+ REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
+ SDKROOT = iphoneos;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) DEBUG";
+ USE_HERMES = true;
+ };
+ name = Debug;
+ };
+ 83CBBA211A601CBA00E9B192 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "c++20";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = YES;
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 15.1;
+ LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)";
+ LIBRARY_SEARCH_PATHS = "$(SDKROOT)/usr/lib/swift\"$(inherited)\"";
+ MTL_ENABLE_DEBUG_INFO = NO;
+ OTHER_LDFLAGS = (
+ "$(inherited)",
+ " ",
+ );
+ REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
+ SDKROOT = iphoneos;
+ USE_HERMES = true;
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "example" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 13B07F941A680F5B00A75B9A /* Debug */,
+ 13B07F951A680F5B00A75B9A /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "example" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 83CBBA201A601CBA00E9B192 /* Debug */,
+ 83CBBA211A601CBA00E9B192 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */;
+}
diff --git a/example/ios/example.xcodeproj/xcshareddata/xcschemes/example.xcscheme b/example/ios/example.xcodeproj/xcshareddata/xcschemes/example.xcscheme
new file mode 100644
index 0000000..cfc53ba
--- /dev/null
+++ b/example/ios/example.xcodeproj/xcshareddata/xcschemes/example.xcscheme
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/example/ios/example.xcworkspace/contents.xcworkspacedata b/example/ios/example.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 0000000..7f5c3aa
--- /dev/null
+++ b/example/ios/example.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
diff --git a/example/ios/example/AppDelegate.h b/example/ios/example/AppDelegate.h
new file mode 100644
index 0000000..1658a43
--- /dev/null
+++ b/example/ios/example/AppDelegate.h
@@ -0,0 +1,7 @@
+#import
+#import
+#import
+
+@interface AppDelegate : EXAppDelegateWrapper
+
+@end
diff --git a/example/ios/example/AppDelegate.mm b/example/ios/example/AppDelegate.mm
new file mode 100644
index 0000000..b27f832
--- /dev/null
+++ b/example/ios/example/AppDelegate.mm
@@ -0,0 +1,62 @@
+#import "AppDelegate.h"
+
+#import
+#import
+
+@implementation AppDelegate
+
+- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
+{
+ self.moduleName = @"main";
+
+ // You can add your custom initial props in the dictionary below.
+ // They will be passed down to the ViewController used by React Native.
+ self.initialProps = @{};
+
+ return [super application:application didFinishLaunchingWithOptions:launchOptions];
+}
+
+- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
+{
+ return [self bundleURL];
+}
+
+- (NSURL *)bundleURL
+{
+#if DEBUG
+ return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@".expo/.virtual-metro-entry"];
+#else
+ return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
+#endif
+}
+
+// Linking API
+- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary *)options {
+ return [super application:application openURL:url options:options] || [RCTLinkingManager application:application openURL:url options:options];
+}
+
+// Universal Links
+- (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler:(nonnull void (^)(NSArray> * _Nullable))restorationHandler {
+ BOOL result = [RCTLinkingManager application:application continueUserActivity:userActivity restorationHandler:restorationHandler];
+ return [super application:application continueUserActivity:userActivity restorationHandler:restorationHandler] || result;
+}
+
+// Explicitly define remote notification delegates to ensure compatibility with some third-party libraries
+- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
+{
+ return [super application:application didRegisterForRemoteNotificationsWithDeviceToken:deviceToken];
+}
+
+// Explicitly define remote notification delegates to ensure compatibility with some third-party libraries
+- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
+{
+ return [super application:application didFailToRegisterForRemoteNotificationsWithError:error];
+}
+
+// Explicitly define remote notification delegates to ensure compatibility with some third-party libraries
+- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
+{
+ return [super application:application didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler];
+}
+
+@end
diff --git a/example/ios/example/Images.xcassets/AppIcon.appiconset/App-Icon-1024x1024@1x.png b/example/ios/example/Images.xcassets/AppIcon.appiconset/App-Icon-1024x1024@1x.png
new file mode 100644
index 0000000..2732229
Binary files /dev/null and b/example/ios/example/Images.xcassets/AppIcon.appiconset/App-Icon-1024x1024@1x.png differ
diff --git a/example/ios/example/Images.xcassets/AppIcon.appiconset/Contents.json b/example/ios/example/Images.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 0000000..90d8d4c
--- /dev/null
+++ b/example/ios/example/Images.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,14 @@
+{
+ "images": [
+ {
+ "filename": "App-Icon-1024x1024@1x.png",
+ "idiom": "universal",
+ "platform": "ios",
+ "size": "1024x1024"
+ }
+ ],
+ "info": {
+ "version": 1,
+ "author": "expo"
+ }
+}
\ No newline at end of file
diff --git a/example/ios/example/Images.xcassets/Contents.json b/example/ios/example/Images.xcassets/Contents.json
new file mode 100644
index 0000000..ed285c2
--- /dev/null
+++ b/example/ios/example/Images.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "version" : 1,
+ "author" : "expo"
+ }
+}
diff --git a/example/ios/example/Images.xcassets/SplashScreenBackground.colorset/Contents.json b/example/ios/example/Images.xcassets/SplashScreenBackground.colorset/Contents.json
new file mode 100644
index 0000000..15f02ab
--- /dev/null
+++ b/example/ios/example/Images.xcassets/SplashScreenBackground.colorset/Contents.json
@@ -0,0 +1,20 @@
+{
+ "colors": [
+ {
+ "color": {
+ "components": {
+ "alpha": "1.000",
+ "blue": "1.00000000000000",
+ "green": "1.00000000000000",
+ "red": "1.00000000000000"
+ },
+ "color-space": "srgb"
+ },
+ "idiom": "universal"
+ }
+ ],
+ "info": {
+ "version": 1,
+ "author": "expo"
+ }
+}
\ No newline at end of file
diff --git a/example/ios/example/Images.xcassets/SplashScreenLogo.imageset/Contents.json b/example/ios/example/Images.xcassets/SplashScreenLogo.imageset/Contents.json
new file mode 100644
index 0000000..f65c008
--- /dev/null
+++ b/example/ios/example/Images.xcassets/SplashScreenLogo.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images": [
+ {
+ "idiom": "universal",
+ "filename": "image.png",
+ "scale": "1x"
+ },
+ {
+ "idiom": "universal",
+ "filename": "image@2x.png",
+ "scale": "2x"
+ },
+ {
+ "idiom": "universal",
+ "filename": "image@3x.png",
+ "scale": "3x"
+ }
+ ],
+ "info": {
+ "version": 1,
+ "author": "expo"
+ }
+}
\ No newline at end of file
diff --git a/example/ios/example/Images.xcassets/SplashScreenLogo.imageset/image.png b/example/ios/example/Images.xcassets/SplashScreenLogo.imageset/image.png
new file mode 100644
index 0000000..b9ff0fc
Binary files /dev/null and b/example/ios/example/Images.xcassets/SplashScreenLogo.imageset/image.png differ
diff --git a/example/ios/example/Images.xcassets/SplashScreenLogo.imageset/image@2x.png b/example/ios/example/Images.xcassets/SplashScreenLogo.imageset/image@2x.png
new file mode 100644
index 0000000..b9ff0fc
Binary files /dev/null and b/example/ios/example/Images.xcassets/SplashScreenLogo.imageset/image@2x.png differ
diff --git a/example/ios/example/Images.xcassets/SplashScreenLogo.imageset/image@3x.png b/example/ios/example/Images.xcassets/SplashScreenLogo.imageset/image@3x.png
new file mode 100644
index 0000000..b9ff0fc
Binary files /dev/null and b/example/ios/example/Images.xcassets/SplashScreenLogo.imageset/image@3x.png differ
diff --git a/example/ios/example/Info.plist b/example/ios/example/Info.plist
new file mode 100644
index 0000000..546f0fd
--- /dev/null
+++ b/example/ios/example/Info.plist
@@ -0,0 +1,74 @@
+
+
+
+
+ CADisableMinimumFrameDurationOnPhone
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleDisplayName
+ example
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ $(PRODUCT_BUNDLE_PACKAGE_TYPE)
+ CFBundleShortVersionString
+ 1.0.0
+ CFBundleSignature
+ ????
+ CFBundleURLTypes
+
+
+ CFBundleURLSchemes
+
+ nayan.example
+
+
+
+ CFBundleVersion
+ 1
+ LSMinimumSystemVersion
+ 12.0
+ LSRequiresIPhoneOS
+
+ NSAppTransportSecurity
+
+ NSAllowsArbitraryLoads
+
+ NSAllowsLocalNetworking
+
+
+ UILaunchStoryboardName
+ SplashScreen
+ UIRequiredDeviceCapabilities
+
+ arm64
+
+ UIRequiresFullScreen
+
+ UIStatusBarStyle
+ UIStatusBarStyleDefault
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+
+ UISupportedInterfaceOrientations~ipad
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ UIUserInterfaceStyle
+ Automatic
+ UIViewControllerBasedStatusBarAppearance
+
+
+
\ No newline at end of file
diff --git a/example/ios/example/PrivacyInfo.xcprivacy b/example/ios/example/PrivacyInfo.xcprivacy
new file mode 100644
index 0000000..5bb83c5
--- /dev/null
+++ b/example/ios/example/PrivacyInfo.xcprivacy
@@ -0,0 +1,48 @@
+
+
+
+
+ NSPrivacyAccessedAPITypes
+
+
+ NSPrivacyAccessedAPIType
+ NSPrivacyAccessedAPICategoryUserDefaults
+ NSPrivacyAccessedAPITypeReasons
+
+ CA92.1
+
+
+
+ NSPrivacyAccessedAPIType
+ NSPrivacyAccessedAPICategoryFileTimestamp
+ NSPrivacyAccessedAPITypeReasons
+
+ 0A2A.1
+ 3B52.1
+ C617.1
+
+
+
+ NSPrivacyAccessedAPIType
+ NSPrivacyAccessedAPICategoryDiskSpace
+ NSPrivacyAccessedAPITypeReasons
+
+ E174.1
+ 85F4.1
+
+
+
+ NSPrivacyAccessedAPIType
+ NSPrivacyAccessedAPICategorySystemBootTime
+ NSPrivacyAccessedAPITypeReasons
+
+ 35F9.1
+
+
+
+ NSPrivacyCollectedDataTypes
+
+ NSPrivacyTracking
+
+
+
diff --git a/example/ios/example/SplashScreen.storyboard b/example/ios/example/SplashScreen.storyboard
new file mode 100644
index 0000000..8a6fcd4
--- /dev/null
+++ b/example/ios/example/SplashScreen.storyboard
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/example/ios/example/Supporting/Expo.plist b/example/ios/example/Supporting/Expo.plist
new file mode 100644
index 0000000..750be02
--- /dev/null
+++ b/example/ios/example/Supporting/Expo.plist
@@ -0,0 +1,12 @@
+
+
+
+
+ EXUpdatesCheckOnLaunch
+ ALWAYS
+ EXUpdatesEnabled
+
+ EXUpdatesLaunchWaitMs
+ 0
+
+
\ No newline at end of file
diff --git a/example/ios/example/example-Bridging-Header.h b/example/ios/example/example-Bridging-Header.h
new file mode 100644
index 0000000..e11d920
--- /dev/null
+++ b/example/ios/example/example-Bridging-Header.h
@@ -0,0 +1,3 @@
+//
+// Use this file to import your target's public headers that you would like to expose to Swift.
+//
diff --git a/example/ios/example/example.entitlements b/example/ios/example/example.entitlements
new file mode 100644
index 0000000..f683276
--- /dev/null
+++ b/example/ios/example/example.entitlements
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/example/ios/example/main.m b/example/ios/example/main.m
new file mode 100644
index 0000000..25181b6
--- /dev/null
+++ b/example/ios/example/main.m
@@ -0,0 +1,10 @@
+#import
+
+#import "AppDelegate.h"
+
+int main(int argc, char * argv[]) {
+ @autoreleasepool {
+ return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
+ }
+}
+
diff --git a/example/ios/example/noop-file.swift b/example/ios/example/noop-file.swift
new file mode 100644
index 0000000..b2ffafb
--- /dev/null
+++ b/example/ios/example/noop-file.swift
@@ -0,0 +1,4 @@
+//
+// @generated
+// A blank Swift file must be created for native modules with Swift files to work correctly.
+//
diff --git a/example/metro.config.js b/example/metro.config.js
index f25b42e..2b17893 100644
--- a/example/metro.config.js
+++ b/example/metro.config.js
@@ -7,6 +7,7 @@ const pkg = require('./package.json');
const { withNativeWind } = require('nativewind/metro');
const { getDefaultConfig } = require('@expo/metro-config');
const { getConfig } = require('react-native-builder-bob/metro-config');
+const { wrapWithReanimatedMetroConfig } = require('react-native-reanimated/metro-config');
const root = path.resolve(__dirname, '..');
const peerDependencies = Object.keys({
@@ -60,6 +61,6 @@ const config = getConfig(
}
);
-module.exports = withNativeWind(config, {
+module.exports = withNativeWind(wrapWithReanimatedMetroConfig(config), {
input: './global.css',
});
diff --git a/example/package.json b/example/package.json
index 143749a..2bd4dfd 100644
--- a/example/package.json
+++ b/example/package.json
@@ -4,8 +4,9 @@
"main": "index.js",
"scripts": {
"start": "expo start -c",
- "android": "expo start --android",
- "ios": "expo start --ios",
+ "prebuild": "expo prebuild --clean",
+ "android": "expo run:android",
+ "ios": "expo run:ios",
"web": "expo start --web"
},
"dependencies": {
@@ -16,8 +17,11 @@
"react": "18.3.1",
"react-dom": "18.3.1",
"react-native": "0.76.7",
- "react-native-reanimated": "^3.16.2",
- "react-native-safe-area-context": "^5.2.0",
+ "react-native-gesture-handler": "^2.24.0",
+ "react-native-keyboard-controller": "^1.16.7",
+ "react-native-mmkv": "^3.2.0",
+ "react-native-reanimated": "^3.16.1",
+ "react-native-safe-area-context": "^4.12.0",
"react-native-web": "~0.19.13"
},
"devDependencies": {
diff --git a/example/src/App.tsx b/example/src/App.tsx
index 36c800b..a7d1024 100644
--- a/example/src/App.tsx
+++ b/example/src/App.tsx
@@ -1,13 +1,23 @@
-import { NText } from 'react-native-nayan';
-import { View, Text, Pressable } from 'react-native';
+import '../global.css';
+import 'react-native-reanimated';
+import { NText, NPress, NTheme, useColorScheme } from 'react-native-nayan';
+import { View } from 'react-native';
+import { themeColors } from './constants';
export default function App() {
+ const {colorScheme, setColorScheme} = useColorScheme();
+
+ const chnageTheme = () => {
+ setColorScheme(colorScheme === 'dark' ? 'light' : 'dark');
+ }
+
return (
-
-
- console.log('Pressed')}>
- Text
-
-
+
+
+
+ Change Theme
+
+
+
);
}
diff --git a/example/src/constants.ts b/example/src/constants.ts
new file mode 100644
index 0000000..d526057
--- /dev/null
+++ b/example/src/constants.ts
@@ -0,0 +1,28 @@
+import { DarkTheme, DefaultTheme } from '@react-navigation/native';
+
+export const themeColors = {
+ light: {
+ ...DefaultTheme,
+ colors: {
+ primary: 'hsl(215 100% 45%)',
+ background: 'hsl(216 20% 95%)',
+ card: 'hsl(0 0% 100%)',
+ text: 'hsl(0 0% 2%)',
+ muted: 'hsl(0 0% 50%)',
+ border: 'hsl(0 0% 88%)',
+ notification: 'hsl(0 0% 100%)'
+ }
+ },
+ dark: {
+ ...DarkTheme,
+ colors: {
+ primary: 'hsl(209 100% 58%)',
+ background: 'hsl(0 0% 12%)',
+ card: 'hsl(0 0% 21%)',
+ text: 'hsl(0 0% 96%)',
+ muted: 'hsl(0 0% 69%)',
+ border: 'hsl(0 0% 31%)',
+ notification: 'hsl(0 0% 21%)'
+ }
+ }
+};
diff --git a/example/tailwind.config.js b/example/tailwind.config.js
index 5fcb612..ba7385f 100644
--- a/example/tailwind.config.js
+++ b/example/tailwind.config.js
@@ -1,3 +1,6 @@
+const { hairlineWidth } = require('nativewind/theme');
+const colors = require('tailwindcss/colors');
+
/** @type {import('tailwindcss').Config} */
module.exports = {
darkMode: 'class',
@@ -7,7 +10,34 @@ module.exports = {
],
presets: [require('nativewind/preset')],
theme: {
- extend: {},
+ colors: {
+ ...colors,
+ primary: 'var(--color-primary)',
+ card: 'var(--color-card)',
+ text: 'var(--color-text)',
+ muted: 'var(--color-muted)',
+ border: 'var(--color-border)',
+ background: 'var(--color-background)'
+ },
+ extend: {
+ borderWidth: {
+ hairline: hairlineWidth()
+ },
+ keyframes: {
+ 'accordion-down': {
+ from: { height: '0' },
+ to: { height: 'var(--radix-accordion-content-height)' }
+ },
+ 'accordion-up': {
+ from: { height: 'var(--radix-accordion-content-height)' },
+ to: { height: '0' }
+ }
+ },
+ animation: {
+ 'accordion-down': 'accordion-down 0.2s ease-out',
+ 'accordion-up': 'accordion-up 0.2s ease-out'
+ }
+ }
},
- plugins: [],
+ plugins: []
};
diff --git a/package.json b/package.json
index 43e06c8..4775e4c 100644
--- a/package.json
+++ b/package.json
@@ -1,24 +1,24 @@
{
"name": "react-native-nayan",
- "version": "0.1.0",
+ "version": "0.6.0",
"description": "React Native Component Library",
"source": "./src/index.tsx",
- "main": "./lib/commonjs/index.js",
- "module": "./lib/module/index.js",
- "types": "./lib/typescript/src/index.d.ts",
+ "main": "./dist/commonjs/index.js",
+ "module": "./dist/module/index.js",
+ "types": "./dist/typescript/src/index.d.ts",
"exports": {
".": {
"import": {
- "default": "./lib/module/index.js"
+ "default": "./dist/module/index.js"
},
"require": {
- "default": "./lib/commonjs/index.js"
+ "default": "./dist/commonjs/index.js"
}
}
},
"files": [
"src",
- "lib",
+ "dist",
"android",
"ios",
"cpp",
@@ -40,7 +40,7 @@
"test": "jest",
"typecheck": "tsc",
"lint": "eslint \"**/*.{js,ts,tsx}\"",
- "clean": "del-cli lib",
+ "clean": "del-cli dist",
"prepare": "bob build",
"release": "release-it"
},
@@ -62,10 +62,42 @@
"publishConfig": {
"registry": "https://registry.npmjs.org/"
},
+ "dependencies": {
+ "@gorhom/bottom-sheet": "^5.1.1",
+ "@react-native-community/datetimepicker": "^8.3.0",
+ "@rn-primitives/accordion": "^1.1.0",
+ "@rn-primitives/alert-dialog": "^1.1.0",
+ "@rn-primitives/checkbox": "^1.1.0",
+ "@rn-primitives/dialog": "^1.1.0",
+ "@rn-primitives/label": "^1.1.0",
+ "@rn-primitives/popover": "^1.1.0",
+ "@rn-primitives/portal": "^1.1.0",
+ "@rn-primitives/progress": "^1.1.0",
+ "@rn-primitives/radio-group": "^1.1.0",
+ "@rn-primitives/select": "^1.1.0",
+ "@rn-primitives/separator": "^1.1.0",
+ "@rn-primitives/slot": "^1.1.0",
+ "@rn-primitives/switch": "^1.1.0",
+ "@rn-primitives/tooltip": "^1.1.0",
+ "@rn-primitives/types": "^1.1.0",
+ "class-variance-authority": "^0.7.1",
+ "clsx": "^2.1.1",
+ "date-fns": "^4.1.0",
+ "expo-navigation-bar": "^4.0.8",
+ "expo-status-bar": "^2.0.1",
+ "linkify-it": "^5.0.0",
+ "lucide-react-native": "^0.479.0",
+ "mdurl": "^2.0.0",
+ "react-native-modal-datetime-picker": "^18.0.0",
+ "react-native-toast-message": "^2.2.1",
+ "react-native-wheel-color-picker": "^1.3.1",
+ "tailwind-merge": "^3.0.2"
+ },
"devDependencies": {
"@commitlint/config-conventional": "^17.0.2",
"@evilmartians/lefthook": "^1.5.0",
"@react-native/eslint-config": "^0.73.1",
+ "@react-navigation/native": "^6.1.18",
"@release-it/conventional-changelog": "^9.0.2",
"@types/jest": "^29.5.5",
"@types/react": "^18.2.44",
@@ -75,23 +107,31 @@
"eslint-config-prettier": "^9.0.0",
"eslint-plugin-prettier": "^5.0.1",
"jest": "^29.7.0",
- "nativewind": "4.x.x",
+ "nativewind": "^4.1.23",
"prettier": "^3.0.3",
"react": "18.3.1",
"react-native": "0.76.7",
"react-native-builder-bob": "^0.37.0",
+ "react-native-gesture-handler": "^2.24.0",
+ "react-native-mmkv": "^3.2.0",
+ "react-native-reanimated": "^3.16.1",
+ "react-native-safe-area-context": "^4.12.0",
+ "react-native-svg": "^15.11.2",
"release-it": "^17.10.0",
- "tailwindcss": "3.x.x",
"typescript": "^5.2.2"
},
"resolutions": {
"@types/react": "^18.2.44"
},
"peerDependencies": {
+ "@react-navigation/native": ">=6",
"nativewind": ">=4",
"react": "*",
"react-native": "*",
+ "react-native-gesture-handler": ">=2",
"react-native-reanimated": ">=3",
+ "react-native-safe-area-context": ">=4",
+ "react-native-svg": "*",
"tailwindcss": ">=3"
},
"workspaces": [
@@ -102,7 +142,7 @@
"preset": "react-native",
"modulePathIgnorePatterns": [
"/example/node_modules",
- "/lib/"
+ "/dist/"
]
},
"commitlint": {
@@ -149,7 +189,7 @@
},
"eslintIgnore": [
"node_modules/",
- "lib/"
+ "dist/"
],
"prettier": {
"quoteProps": "consistent",
@@ -160,7 +200,7 @@
},
"react-native-builder-bob": {
"source": "src",
- "output": "lib",
+ "output": "dist",
"targets": [
[
"commonjs",
diff --git a/src/components/NAccordion.tsx b/src/components/NAccordion.tsx
new file mode 100644
index 0000000..f890f3f
--- /dev/null
+++ b/src/components/NAccordion.tsx
@@ -0,0 +1,28 @@
+import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/ui/accordion';
+import { NText } from '@/components/NText';
+import { cn } from '@/lib/utils';
+
+interface Props {
+ className?: string;
+ titleClassName?: string;
+ descriptionClassName?: string;
+ items: { title: string; description: string }[];
+}
+
+export const NAccordion = (props: Props) => {
+ const { items, className = '', titleClassName = '', descriptionClassName = '' } = props;
+ return (
+
+ {items.map((item: any, index) => (
+
+
+ {item.title}
+
+
+ {item.description}
+
+
+ ))}
+
+ );
+};
diff --git a/src/components/NAlert.tsx b/src/components/NAlert.tsx
new file mode 100644
index 0000000..5e7da45
--- /dev/null
+++ b/src/components/NAlert.tsx
@@ -0,0 +1,21 @@
+import { Alert, AlertDescription, AlertTitle } from '@/components/ui/alert';
+import { AlertCircle } from '@/lib/icons/AlertCircle';
+import { cn } from '@/lib/utils';
+
+interface Props {
+ title?: string;
+ description: string;
+ className?: string;
+ titleClassName?: string;
+ descriptionClassName?: string;
+}
+
+export const NAlert = (props: Props) => {
+ const { title = '', description, className = '', titleClassName = '', descriptionClassName = '' } = props;
+ return (
+
+ {title && {title}}
+ {description}
+
+ );
+};
diff --git a/src/components/NButton.tsx b/src/components/NButton.tsx
new file mode 100644
index 0000000..13556ec
--- /dev/null
+++ b/src/components/NButton.tsx
@@ -0,0 +1,21 @@
+import { type PressableProps } from 'react-native';
+import { NPress } from '@/components/NPress';
+import { NText } from '@/components/NText';
+import { cn } from '@/lib/utils';
+
+interface Props extends PressableProps {
+ className?: string;
+ textClassName?: string;
+}
+
+export const NButton = (props: Props) => {
+ const { className = '', textClassName = '', ...remaining } = props;
+ return (
+
+ {props.children as any}
+
+ );
+};
diff --git a/src/components/NButtonGroup.tsx b/src/components/NButtonGroup.tsx
new file mode 100644
index 0000000..e5858a9
--- /dev/null
+++ b/src/components/NButtonGroup.tsx
@@ -0,0 +1,37 @@
+import { View } from 'react-native';
+import { Button } from '@/components/ui/button';
+import { NText } from '@/components/NText';
+import { cn } from '@/lib/utils';
+
+interface Props {
+ className?: string;
+ label: string;
+ size?: 'sm' | 'default' | 'lg' | any;
+ items: string[];
+ value: string;
+ disabled?: boolean;
+ onChange: (selected: string) => void;
+}
+
+export const NButtonGroup = (props: Props) => {
+ const { className = '', items, value, size = 'default', label, disabled = false, onChange } = props;
+ return (
+
+ {label && {label}}
+
+ {items.map((item, index) => (
+
+ ))}
+
+
+ );
+};
diff --git a/src/components/NCard.tsx b/src/components/NCard.tsx
new file mode 100644
index 0000000..e1d030a
--- /dev/null
+++ b/src/components/NCard.tsx
@@ -0,0 +1,6 @@
+import { View, type ViewProps } from 'react-native';
+import { cn } from '@/lib/utils';
+
+export const NCard = (props: ViewProps) => {
+ return {props.children};
+};
diff --git a/src/components/NCheck.tsx b/src/components/NCheck.tsx
new file mode 100644
index 0000000..da6956b
--- /dev/null
+++ b/src/components/NCheck.tsx
@@ -0,0 +1,20 @@
+import { View } from 'react-native';
+import { Checkbox } from '@/components/ui/checkbox';
+import { NText } from '@/components/NText';
+
+interface Props {
+ checked: boolean;
+ disabled?: boolean;
+ label: string;
+ onChange: (checked: boolean) => void;
+}
+
+export const NCheck = (props: Props) => {
+ const { checked = false, disabled = false, label = '', onChange } = props;
+ return (
+
+
+ {label && {label}}
+
+ );
+};
diff --git a/src/components/NColorPicker.tsx b/src/components/NColorPicker.tsx
new file mode 100644
index 0000000..a799463
--- /dev/null
+++ b/src/components/NColorPicker.tsx
@@ -0,0 +1,45 @@
+import { Pressable, View } from 'react-native';
+import ColorPicker from 'react-native-wheel-color-picker';
+import { NPopover } from '@/components/NPopover';
+import { NText } from '@/components/NText';
+import { cn } from '@/lib/utils';
+
+interface Props {
+ value: string;
+ label?: string;
+ disabled?: boolean;
+ onChange: (value: string) => void;
+}
+
+export const NColorPicker = (props: Props) => {
+ const { label = '', value = '#ffffff', disabled = false, onChange } = props;
+
+ return (
+
+ {label && {label}}
+
+ }>
+
+
+
+
+
+ );
+};
diff --git a/src/components/NConfirm.tsx b/src/components/NConfirm.tsx
new file mode 100644
index 0000000..fb38b85
--- /dev/null
+++ b/src/components/NConfirm.tsx
@@ -0,0 +1,42 @@
+import {
+ AlertDialog,
+ AlertDialogAction,
+ AlertDialogCancel,
+ AlertDialogContent,
+ AlertDialogDescription,
+ AlertDialogFooter,
+ AlertDialogHeader,
+ AlertDialogTitle,
+ AlertDialogTrigger
+} from '@/components/ui/alert-dialog';
+import { NText } from '@/components/NText';
+
+interface Props {
+ title: string;
+ description: string;
+ onResult: (result: boolean) => void;
+ children: React.ReactNode;
+}
+
+export const NConfirm = (props: Props) => {
+ const { title, description, children, onResult } = props;
+ return (
+
+ {children}
+
+
+ {title}
+ {description}
+
+
+ onResult(true)}>
+ Continue
+
+ onResult(false)}>
+ Cancel
+
+
+
+
+ );
+};
diff --git a/src/components/NDatePicker.tsx b/src/components/NDatePicker.tsx
new file mode 100644
index 0000000..1bc45d5
--- /dev/null
+++ b/src/components/NDatePicker.tsx
@@ -0,0 +1,69 @@
+import { useState } from 'react';
+import { View } from 'react-native';
+import { format } from 'date-fns';
+import DateTimePickerModal from 'react-native-modal-datetime-picker';
+import { NText } from '@/components/NText';
+import { Calendar } from '@/lib/icons/Calender';
+import { useColorScheme } from '@/hooks/useColorScheme';
+import { cn } from '@/lib/utils';
+import { NPress } from '@/components/NPress';
+
+interface Props {
+ value: Date;
+ label?: string;
+ isDarkMode?: boolean;
+ disabled?: boolean;
+ className?: string;
+ type?: 'date' | 'time' | 'datetime';
+ onChange: (date: Date) => void;
+}
+
+export const NDatePicker = (props: Props) => {
+ const { isDarkColorScheme } = useColorScheme();
+ const { label = '', type = 'date', isDarkMode = isDarkColorScheme, disabled = false, className = '', value, onChange } = props;
+ const [isVisible, setIsVisible] = useState(false);
+
+ const hideDatePicker = () => {
+ setIsVisible(false);
+ };
+
+ const showDatePicker = () => {
+ setIsVisible(true);
+ };
+
+ const handleConfirm = (date: Date) => {
+ onChange(date);
+ hideDatePicker();
+ };
+
+ const formatValue = (date: Date) => {
+ if (type === 'time') {
+ return format(date, 'HH:mm:ss');
+ }
+ if (type === 'date') {
+ return format(date, 'yyyy-MM-dd');
+ }
+ return format(date, 'yyy-MM-dd HH:mm:ss');
+ };
+
+ return (
+
+ {label && {label}}
+
+
+ {formatValue(value)}
+
+
+
+ );
+};
diff --git a/src/components/NDialog.tsx b/src/components/NDialog.tsx
new file mode 100644
index 0000000..696d405
--- /dev/null
+++ b/src/components/NDialog.tsx
@@ -0,0 +1,26 @@
+import * as React from 'react';
+import { View } from 'react-native';
+import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger } from '@/components/ui/dialog';
+
+interface Props {
+ children?: React.ReactNode;
+ trigger?: React.ReactNode;
+ title: string;
+ buttonText?: string;
+ className?: string;
+}
+
+export const NDialog = (props: Props) => {
+ const { children, trigger, title, className = '' } = props;
+ return (
+
+ );
+};
diff --git a/src/components/NDivider.tsx b/src/components/NDivider.tsx
new file mode 100644
index 0000000..610b27a
--- /dev/null
+++ b/src/components/NDivider.tsx
@@ -0,0 +1,11 @@
+import { Separator } from '@/components/ui/separator';
+
+interface Props {
+ className?: string;
+ orientation?: 'horizontal' | 'vertical';
+}
+
+export const NDivider = (props: Props) => {
+ const { orientation = 'horizontal', className } = props;
+ return ;
+};
diff --git a/src/components/NInput.tsx b/src/components/NInput.tsx
new file mode 100644
index 0000000..dc57570
--- /dev/null
+++ b/src/components/NInput.tsx
@@ -0,0 +1,31 @@
+import { type TextInputProps, View } from 'react-native';
+import { Input } from '@/components/ui/input';
+import { NText } from '@/components/NText';
+import { cn } from '@/lib/utils';
+
+interface Props extends TextInputProps {
+ value: string;
+ label?: string;
+ placeholder?: string;
+ disabled?: boolean;
+ className?: string;
+ onChangeText: (text: string) => void;
+}
+
+export const NInput = (props: Props) => {
+ const { value, label = '', placeholder = '', className = '', onChangeText, disabled = false, ...remaining } = props;
+
+ return (
+
+ {label && {label}}
+
+
+ );
+};
diff --git a/src/components/NLinkify.tsx b/src/components/NLinkify.tsx
new file mode 100644
index 0000000..317071c
--- /dev/null
+++ b/src/components/NLinkify.tsx
@@ -0,0 +1,138 @@
+import React, { type ReactNode, useEffect, useState } from 'react';
+import { Linking, Platform, Text, type TextProps, type TextStyle, View, type ViewProps } from 'react-native';
+// @ts-ignore
+import linkifyIt from 'linkify-it';
+// @ts-ignore
+import mdurl from 'mdurl';
+import { NText } from '@/components/NText';
+import { useColorScheme } from '@/hooks/useColorScheme';
+
+const defaultLinkify = linkifyIt();
+const { OS } = Platform;
+
+type LinkifyProps = ViewProps & {
+ children: ReactNode;
+ style?: TextStyle;
+ linkify?: any;
+ linkStyle?: TextStyle;
+ linkText?: string | ((url: string) => string);
+ onPress?: (url: string, text: string) => void;
+ onLongPress?: (url: string, text: string) => void;
+ injectViewProps?: (url: string) => object;
+};
+
+const Linkify = (props: LinkifyProps) => {
+ const { colors } = useColorScheme();
+ const {
+ children,
+ style,
+ linkify: customLinkify,
+ linkStyle = { color: colors.primary },
+ linkText,
+ onPress,
+ onLongPress,
+ injectViewProps = () => ({}),
+ ...viewProps
+ } = props;
+
+ const [linkifyInstance, setLinkifyInstance] = useState(() => customLinkify || defaultLinkify);
+
+ useEffect(() => {
+ if (customLinkify && customLinkify !== linkifyInstance) {
+ setLinkifyInstance(customLinkify);
+ }
+ }, [customLinkify]);
+
+ if (!linkifyInstance) {
+ console.error('Linkify instance is undefined.');
+ return (
+
+ {children}
+
+ );
+ }
+
+ const isTextNested = (component: React.ReactElement) => {
+ if (!React.isValidElement(component)) throw new Error('Invalid component');
+ // @ts-ignore
+ return typeof component.props.children !== 'string';
+ };
+
+ const processLinkify = (component: React.ReactElement) => {
+ const textContent = component.props.children as string;
+ if (!textContent || typeof textContent !== 'string') return component;
+
+ if (!linkifyInstance.pretest(textContent) || !linkifyInstance.test(textContent)) {
+ return component;
+ }
+
+ let elements: ReactNode[] = [];
+ let lastIndex = 0;
+
+ try {
+ linkifyInstance
+ .tlds('app', true)
+ .match(textContent)
+ ?.forEach(({ index, lastIndex: endIndex, text, url }: any) => {
+ const nonLinkedText = textContent.substring(lastIndex, index);
+ if (nonLinkedText) elements.push(nonLinkedText);
+ lastIndex = endIndex;
+
+ const displayText = typeof linkText === 'function' ? linkText(url) : linkText || text;
+ const clickHandlers = {
+ onPress: onPress ? () => onPress(url, displayText) : undefined,
+ onLongPress: OS !== 'web' && onLongPress ? () => onLongPress(url, displayText) : undefined
+ };
+
+ elements.push(
+
+ {displayText}
+
+ );
+ });
+
+ elements.push(textContent.substring(lastIndex));
+ return React.cloneElement(component, {}, elements);
+ } catch (err) {
+ console.error('Error in processLinkify:', err);
+ return component;
+ }
+ };
+
+ const parseComponent = (component: React.ReactElement): React.ReactElement => {
+ if (!component?.props?.children) return component;
+ return React.cloneElement(
+ component,
+ {},
+ React.Children.map(component.props.children, child => {
+ if (typeof child === 'string' && linkifyInstance?.pretest?.(child)) {
+ return processLinkify({child});
+ }
+ if (React.isValidElement(child) && child.type === Text && !isTextNested(child)) {
+ return processLinkify(child as any);
+ }
+ return parseComponent(child as React.ReactElement);
+ })
+ );
+ };
+
+ return (
+
+ {!onPress && !onLongPress && !linkStyle ? children : parseComponent({children}).props.children}
+
+ );
+};
+
+type NLinkifyProps = LinkifyProps & { linkDefault?: boolean };
+
+export const NLinkify: React.FC = ({ linkDefault, ...props }) => {
+ const handleLink = (url: string) => {
+ const urlObject = mdurl.parse(url);
+ urlObject.protocol = urlObject.protocol.toLowerCase();
+ const normalizedURL = mdurl.format(urlObject);
+
+ Linking.canOpenURL(normalizedURL).then(supported => supported && Linking.openURL(normalizedURL));
+ };
+
+ return ;
+};
diff --git a/src/components/NLoading.tsx b/src/components/NLoading.tsx
new file mode 100644
index 0000000..0f9b0be
--- /dev/null
+++ b/src/components/NLoading.tsx
@@ -0,0 +1,11 @@
+import { ActivityIndicator, View } from 'react-native';
+import { useColorScheme } from '@/hooks/useColorScheme';
+
+export const NLoading = () => {
+ const { colors } = useColorScheme();
+ return (
+
+
+
+ );
+};
diff --git a/src/components/NMenuItem.tsx b/src/components/NMenuItem.tsx
new file mode 100644
index 0000000..5a55b7a
--- /dev/null
+++ b/src/components/NMenuItem.tsx
@@ -0,0 +1,27 @@
+import { View } from 'react-native';
+import { NPress } from '@/components/NPress';
+import { NText } from '@/components/NText';
+import { cn } from '@/lib/utils';
+
+interface Props {
+ name: string;
+ description?: string;
+ className?: string;
+ icon: any;
+ onPress: () => void;
+}
+
+export const NMenuItem = (props: Props) => {
+ const { name, description, className = '', icon, onPress } = props;
+ const Icon = icon;
+
+ return (
+
+ {icon && }
+
+ {name}
+ {description && {description}}
+
+
+ );
+};
diff --git a/src/components/NPopover.tsx b/src/components/NPopover.tsx
new file mode 100644
index 0000000..77b3934
--- /dev/null
+++ b/src/components/NPopover.tsx
@@ -0,0 +1,29 @@
+import * as React from 'react';
+import { Platform } from 'react-native';
+import { useSafeAreaInsets } from 'react-native-safe-area-context';
+import { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover';
+
+interface Props {
+ trigger?: React.ReactNode;
+ children: React.ReactNode;
+}
+
+export const NPopover = (props: Props) => {
+ const { trigger, children } = props;
+ const insets = useSafeAreaInsets();
+ const contentInsets = {
+ top: insets.top,
+ bottom: insets.bottom,
+ left: 12,
+ right: 12
+ };
+
+ return (
+
+ {trigger}
+
+ {children}
+
+
+ );
+};
diff --git a/src/components/NPress.tsx b/src/components/NPress.tsx
new file mode 100644
index 0000000..10f9201
--- /dev/null
+++ b/src/components/NPress.tsx
@@ -0,0 +1,11 @@
+import { Pressable, type PressableProps } from 'react-native';
+import { cn } from '@/lib/utils';
+
+export const NPress = (props: PressableProps) => {
+ const { children, className = '', ...remaining } = props;
+ return (
+
+ {children}
+
+ );
+};
diff --git a/src/components/NProgress.tsx b/src/components/NProgress.tsx
new file mode 100644
index 0000000..bc85543
--- /dev/null
+++ b/src/components/NProgress.tsx
@@ -0,0 +1,14 @@
+import { Progress } from '@/components/ui/progress';
+
+interface Props {
+ className?: string;
+ indicatorClassName?: string;
+ value: number;
+}
+
+export const NProgress = (props: Props) => {
+ const { value, className = '', indicatorClassName = '' } = props;
+ return (
+
+ );
+};
diff --git a/src/components/NRadio.tsx b/src/components/NRadio.tsx
new file mode 100644
index 0000000..d17342f
--- /dev/null
+++ b/src/components/NRadio.tsx
@@ -0,0 +1,51 @@
+import { View } from 'react-native';
+import { Label } from '@/components/ui/label';
+import { RadioGroup, RadioGroupItem } from '@/components/ui/radio-group';
+import { NText } from '@/components/NText';
+import { cn } from '@/lib/utils';
+
+interface RadioGroupProps {
+ disabled?: boolean;
+ item: { label: string; value: string };
+ onLabelPress: (value: string) => void;
+}
+
+const RadioGroupItemWithLabel = (props: RadioGroupProps) => {
+ const { disabled, item, onLabelPress } = props;
+
+ return (
+
+
+
+
+ );
+};
+
+interface Props {
+ label?: string;
+ disabled?: boolean;
+ value: string;
+ items: { label: string; value: string }[];
+ onChange: (value: string) => void;
+}
+
+export const NRadio = (props: Props) => {
+ const { label, value, items, disabled = false, onChange } = props;
+
+ return (
+
+ {label}
+
+ {items.map(item => (
+
+ ))}
+
+
+ );
+};
diff --git a/src/components/NRequired.tsx b/src/components/NRequired.tsx
new file mode 100644
index 0000000..a9219a2
--- /dev/null
+++ b/src/components/NRequired.tsx
@@ -0,0 +1,5 @@
+import { NText } from '@/components/NText';
+
+export const NRequired = () => {
+ return *;
+};
diff --git a/src/components/NSelect.tsx b/src/components/NSelect.tsx
new file mode 100644
index 0000000..40ed3a7
--- /dev/null
+++ b/src/components/NSelect.tsx
@@ -0,0 +1,49 @@
+import { ScrollView, View } from 'react-native';
+import { useSafeAreaInsets } from 'react-native-safe-area-context';
+import { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectTrigger, SelectValue } from '@/components/ui/select';
+import { NText } from '@/components/NText';
+import { cn } from '@/lib/utils';
+
+interface Props {
+ label?: string;
+ selectLabel?: string;
+ placeholder?: string;
+ disabled?: boolean;
+ value: { label: string; value: string };
+ items: { label: string; value: string }[];
+ onChange: (value: any) => void;
+}
+
+export const NSelect = (props: Props) => {
+ const { label = '', selectLabel = '', placeholder = '', disabled = false, value, items, onChange } = props;
+ const insets = useSafeAreaInsets();
+ const contentInsets = {
+ top: insets.top,
+ bottom: insets.bottom,
+ left: 12,
+ right: 12
+ };
+
+ return (
+
+ {label && {label}}
+
+
+ );
+};
diff --git a/src/components/NSheet.tsx b/src/components/NSheet.tsx
new file mode 100644
index 0000000..eb2556e
--- /dev/null
+++ b/src/components/NSheet.tsx
@@ -0,0 +1,35 @@
+import { useCallback } from 'react';
+import { useColorScheme } from '@/hooks/useColorScheme';
+import { BottomSheetBackdrop, type BottomSheetBackdropProps, BottomSheetModal, BottomSheetView } from '@gorhom/bottom-sheet';
+
+interface Props {
+ sheetRef: any;
+ snapPoints?: string[] | number[];
+ children: React.ReactNode;
+}
+
+export const NSheet = (props: Props) => {
+ const { colors } = useColorScheme();
+ const { sheetRef, children, snapPoints = null } = props;
+
+ const renderBackdrop = useCallback(
+ (props: BottomSheetBackdropProps) => (
+
+ ),
+ []
+ );
+
+ return (
+
+ {children}
+
+ );
+};
diff --git a/src/components/NSkeleton.tsx b/src/components/NSkeleton.tsx
new file mode 100644
index 0000000..fc428f2
--- /dev/null
+++ b/src/components/NSkeleton.tsx
@@ -0,0 +1,9 @@
+import { Skeleton } from '@/components/ui/skeleton';
+
+interface Props {
+ className?: string;
+}
+
+export const NSkeleton = (props: Props) => {
+ return ;
+};
diff --git a/src/components/NSwitch.tsx b/src/components/NSwitch.tsx
new file mode 100644
index 0000000..8f6f07d
--- /dev/null
+++ b/src/components/NSwitch.tsx
@@ -0,0 +1,30 @@
+import { View } from 'react-native';
+import { Label } from '@/components/ui/label';
+import { Switch } from '@/components/ui/switch';
+
+interface Props {
+ label?: string;
+ checked: boolean;
+ className?: string;
+ disabled?: boolean;
+ onChange: (checked: boolean) => void;
+}
+
+export const NSwitch = (props: Props) => {
+ const { label, className = '', disabled = false, onChange, checked = false } = props;
+
+ return (
+
+
+
+
+ );
+};
diff --git a/src/components/NText.tsx b/src/components/NText.tsx
index a5c17dc..df8213d 100644
--- a/src/components/NText.tsx
+++ b/src/components/NText.tsx
@@ -1,5 +1,16 @@
-import { Text } from 'react-native';
+import { Text, type TextProps } from 'react-native';
+import { cn } from '@/lib/utils';
-export const NText = (props: any) => {
- return Sample;
+interface Props extends TextProps {
+ className?: string;
+ children: string | React.ReactNode;
+}
+
+export const NText = (props: Props) => {
+ const { children, className, ...rest } = props;
+ return (
+
+ {children}
+
+ );
};
diff --git a/src/components/NTextarea.tsx b/src/components/NTextarea.tsx
new file mode 100644
index 0000000..016738a
--- /dev/null
+++ b/src/components/NTextarea.tsx
@@ -0,0 +1,33 @@
+import { type TextInputProps, View } from 'react-native';
+import { Textarea } from '@/components/ui/textarea';
+import { NText } from '@/components/NText';
+import { cn } from '@/lib/utils';
+
+interface Props extends TextInputProps {
+ value: string;
+ label?: string;
+ placeholder?: string;
+ disabled?: boolean;
+ className?: string;
+ onChangeText: (text: string) => void;
+}
+
+export const NTextarea = (props: Props) => {
+ const { value, label = '', placeholder = '', className = '', onChangeText, disabled = false, ...remaining } = props;
+
+ return (
+
+ {label && {label}}
+
+
+ );
+};
diff --git a/src/components/NTheme.tsx b/src/components/NTheme.tsx
new file mode 100644
index 0000000..d221afc
--- /dev/null
+++ b/src/components/NTheme.tsx
@@ -0,0 +1,65 @@
+import React, { useEffect } from 'react';
+import { View } from 'react-native';
+import { StatusBar } from 'expo-status-bar';
+import { vars } from 'nativewind';
+import { GestureHandlerRootView } from 'react-native-gesture-handler';
+import { useColorScheme } from '@/hooks/useColorScheme';
+import { BottomSheetModalProvider } from '@gorhom/bottom-sheet';
+import { ThemeProvider } from '@react-navigation/native';
+import { PortalHost } from '@rn-primitives/portal';
+import { NToast } from './NToast';
+import { THEMES } from '@/lib/utils';
+import { setAndroidNavigationBar } from '@/lib/android-navigation-bar';
+
+interface Props {
+ children: React.ReactNode;
+ theme: typeof THEMES;
+ themeColors: any;
+}
+
+export const NTheme = (props: Props) => {
+ const { theme, themeColors } = props;
+ const { colorScheme, setColorScheme, isDarkColorScheme } = useColorScheme();
+
+ useEffect(() => {
+ const finalTheme = theme ?? colorScheme ?? THEMES.light;
+ setColorScheme(finalTheme);
+ setAndroidNavigationBar(finalTheme, themeColors);
+ }, []);
+
+ useEffect(() => {
+ colorScheme && setAndroidNavigationBar(colorScheme, themeColors);
+ }, [colorScheme]);
+
+ const themeVars = {
+ light: vars({
+ '--color-primary': themeColors.light.colors.primary,
+ '--color-background': themeColors.light.colors.background,
+ '--color-card': themeColors.light.colors.card,
+ '--color-text': themeColors.light.colors.text,
+ '--color-muted': themeColors.light.colors.muted,
+ '--color-border': themeColors.light.colors.border
+ }),
+ dark: vars({
+ '--color-primary': themeColors.dark.colors.primary,
+ '--color-background': themeColors.dark.colors.background,
+ '--color-card': themeColors.dark.colors.card,
+ '--color-text': themeColors.dark.colors.text,
+ '--color-muted': themeColors.dark.colors.muted,
+ '--color-border': themeColors.dark.colors.border
+ })
+ } as any;
+
+ return (
+
+
+
+
+ {props.children}
+
+
+
+
+
+ );
+};
diff --git a/src/components/NToast.tsx b/src/components/NToast.tsx
new file mode 100644
index 0000000..fb307bf
--- /dev/null
+++ b/src/components/NToast.tsx
@@ -0,0 +1,65 @@
+import Toast, { BaseToast, ErrorToast, type ToastConfig } from 'react-native-toast-message';
+import { useColorScheme } from '@/hooks/useColorScheme';
+
+const toastConfig = (colors: any) => ({
+ success: (props: any) => (
+
+ ),
+ error: (props: any) => (
+
+ )
+});
+
+interface Props {
+ config?: ToastConfig;
+}
+
+export const NToast = (props: Props) => {
+ const { colors } = useColorScheme();
+ const { config = toastConfig(colors) } = props;
+
+ return ;
+};
+
+NToast.show = Toast.show;
+NToast.hide = Toast.hide;
+
+NToast.success = (message: string) =>
+ NToast.show({
+ type: 'success',
+ text2: message,
+ position: 'bottom',
+ bottomOffset: 50
+ });
+
+NToast.error = (message: string) =>
+ NToast.show({
+ type: 'error',
+ text2: message,
+ position: 'bottom',
+ bottomOffset: 50
+ });
diff --git a/src/components/NTooltip.tsx b/src/components/NTooltip.tsx
new file mode 100644
index 0000000..298e068
--- /dev/null
+++ b/src/components/NTooltip.tsx
@@ -0,0 +1,31 @@
+import * as React from 'react';
+import { useSafeAreaInsets } from 'react-native-safe-area-context';
+import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip';
+import { NText } from '@/components/NText';
+import { cn } from '@/lib/utils';
+
+interface Props {
+ children: React.ReactNode;
+ message: string;
+ className?: string;
+}
+
+export const NTooltip = (props: Props) => {
+ const { children, message, className } = props;
+ const insets = useSafeAreaInsets();
+ const contentInsets = {
+ top: insets.top,
+ bottom: insets.bottom,
+ left: 12,
+ right: 12
+ };
+
+ return (
+
+ {children}
+
+ {message}
+
+
+ );
+};
diff --git a/src/components/ui/accordion.tsx b/src/components/ui/accordion.tsx
new file mode 100644
index 0000000..ee4a2ad
--- /dev/null
+++ b/src/components/ui/accordion.tsx
@@ -0,0 +1,103 @@
+import * as React from 'react';
+import { Platform, Pressable, View } from 'react-native';
+import Animated, {
+ Extrapolation,
+ FadeIn,
+ FadeOutUp,
+ interpolate,
+ LayoutAnimationConfig,
+ LinearTransition,
+ useAnimatedStyle,
+ useDerivedValue,
+ withTiming
+} from 'react-native-reanimated';
+import { TextClassContext } from '@/components/ui/text';
+import { ChevronDown } from '@/lib/icons/ChevronDown';
+import { cn } from '@/lib/utils';
+import * as AccordionPrimitive from '@rn-primitives/accordion';
+
+const Accordion = React.forwardRef(({ children, ...props }, ref) => {
+ return (
+
+
+ {children}
+
+
+ );
+});
+
+Accordion.displayName = AccordionPrimitive.Root.displayName;
+
+const AccordionItem = React.forwardRef(({ className, value, ...props }, ref) => {
+ return (
+
+
+
+ );
+});
+AccordionItem.displayName = AccordionPrimitive.Item.displayName;
+
+const Trigger = Platform.OS === 'web' ? View : Pressable;
+
+const AccordionTrigger = React.forwardRef(
+ ({ className, children, ...props }, ref) => {
+ const { isExpanded } = AccordionPrimitive.useItemContext();
+
+ const progress = useDerivedValue(() => (isExpanded ? withTiming(1, { duration: 250 }) : withTiming(0, { duration: 200 })));
+ const chevronStyle = useAnimatedStyle(() => ({
+ transform: [{ rotate: `${progress.value * 180}deg` }],
+ opacity: interpolate(progress.value, [0, 1], [1, 0.8], Extrapolation.CLAMP)
+ }));
+
+ return (
+
+
+
+
+ <>{children}>
+
+
+
+
+
+
+
+ );
+ }
+);
+AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;
+
+const AccordionContent = React.forwardRef(
+ ({ className, children, ...props }, ref) => {
+ const { isExpanded } = AccordionPrimitive.useItemContext();
+ return (
+
+
+ {children}
+
+
+ );
+ }
+);
+
+function InnerContent({ children, className }: { children: React.ReactNode; className?: string }) {
+ if (Platform.OS === 'web') {
+ return {children};
+ }
+ return (
+
+ {children}
+
+ );
+}
+
+AccordionContent.displayName = AccordionPrimitive.Content.displayName;
+
+export { Accordion, AccordionContent, AccordionItem, AccordionTrigger };
diff --git a/src/components/ui/alert-dialog.tsx b/src/components/ui/alert-dialog.tsx
new file mode 100644
index 0000000..0edf4e2
--- /dev/null
+++ b/src/components/ui/alert-dialog.tsx
@@ -0,0 +1,125 @@
+import * as React from 'react';
+import { Platform, StyleSheet, View, type ViewProps } from 'react-native';
+import Animated, { FadeIn, FadeOut } from 'react-native-reanimated';
+import { buttonTextVariants, buttonVariants } from '@/components/ui/button';
+import { TextClassContext } from '@/components/ui/text';
+import { cn } from '@/lib/utils';
+import * as AlertDialogPrimitive from '@rn-primitives/alert-dialog';
+
+const AlertDialog = AlertDialogPrimitive.Root;
+
+const AlertDialogTrigger = AlertDialogPrimitive.Trigger;
+
+const AlertDialogPortal = AlertDialogPrimitive.Portal;
+
+const AlertDialogOverlayWeb = React.forwardRef(({ className, ...props }, ref) => {
+ const { open } = AlertDialogPrimitive.useRootContext();
+ return (
+
+ );
+});
+
+AlertDialogOverlayWeb.displayName = 'AlertDialogOverlayWeb';
+
+const AlertDialogOverlayNative = React.forwardRef(
+ ({ className, children, ...props }, ref) => {
+ return (
+
+
+ {children}
+
+
+ );
+ }
+);
+
+AlertDialogOverlayNative.displayName = 'AlertDialogOverlayNative';
+
+const AlertDialogOverlay = Platform.select({
+ web: AlertDialogOverlayWeb,
+ default: AlertDialogOverlayNative
+});
+
+const AlertDialogContent = React.forwardRef(
+ ({ className, portalHost, ...props }, ref) => {
+ const { open } = AlertDialogPrimitive.useRootContext();
+
+ return (
+
+
+
+
+
+ );
+ }
+);
+AlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;
+
+const AlertDialogHeader = ({ className, ...props }: ViewProps) => ;
+AlertDialogHeader.displayName = 'AlertDialogHeader';
+
+const AlertDialogFooter = ({ className, ...props }: ViewProps) => (
+
+);
+AlertDialogFooter.displayName = 'AlertDialogFooter';
+
+const AlertDialogTitle = React.forwardRef(({ className, ...props }, ref) => (
+
+));
+AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;
+
+const AlertDialogDescription = React.forwardRef(
+ ({ className, ...props }, ref) => (
+
+ )
+);
+AlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;
+
+const AlertDialogAction = React.forwardRef(({ className, ...props }, ref) => (
+
+
+
+));
+AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;
+
+const AlertDialogCancel = React.forwardRef(({ className, ...props }, ref) => (
+
+
+
+));
+AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;
+
+export {
+ AlertDialog,
+ AlertDialogAction,
+ AlertDialogCancel,
+ AlertDialogContent,
+ AlertDialogDescription,
+ AlertDialogFooter,
+ AlertDialogHeader,
+ AlertDialogOverlay,
+ AlertDialogPortal,
+ AlertDialogTitle,
+ AlertDialogTrigger
+};
diff --git a/src/components/ui/alert.tsx b/src/components/ui/alert.tsx
new file mode 100644
index 0000000..bcef772
--- /dev/null
+++ b/src/components/ui/alert.tsx
@@ -0,0 +1,52 @@
+import * as React from 'react';
+import { View, type ViewProps } from 'react-native';
+import { cva, type VariantProps } from 'class-variance-authority';
+import type { LucideIcon } from 'lucide-react-native';
+import { Text } from '@/components/ui/text';
+import { cn } from '@/lib/utils';
+import { useTheme } from '@react-navigation/native';
+
+const alertVariants = cva('relative bg-background w-full rounded-lg border border-border p-4 shadow shadow-foreground/10', {
+ variants: {
+ variant: {
+ default: '',
+ destructive: 'border-destructive'
+ }
+ },
+ defaultVariants: {
+ variant: 'default'
+ }
+});
+
+const Alert = React.forwardRef<
+ React.ElementRef,
+ ViewProps &
+ VariantProps & {
+ icon: LucideIcon;
+ iconSize?: number;
+ iconClassName?: string;
+ }
+>(({ className, variant, children, icon: Icon, iconSize = 16, iconClassName, ...props }, ref) => {
+ const { colors } = useTheme();
+ return (
+
+
+
+
+ {children}
+
+ );
+});
+Alert.displayName = 'Alert';
+
+const AlertTitle = React.forwardRef, React.ComponentPropsWithoutRef>(({ className, ...props }, ref) => (
+
+));
+AlertTitle.displayName = 'AlertTitle';
+
+const AlertDescription = React.forwardRef, React.ComponentPropsWithoutRef>(
+ ({ className, ...props }, ref) =>
+);
+AlertDescription.displayName = 'AlertDescription';
+
+export { Alert, AlertDescription, AlertTitle };
diff --git a/src/components/ui/button.tsx b/src/components/ui/button.tsx
new file mode 100644
index 0000000..3f3bece
--- /dev/null
+++ b/src/components/ui/button.tsx
@@ -0,0 +1,73 @@
+import * as React from 'react';
+import { Pressable } from 'react-native';
+import { cva, type VariantProps } from 'class-variance-authority';
+import { TextClassContext } from '@/components/ui/text';
+import { cn } from '@/lib/utils';
+
+const buttonVariants = cva(
+ 'group flex items-center justify-center rounded-md web:ring-offset-background web:transition-colors web:focus-visible:outline-none web:focus-visible:ring-2 web:focus-visible:ring-ring web:focus-visible:ring-offset-2',
+ {
+ variants: {
+ variant: {
+ default: 'bg-primary web:hover:opacity-90 active:opacity-90',
+ destructive: 'bg-destructive web:hover:opacity-90 active:opacity-90',
+ outline: 'border border-input bg-background web:hover:bg-accent web:hover:text-accent-foreground active:bg-accent',
+ secondary: 'bg-secondary web:hover:opacity-80 active:opacity-80',
+ ghost: 'web:hover:bg-accent web:hover:text-accent-foreground active:bg-accent',
+ link: 'web:underline-offset-4 web:hover:underline web:focus:underline'
+ },
+ size: {
+ default: 'h-10 px-4 py-2 native:h-12 native:px-5 native:py-3',
+ sm: 'h-9 rounded-md px-3',
+ lg: 'h-11 rounded-md px-8 native:h-14',
+ icon: 'h-10 w-10'
+ }
+ },
+ defaultVariants: {
+ variant: 'default',
+ size: 'default'
+ }
+ }
+);
+
+const buttonTextVariants = cva('web:whitespace-nowrap text-sm native:text-base font-medium text-foreground web:transition-colors', {
+ variants: {
+ variant: {
+ default: 'text-primary-foreground',
+ destructive: 'text-destructive-foreground',
+ outline: 'group-active:text-accent-foreground',
+ secondary: 'text-secondary-foreground group-active:text-secondary-foreground',
+ ghost: 'group-active:text-accent-foreground',
+ link: 'text-primary group-active:underline'
+ },
+ size: {
+ default: '',
+ sm: '',
+ lg: 'native:text-lg',
+ icon: ''
+ }
+ },
+ defaultVariants: {
+ variant: 'default',
+ size: 'default'
+ }
+});
+
+type ButtonProps = React.ComponentPropsWithoutRef & VariantProps;
+
+const Button = React.forwardRef, ButtonProps>(({ className, variant, size, ...props }, ref) => {
+ return (
+
+
+
+ );
+});
+Button.displayName = 'Button';
+
+export { Button, buttonTextVariants, buttonVariants };
+export type { ButtonProps };
diff --git a/src/components/ui/checkbox.tsx b/src/components/ui/checkbox.tsx
new file mode 100644
index 0000000..cd9de00
--- /dev/null
+++ b/src/components/ui/checkbox.tsx
@@ -0,0 +1,25 @@
+import * as React from 'react';
+import { Platform } from 'react-native';
+import { Check } from '@/lib/icons/Check';
+import { cn } from '@/lib/utils';
+import * as CheckboxPrimitive from '@rn-primitives/checkbox';
+
+const Checkbox = React.forwardRef(({ className, ...props }, ref) => {
+ return (
+
+
+
+
+
+ );
+});
+Checkbox.displayName = CheckboxPrimitive.Root.displayName;
+
+export { Checkbox };
diff --git a/src/components/ui/dialog.tsx b/src/components/ui/dialog.tsx
new file mode 100644
index 0000000..f67ed58
--- /dev/null
+++ b/src/components/ui/dialog.tsx
@@ -0,0 +1,107 @@
+import * as React from 'react';
+import { Platform, StyleSheet, View, type ViewProps } from 'react-native';
+import Animated, { FadeIn, FadeOut } from 'react-native-reanimated';
+import { X } from '@/lib/icons/X';
+import { cn } from '@/lib/utils';
+import * as DialogPrimitive from '@rn-primitives/dialog';
+
+const Dialog = DialogPrimitive.Root;
+
+const DialogTrigger = DialogPrimitive.Trigger;
+
+const DialogPortal = DialogPrimitive.Portal;
+
+const DialogClose = DialogPrimitive.Close;
+
+const DialogOverlayWeb = React.forwardRef(({ className, ...props }, ref) => {
+ const { open } = DialogPrimitive.useRootContext();
+ return (
+
+ );
+});
+
+DialogOverlayWeb.displayName = 'DialogOverlayWeb';
+
+const DialogOverlayNative = React.forwardRef(({ className, children, ...props }, ref) => {
+ return (
+
+
+ <>{children}>
+
+
+ );
+});
+
+DialogOverlayNative.displayName = 'DialogOverlayNative';
+
+const DialogOverlay = Platform.select({
+ web: DialogOverlayWeb,
+ default: DialogOverlayNative
+});
+
+const DialogContent = React.forwardRef(
+ ({ className, children, portalHost, ...props }, ref) => {
+ const { open } = DialogPrimitive.useRootContext();
+ return (
+
+
+
+ {children}
+
+
+
+
+
+
+ );
+ }
+);
+DialogContent.displayName = DialogPrimitive.Content.displayName;
+
+const DialogHeader = ({ className, ...props }: ViewProps) => (
+
+);
+DialogHeader.displayName = 'DialogHeader';
+
+const DialogFooter = ({ className, ...props }: ViewProps) => (
+
+);
+DialogFooter.displayName = 'DialogFooter';
+
+const DialogTitle = React.forwardRef(({ className, ...props }, ref) => (
+
+));
+DialogTitle.displayName = DialogPrimitive.Title.displayName;
+
+const DialogDescription = React.forwardRef(({ className, ...props }, ref) => (
+
+));
+DialogDescription.displayName = DialogPrimitive.Description.displayName;
+
+export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger };
diff --git a/src/components/ui/input.tsx b/src/components/ui/input.tsx
new file mode 100644
index 0000000..b7b285e
--- /dev/null
+++ b/src/components/ui/input.tsx
@@ -0,0 +1,22 @@
+import * as React from 'react';
+import { TextInput, type TextInputProps } from 'react-native';
+import { cn } from '@/lib/utils';
+
+const Input = React.forwardRef, TextInputProps>(({ className, placeholderClassName, ...props }, ref) => {
+ return (
+
+ );
+});
+
+Input.displayName = 'Input';
+
+export { Input };
diff --git a/src/components/ui/label.tsx b/src/components/ui/label.tsx
new file mode 100644
index 0000000..497e846
--- /dev/null
+++ b/src/components/ui/label.tsx
@@ -0,0 +1,21 @@
+import * as React from 'react';
+import { cn } from '@/lib/utils';
+import * as LabelPrimitive from '@rn-primitives/label';
+
+const Label = React.forwardRef(
+ ({ className, onPress, onLongPress, onPressIn, onPressOut, ...props }, ref) => (
+
+
+
+ )
+);
+Label.displayName = LabelPrimitive.Root.displayName;
+
+export { Label };
diff --git a/src/components/ui/popover.tsx b/src/components/ui/popover.tsx
new file mode 100644
index 0000000..43fc168
--- /dev/null
+++ b/src/components/ui/popover.tsx
@@ -0,0 +1,38 @@
+import * as React from 'react';
+import { Platform, StyleSheet } from 'react-native';
+import Animated, { FadeIn, FadeOut } from 'react-native-reanimated';
+import { TextClassContext } from '@/components/ui/text';
+import { cn } from '@/lib/utils';
+import * as PopoverPrimitive from '@rn-primitives/popover';
+
+const Popover = PopoverPrimitive.Root;
+
+const PopoverTrigger = PopoverPrimitive.Trigger;
+
+const PopoverContent = React.forwardRef(
+ ({ className, align = 'center', sideOffset = 4, portalHost, ...props }, ref) => {
+ return (
+
+
+
+
+
+
+
+
+
+ );
+ }
+);
+PopoverContent.displayName = PopoverPrimitive.Content.displayName;
+
+export { Popover, PopoverContent, PopoverTrigger };
diff --git a/src/components/ui/progress.tsx b/src/components/ui/progress.tsx
new file mode 100644
index 0000000..5eebd8f
--- /dev/null
+++ b/src/components/ui/progress.tsx
@@ -0,0 +1,47 @@
+import * as React from 'react';
+import { Platform, View } from 'react-native';
+import Animated, { Extrapolation, interpolate, useAnimatedStyle, useDerivedValue, withSpring } from 'react-native-reanimated';
+import { cn } from '@/lib/utils';
+import * as ProgressPrimitive from '@rn-primitives/progress';
+
+const Progress = React.forwardRef<
+ ProgressPrimitive.RootRef,
+ ProgressPrimitive.RootProps & {
+ indicatorClassName?: string;
+ }
+>(({ className, value, indicatorClassName, ...props }, ref) => {
+ return (
+
+
+
+ );
+});
+Progress.displayName = ProgressPrimitive.Root.displayName;
+
+export { Progress };
+
+function Indicator({ value, className }: { value: number | undefined | null; className?: string }) {
+ const progress = useDerivedValue(() => value ?? 0);
+
+ const indicator = useAnimatedStyle(() => {
+ return {
+ width: withSpring(`${interpolate(progress.value, [0, 100], [1, 100], Extrapolation.CLAMP)}%`, { overshootClamping: true })
+ };
+ });
+
+ if (Platform.OS === 'web') {
+ return (
+
+
+
+ );
+ }
+
+ return (
+
+
+
+ );
+}
diff --git a/src/components/ui/radio-group.tsx b/src/components/ui/radio-group.tsx
new file mode 100644
index 0000000..f15cb5e
--- /dev/null
+++ b/src/components/ui/radio-group.tsx
@@ -0,0 +1,29 @@
+import * as React from 'react';
+import { View } from 'react-native';
+import { cn } from '@/lib/utils';
+import * as RadioGroupPrimitive from '@rn-primitives/radio-group';
+
+const RadioGroup = React.forwardRef(({ className, ...props }, ref) => {
+ return ;
+});
+RadioGroup.displayName = RadioGroupPrimitive.Root.displayName;
+
+const RadioGroupItem = React.forwardRef(({ className, ...props }, ref) => {
+ return (
+
+
+
+
+
+ );
+});
+RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;
+
+export { RadioGroup, RadioGroupItem };
diff --git a/src/components/ui/select.tsx b/src/components/ui/select.tsx
new file mode 100644
index 0000000..fb6c70b
--- /dev/null
+++ b/src/components/ui/select.tsx
@@ -0,0 +1,143 @@
+import * as React from 'react';
+import { Platform, StyleSheet, View } from 'react-native';
+import Animated, { FadeIn, FadeOut } from 'react-native-reanimated';
+import { Check } from '@/lib/icons/Check';
+import { ChevronDown } from '@/lib/icons/ChevronDown';
+import { ChevronUp } from '@/lib/icons/ChevronUp';
+import { cn } from '@/lib/utils';
+import * as SelectPrimitive from '@rn-primitives/select';
+
+type Option = SelectPrimitive.Option;
+
+const Select = SelectPrimitive.Root;
+
+const SelectGroup = SelectPrimitive.Group;
+
+const SelectValue = SelectPrimitive.Value;
+
+const SelectTrigger = React.forwardRef(({ className, children, ...props }, ref) => (
+ span]:line-clamp-1',
+ props.disabled && 'web:cursor-not-allowed opacity-50',
+ className
+ )}
+ {...props}>
+ <>{children}>
+
+
+));
+SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
+
+/**
+ * Platform: WEB ONLY
+ */
+const SelectScrollUpButton = ({ className, ...props }: SelectPrimitive.ScrollUpButtonProps) => {
+ if (Platform.OS !== 'web') {
+ return null;
+ }
+ return (
+
+
+
+ );
+};
+
+/**
+ * Platform: WEB ONLY
+ */
+const SelectScrollDownButton = ({ className, ...props }: SelectPrimitive.ScrollDownButtonProps) => {
+ if (Platform.OS !== 'web') {
+ return null;
+ }
+ return (
+
+
+
+ );
+};
+
+const SelectContent = React.forwardRef(
+ ({ className, children, position = 'popper', portalHost, ...props }, ref) => {
+ const { open } = SelectPrimitive.useRootContext();
+
+ return (
+
+
+
+
+
+
+ {children}
+
+
+
+
+
+
+ );
+ }
+);
+SelectContent.displayName = SelectPrimitive.Content.displayName;
+
+const SelectLabel = React.forwardRef(({ className, ...props }, ref) => (
+
+));
+SelectLabel.displayName = SelectPrimitive.Label.displayName;
+
+const SelectItem = React.forwardRef(({ className, children, ...props }, ref) => (
+
+
+
+
+
+
+
+
+));
+SelectItem.displayName = SelectPrimitive.Item.displayName;
+
+const SelectSeparator = React.forwardRef(({ className, ...props }, ref) => (
+
+));
+SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
+
+export {
+ Select,
+ SelectContent,
+ SelectGroup,
+ SelectItem,
+ SelectLabel,
+ SelectScrollDownButton,
+ SelectScrollUpButton,
+ SelectSeparator,
+ SelectTrigger,
+ SelectValue,
+ type Option
+};
diff --git a/src/components/ui/separator.tsx b/src/components/ui/separator.tsx
new file mode 100644
index 0000000..92c9dd2
--- /dev/null
+++ b/src/components/ui/separator.tsx
@@ -0,0 +1,18 @@
+import * as React from 'react';
+import { cn } from '@/lib/utils';
+import * as SeparatorPrimitive from '@rn-primitives/separator';
+
+const Separator = React.forwardRef(
+ ({ className, orientation = 'horizontal', decorative = true, ...props }, ref) => (
+
+ )
+);
+Separator.displayName = SeparatorPrimitive.Root.displayName;
+
+export { Separator };
diff --git a/src/components/ui/skeleton.tsx b/src/components/ui/skeleton.tsx
new file mode 100644
index 0000000..3b9bd9e
--- /dev/null
+++ b/src/components/ui/skeleton.tsx
@@ -0,0 +1,21 @@
+import * as React from 'react';
+import Animated, { useAnimatedStyle, useSharedValue, withRepeat, withSequence, withTiming } from 'react-native-reanimated';
+import { cn } from '@/lib/utils';
+
+const duration = 1000;
+
+function Skeleton({ className, ...props }: Omit, 'style'>) {
+ const sv = useSharedValue(1);
+
+ React.useEffect(() => {
+ sv.value = withRepeat(withSequence(withTiming(0.5, { duration }), withTiming(1, { duration })), -1);
+ }, []);
+
+ const style = useAnimatedStyle(() => ({
+ opacity: sv.value
+ }));
+
+ return ;
+}
+
+export { Skeleton };
diff --git a/src/components/ui/switch.tsx b/src/components/ui/switch.tsx
new file mode 100644
index 0000000..b126866
--- /dev/null
+++ b/src/components/ui/switch.tsx
@@ -0,0 +1,64 @@
+import * as React from 'react';
+import { Platform } from 'react-native';
+import Animated, { interpolateColor, useAnimatedStyle, useDerivedValue, withTiming } from 'react-native-reanimated';
+import { useColorScheme } from '@/hooks/useColorScheme';
+import { cn } from '@/lib/utils';
+import * as SwitchPrimitives from '@rn-primitives/switch';
+
+const SwitchWeb = React.forwardRef(({ className, ...props }, ref) => (
+
+
+
+));
+
+SwitchWeb.displayName = 'SwitchWeb';
+
+const SwitchNative = React.forwardRef(({ className, ...props }, ref) => {
+ const { colors } = useColorScheme();
+ const translateX = useDerivedValue(() => (props.checked ? 18 : 0));
+ const animatedRootStyle = useAnimatedStyle(() => {
+ return {
+ backgroundColor: interpolateColor(translateX.value, [0, 18], [colors.card, colors.primary])
+ };
+ });
+ const animatedThumbStyle = useAnimatedStyle(() => ({
+ transform: [{ translateX: withTiming(translateX.value, { duration: 200 }) }]
+ }));
+ return (
+
+
+
+
+
+
+
+ );
+});
+SwitchNative.displayName = 'SwitchNative';
+
+const Switch = Platform.select({
+ web: SwitchWeb,
+ default: SwitchNative
+});
+
+export { Switch };
diff --git a/src/components/ui/text.tsx b/src/components/ui/text.tsx
new file mode 100644
index 0000000..87f27c4
--- /dev/null
+++ b/src/components/ui/text.tsx
@@ -0,0 +1,16 @@
+import * as React from 'react';
+import { Text as RNText } from 'react-native';
+import { cn } from '@/lib/utils';
+import * as Slot from '@rn-primitives/slot';
+import type { SlottableTextProps, TextRef } from '@rn-primitives/types';
+
+const TextClassContext = React.createContext(undefined);
+
+const Text = React.forwardRef(({ className, asChild = false, ...props }, ref) => {
+ const textClass = React.useContext(TextClassContext);
+ const Component = asChild ? Slot.Text : RNText;
+ return ;
+});
+Text.displayName = 'Text';
+
+export { Text, TextClassContext };
diff --git a/src/components/ui/textarea.tsx b/src/components/ui/textarea.tsx
new file mode 100644
index 0000000..08a7863
--- /dev/null
+++ b/src/components/ui/textarea.tsx
@@ -0,0 +1,27 @@
+import * as React from 'react';
+import { TextInput, type TextInputProps } from 'react-native';
+import { cn } from '@/lib/utils';
+
+const Textarea = React.forwardRef, TextInputProps>(
+ ({ className, multiline = true, numberOfLines = 4, placeholderClassName, ...props }, ref) => {
+ return (
+
+ );
+ }
+);
+
+Textarea.displayName = 'Textarea';
+
+export { Textarea };
diff --git a/src/components/ui/tooltip.tsx b/src/components/ui/tooltip.tsx
new file mode 100644
index 0000000..3820fba
--- /dev/null
+++ b/src/components/ui/tooltip.tsx
@@ -0,0 +1,36 @@
+import * as React from 'react';
+import { Platform, StyleSheet } from 'react-native';
+import Animated, { FadeIn, FadeOut } from 'react-native-reanimated';
+import { TextClassContext } from '@/components/ui/text';
+import { cn } from '@/lib/utils';
+import * as TooltipPrimitive from '@rn-primitives/tooltip';
+
+const Tooltip = TooltipPrimitive.Root;
+const TooltipTrigger = TooltipPrimitive.Trigger;
+
+const TooltipContent = React.forwardRef(
+ ({ className, sideOffset = 4, portalHost, ...props }, ref) => (
+
+
+
+
+
+
+
+
+
+ )
+);
+TooltipContent.displayName = TooltipPrimitive.Content.displayName;
+
+export { Tooltip, TooltipContent, TooltipTrigger };
diff --git a/src/hooks/useColorScheme.tsx b/src/hooks/useColorScheme.tsx
new file mode 100644
index 0000000..653e404
--- /dev/null
+++ b/src/hooks/useColorScheme.tsx
@@ -0,0 +1,16 @@
+import { useColorScheme as useNativewindColorScheme } from 'nativewind';
+import { useTheme } from '@react-navigation/native';
+import { THEMES } from '@/lib/utils';
+
+export function useColorScheme() {
+ const theme: any = useTheme();
+ const { colorScheme, setColorScheme, toggleColorScheme } = useNativewindColorScheme();
+
+ return {
+ colorScheme,
+ setColorScheme,
+ toggleColorScheme,
+ colors: theme.colors,
+ isDarkColorScheme: colorScheme === THEMES.dark
+ };
+}
diff --git a/src/index.tsx b/src/index.tsx
index a2d96d1..482fc29 100644
--- a/src/index.tsx
+++ b/src/index.tsx
@@ -1 +1,40 @@
+// Components
+export * from './components/NAccordion';
+export * from './components/NAlert';
+export * from './components/NButton';
+export * from './components/NButtonGroup';
+export * from './components/NCard';
+export * from './components/NCheck';
+export * from './components/NColorPicker';
+export * from './components/NConfirm';
+export * from './components/NDatePicker';
+export * from './components/NDialog';
+export * from './components/NDivider';
+export * from './components/NInput';
+export * from './components/NLinkify';
+export * from './components/NLoading';
+export * from './components/NMenuItem';
+export * from './components/NPopover';
+export * from './components/NPress';
+export * from './components/NProgress';
+export * from './components/NRadio';
+export * from './components/NRequired';
+export * from './components/NSelect';
+export * from './components/NSheet';
+export * from './components/NSkeleton';
+export * from './components/NSwitch';
export * from './components/NText';
+export * from './components/NTextarea';
+export * from './components/NTheme';
+export * from './components/NToast';
+export * from './components/NTooltip';
+
+// Hooks
+export * from './hooks/useColorScheme';
+
+// Lib
+export * from './lib/android-navigation-bar';
+export * from './lib/icons/iconWithClassName';
+export * from './lib/icons/MoonStar';
+export * from './lib/icons/Sun';
+export * from './lib/utils';
diff --git a/src/lib/android-navigation-bar.ts b/src/lib/android-navigation-bar.ts
new file mode 100644
index 0000000..3d270d4
--- /dev/null
+++ b/src/lib/android-navigation-bar.ts
@@ -0,0 +1,9 @@
+import { Platform } from 'react-native';
+import * as NavigationBar from 'expo-navigation-bar';
+import { THEMES } from './utils';
+
+export async function setAndroidNavigationBar(theme: string, themeColors: any) {
+ if (Platform.OS !== 'android') return;
+ await NavigationBar.setButtonStyleAsync(theme === THEMES.dark ? THEMES.light : THEMES.dark);
+ await NavigationBar.setBackgroundColorAsync(theme === THEMES.dark ? themeColors.dark.colors.background : themeColors.light.colors.background);
+}
diff --git a/src/lib/icons/AlertCircle.tsx b/src/lib/icons/AlertCircle.tsx
new file mode 100644
index 0000000..a55ef0a
--- /dev/null
+++ b/src/lib/icons/AlertCircle.tsx
@@ -0,0 +1,5 @@
+import { AlertCircle } from 'lucide-react-native';
+import { iconWithClassName } from './iconWithClassName';
+
+iconWithClassName(AlertCircle);
+export { AlertCircle };
diff --git a/src/lib/icons/Calender.tsx b/src/lib/icons/Calender.tsx
new file mode 100644
index 0000000..5d7884b
--- /dev/null
+++ b/src/lib/icons/Calender.tsx
@@ -0,0 +1,5 @@
+import { Calendar } from 'lucide-react-native';
+import { iconWithClassName } from './iconWithClassName';
+
+iconWithClassName(Calendar);
+export { Calendar };
diff --git a/src/lib/icons/Check.tsx b/src/lib/icons/Check.tsx
new file mode 100644
index 0000000..a1fe596
--- /dev/null
+++ b/src/lib/icons/Check.tsx
@@ -0,0 +1,5 @@
+import { Check } from 'lucide-react-native';
+import { iconWithClassName } from './iconWithClassName';
+
+iconWithClassName(Check);
+export { Check };
diff --git a/src/lib/icons/ChevronDown.tsx b/src/lib/icons/ChevronDown.tsx
new file mode 100644
index 0000000..e35839e
--- /dev/null
+++ b/src/lib/icons/ChevronDown.tsx
@@ -0,0 +1,5 @@
+import { ChevronDown } from 'lucide-react-native';
+import { iconWithClassName } from './iconWithClassName';
+
+iconWithClassName(ChevronDown);
+export { ChevronDown };
diff --git a/src/lib/icons/ChevronUp.tsx b/src/lib/icons/ChevronUp.tsx
new file mode 100644
index 0000000..e6f2b5b
--- /dev/null
+++ b/src/lib/icons/ChevronUp.tsx
@@ -0,0 +1,5 @@
+import { ChevronUp } from 'lucide-react-native';
+import { iconWithClassName } from './iconWithClassName';
+
+iconWithClassName(ChevronUp);
+export { ChevronUp };
diff --git a/src/lib/icons/MoonStar.tsx b/src/lib/icons/MoonStar.tsx
new file mode 100644
index 0000000..872824e
--- /dev/null
+++ b/src/lib/icons/MoonStar.tsx
@@ -0,0 +1,5 @@
+import { MoonStar } from 'lucide-react-native';
+import { iconWithClassName } from './iconWithClassName';
+
+iconWithClassName(MoonStar);
+export { MoonStar };
diff --git a/src/lib/icons/Sun.tsx b/src/lib/icons/Sun.tsx
new file mode 100644
index 0000000..f43f30f
--- /dev/null
+++ b/src/lib/icons/Sun.tsx
@@ -0,0 +1,5 @@
+import { Sun } from 'lucide-react-native';
+import { iconWithClassName } from './iconWithClassName';
+
+iconWithClassName(Sun);
+export { Sun };
diff --git a/src/lib/icons/X.tsx b/src/lib/icons/X.tsx
new file mode 100644
index 0000000..01c367c
--- /dev/null
+++ b/src/lib/icons/X.tsx
@@ -0,0 +1,5 @@
+import { X } from 'lucide-react-native';
+import { iconWithClassName } from './iconWithClassName';
+
+iconWithClassName(X);
+export { X };
diff --git a/src/lib/icons/iconWithClassName.ts b/src/lib/icons/iconWithClassName.ts
new file mode 100644
index 0000000..bec2227
--- /dev/null
+++ b/src/lib/icons/iconWithClassName.ts
@@ -0,0 +1,14 @@
+import type { LucideIcon } from 'lucide-react-native';
+import { cssInterop } from 'nativewind';
+
+export function iconWithClassName(icon: LucideIcon) {
+ cssInterop(icon, {
+ className: {
+ target: 'style',
+ nativeStyleToProp: {
+ color: true,
+ opacity: true
+ }
+ }
+ } as any);
+}
diff --git a/src/lib/utils.ts b/src/lib/utils.ts
new file mode 100644
index 0000000..43de68c
--- /dev/null
+++ b/src/lib/utils.ts
@@ -0,0 +1,11 @@
+import { type ClassValue, clsx } from 'clsx';
+import { twMerge } from 'tailwind-merge';
+
+export function cn(...inputs: ClassValue[]) {
+ return twMerge(clsx(inputs));
+}
+
+export const THEMES = {
+ light: 'light',
+ dark: 'dark'
+} as any;
diff --git a/yarn.lock b/yarn.lock
index 07f6357..35beaba 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1850,6 +1850,15 @@ __metadata:
languageName: node
linkType: hard
+"@egjs/hammerjs@npm:^2.0.17":
+ version: 2.0.17
+ resolution: "@egjs/hammerjs@npm:2.0.17"
+ dependencies:
+ "@types/hammerjs": ^2.0.36
+ checksum: 8945137cec5837edd70af3f2e0ea621543eb0aa3b667e6269ec6485350f4d120c2434b37c7c30b1cf42a65275dd61c1f24626749c616696d3956ac0c008c4766
+ languageName: node
+ linkType: hard
+
"@eslint-community/eslint-utils@npm:^4.2.0":
version: 4.4.1
resolution: "@eslint-community/eslint-utils@npm:4.4.1"
@@ -2291,6 +2300,78 @@ __metadata:
languageName: node
linkType: hard
+"@floating-ui/core@npm:^1.6.0":
+ version: 1.6.9
+ resolution: "@floating-ui/core@npm:1.6.9"
+ dependencies:
+ "@floating-ui/utils": ^0.2.9
+ checksum: 21cbcac72a40172399570dedf0eb96e4f24b0d829980160e8d14edf08c2955ac6feffb7b94e1530c78fb7944635e52669c9257ad08570e0295efead3b5a9af91
+ languageName: node
+ linkType: hard
+
+"@floating-ui/dom@npm:^1.0.0":
+ version: 1.6.13
+ resolution: "@floating-ui/dom@npm:1.6.13"
+ dependencies:
+ "@floating-ui/core": ^1.6.0
+ "@floating-ui/utils": ^0.2.9
+ checksum: eabab9d860d3b5beab1c2d6936287efc4d9ab352de99062380589ef62870d59e8730397489c34a96657e128498001b5672330c4a9da0159fe8b2401ac59fe314
+ languageName: node
+ linkType: hard
+
+"@floating-ui/react-dom@npm:^2.0.0":
+ version: 2.1.2
+ resolution: "@floating-ui/react-dom@npm:2.1.2"
+ dependencies:
+ "@floating-ui/dom": ^1.0.0
+ peerDependencies:
+ react: ">=16.8.0"
+ react-dom: ">=16.8.0"
+ checksum: 25bb031686e23062ed4222a8946e76b3f9021d40a48437bd747233c4964a766204b8a55f34fa8b259839af96e60db7c6e3714d81f1de06914294f90e86ffbc48
+ languageName: node
+ linkType: hard
+
+"@floating-ui/utils@npm:^0.2.9":
+ version: 0.2.9
+ resolution: "@floating-ui/utils@npm:0.2.9"
+ checksum: d518b80cec5a323e54a069a1dd99a20f8221a4853ed98ac16c75275a0cc22f75de4f8ac5b121b4f8990bd45da7ad1fb015b9a1e4bac27bb1cd62444af84e9784
+ languageName: node
+ linkType: hard
+
+"@gorhom/bottom-sheet@npm:^5.1.1":
+ version: 5.1.1
+ resolution: "@gorhom/bottom-sheet@npm:5.1.1"
+ dependencies:
+ "@gorhom/portal": 1.0.14
+ invariant: ^2.2.4
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-native": "*"
+ react: "*"
+ react-native: "*"
+ react-native-gesture-handler: ">=2.16.1"
+ react-native-reanimated: ">=3.16.0"
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-native":
+ optional: true
+ checksum: 9c5c7aeb1c41ad5e887b73330b53a305255bfde82c104e1c7d50eb692d86932bb54a8c79cd65fc52a46437f21471ce71faeb6dc64af89697580675144135f994
+ languageName: node
+ linkType: hard
+
+"@gorhom/portal@npm:1.0.14":
+ version: 1.0.14
+ resolution: "@gorhom/portal@npm:1.0.14"
+ dependencies:
+ nanoid: ^3.3.1
+ peerDependencies:
+ react: "*"
+ react-native: "*"
+ checksum: 227bb96a2db854ab29bb9da8d4f3823c7f7448358de459709dd1b78522110da564c9a8734c6bc7d7153ed7c99320e0fb5d60b420c2ebb75ecaf2f0d757f410f9
+ languageName: node
+ linkType: hard
+
"@humanwhocodes/config-array@npm:^0.13.0":
version: 0.13.0
resolution: "@humanwhocodes/config-array@npm:0.13.0"
@@ -2921,206 +3002,993 @@ __metadata:
languageName: node
linkType: hard
-"@react-native/assets-registry@npm:0.76.7":
- version: 0.76.7
- resolution: "@react-native/assets-registry@npm:0.76.7"
- checksum: f197582ad2e2964f5a6afa5a8945b368b7a6fe05cd9fac78e4832ad969cd8b5ad72e048f0c652ce5b4dd1ed7bf28e36254e49d3b7317b16d4481600482259048
+"@radix-ui/number@npm:1.1.0":
+ version: 1.1.0
+ resolution: "@radix-ui/number@npm:1.1.0"
+ checksum: e4fc7483c19141c25dbaf3d140b75e2b7fed0bfa3ad969f4441f0266ed34b35413f57a35df7b025e2a977152bbe6131849d3444fc6f15a73345dfc2bfdc105fa
languageName: node
linkType: hard
-"@react-native/babel-plugin-codegen@npm:0.76.7":
- version: 0.76.7
- resolution: "@react-native/babel-plugin-codegen@npm:0.76.7"
- dependencies:
- "@react-native/codegen": 0.76.7
- checksum: d19f45cc0d3f1de0cbe9fe4b3623d008284957829d7d471adf6c881f2450a3f40ecc152361185a076403419f19f53094f12624915d41fa79a9f214afdaf85e60
+"@radix-ui/primitive@npm:1.1.1":
+ version: 1.1.1
+ resolution: "@radix-ui/primitive@npm:1.1.1"
+ checksum: d7e819177590108b74139809d52ec043c0962ae3513e947998be575fb13639c5c1c091896ddcf1d6a22a777d44ade59d22c2019ce9099607fc62a5de09c59707
languageName: node
linkType: hard
-"@react-native/babel-preset@npm:0.76.7":
- version: 0.76.7
- resolution: "@react-native/babel-preset@npm:0.76.7"
- dependencies:
- "@babel/core": ^7.25.2
- "@babel/plugin-proposal-export-default-from": ^7.24.7
- "@babel/plugin-syntax-dynamic-import": ^7.8.3
- "@babel/plugin-syntax-export-default-from": ^7.24.7
- "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3
- "@babel/plugin-syntax-optional-chaining": ^7.8.3
- "@babel/plugin-transform-arrow-functions": ^7.24.7
- "@babel/plugin-transform-async-generator-functions": ^7.25.4
- "@babel/plugin-transform-async-to-generator": ^7.24.7
- "@babel/plugin-transform-block-scoping": ^7.25.0
- "@babel/plugin-transform-class-properties": ^7.25.4
- "@babel/plugin-transform-classes": ^7.25.4
- "@babel/plugin-transform-computed-properties": ^7.24.7
- "@babel/plugin-transform-destructuring": ^7.24.8
- "@babel/plugin-transform-flow-strip-types": ^7.25.2
- "@babel/plugin-transform-for-of": ^7.24.7
- "@babel/plugin-transform-function-name": ^7.25.1
- "@babel/plugin-transform-literals": ^7.25.2
- "@babel/plugin-transform-logical-assignment-operators": ^7.24.7
- "@babel/plugin-transform-modules-commonjs": ^7.24.8
- "@babel/plugin-transform-named-capturing-groups-regex": ^7.24.7
- "@babel/plugin-transform-nullish-coalescing-operator": ^7.24.7
- "@babel/plugin-transform-numeric-separator": ^7.24.7
- "@babel/plugin-transform-object-rest-spread": ^7.24.7
- "@babel/plugin-transform-optional-catch-binding": ^7.24.7
- "@babel/plugin-transform-optional-chaining": ^7.24.8
- "@babel/plugin-transform-parameters": ^7.24.7
- "@babel/plugin-transform-private-methods": ^7.24.7
- "@babel/plugin-transform-private-property-in-object": ^7.24.7
- "@babel/plugin-transform-react-display-name": ^7.24.7
- "@babel/plugin-transform-react-jsx": ^7.25.2
- "@babel/plugin-transform-react-jsx-self": ^7.24.7
- "@babel/plugin-transform-react-jsx-source": ^7.24.7
- "@babel/plugin-transform-regenerator": ^7.24.7
- "@babel/plugin-transform-runtime": ^7.24.7
- "@babel/plugin-transform-shorthand-properties": ^7.24.7
- "@babel/plugin-transform-spread": ^7.24.7
- "@babel/plugin-transform-sticky-regex": ^7.24.7
- "@babel/plugin-transform-typescript": ^7.25.2
- "@babel/plugin-transform-unicode-regex": ^7.24.7
- "@babel/template": ^7.25.0
- "@react-native/babel-plugin-codegen": 0.76.7
- babel-plugin-syntax-hermes-parser: ^0.25.1
- babel-plugin-transform-flow-enums: ^0.0.2
- react-refresh: ^0.14.0
+"@radix-ui/react-accordion@npm:^1.2.0":
+ version: 1.2.3
+ resolution: "@radix-ui/react-accordion@npm:1.2.3"
+ dependencies:
+ "@radix-ui/primitive": 1.1.1
+ "@radix-ui/react-collapsible": 1.1.3
+ "@radix-ui/react-collection": 1.1.2
+ "@radix-ui/react-compose-refs": 1.1.1
+ "@radix-ui/react-context": 1.1.1
+ "@radix-ui/react-direction": 1.1.0
+ "@radix-ui/react-id": 1.1.0
+ "@radix-ui/react-primitive": 2.0.2
+ "@radix-ui/react-use-controllable-state": 1.1.0
peerDependencies:
- "@babel/core": "*"
- checksum: 29b48f80d32839d03f17d938e3f2b34f213d6ac3155de9556016132d4e3b9d55ce2b3d18fcd596ba6507f6bbe64174a76c5e94cc3737b39f00467c455de6b2d4
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+ checksum: ea7873d9b796b0433f3b0091f36aa97c7a9fb29fa5f9ccb43389d9b59d35f43b8b7a41b9e7419c78897ccac67833a88156b66a89fb37aaaea5d2d182c6804ea0
languageName: node
linkType: hard
-"@react-native/codegen@npm:0.76.7":
- version: 0.76.7
- resolution: "@react-native/codegen@npm:0.76.7"
- dependencies:
- "@babel/parser": ^7.25.3
- glob: ^7.1.1
- hermes-parser: 0.23.1
- invariant: ^2.2.4
- jscodeshift: ^0.14.0
- mkdirp: ^0.5.1
- nullthrows: ^1.1.1
- yargs: ^17.6.2
+"@radix-ui/react-alert-dialog@npm:^1.1.1":
+ version: 1.1.6
+ resolution: "@radix-ui/react-alert-dialog@npm:1.1.6"
+ dependencies:
+ "@radix-ui/primitive": 1.1.1
+ "@radix-ui/react-compose-refs": 1.1.1
+ "@radix-ui/react-context": 1.1.1
+ "@radix-ui/react-dialog": 1.1.6
+ "@radix-ui/react-primitive": 2.0.2
+ "@radix-ui/react-slot": 1.1.2
peerDependencies:
- "@babel/preset-env": ^7.1.6
- checksum: f5f332c334b0bae892c7f3986c87f20c052b2b1ca9fc927fc91db012e1f062d8feaa01dc2e09d64454ce4e36dc0571d73ae3cb3a2d2aeba485ddc0c3d0e80aa1
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+ checksum: 02b6c429f49b44aacb98d39812630c6fcb6196d1d696aa3bf9411b6bee23ae01e7a3bed317bbea38991c24ad673f1e0993a97c01b6f602d461b76a49bf2840b5
languageName: node
linkType: hard
-"@react-native/community-cli-plugin@npm:0.76.7":
- version: 0.76.7
- resolution: "@react-native/community-cli-plugin@npm:0.76.7"
+"@radix-ui/react-arrow@npm:1.1.2":
+ version: 1.1.2
+ resolution: "@radix-ui/react-arrow@npm:1.1.2"
dependencies:
- "@react-native/dev-middleware": 0.76.7
- "@react-native/metro-babel-transformer": 0.76.7
- chalk: ^4.0.0
- execa: ^5.1.1
- invariant: ^2.2.4
- metro: ^0.81.0
- metro-config: ^0.81.0
- metro-core: ^0.81.0
- node-fetch: ^2.2.0
- readline: ^1.3.0
- semver: ^7.1.3
+ "@radix-ui/react-primitive": 2.0.2
peerDependencies:
- "@react-native-community/cli-server-api": "*"
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
- "@react-native-community/cli-server-api":
+ "@types/react":
optional: true
- checksum: e6bfaf10dc941388b4342335ba3058728cd48b11315bd419012540ca5a3b5f1141fa42b61eff8271ccbe127d33a4f2b4de5956c9d2225fc1dff27e9846592670
+ "@types/react-dom":
+ optional: true
+ checksum: 75dcb4430c1d3d4eb1635bbdd61f9eb079a9a9ad0281f4db4107f3dd6965164aba594c466b24ed5f29e498ad8bc3c8ec1ed78d9ccce9f7a7b3c380a36437fdb4
languageName: node
linkType: hard
-"@react-native/debugger-frontend@npm:0.76.7":
- version: 0.76.7
- resolution: "@react-native/debugger-frontend@npm:0.76.7"
- checksum: 3ef73a8e5f281d73b17f2b5834d803665506726a77e660a610b0b6511aedf26c82e92fdcf782e1d214c79b70432323f8116f11977f81ed3969c2af9f68f5c903
+"@radix-ui/react-checkbox@npm:^1.1.1":
+ version: 1.1.4
+ resolution: "@radix-ui/react-checkbox@npm:1.1.4"
+ dependencies:
+ "@radix-ui/primitive": 1.1.1
+ "@radix-ui/react-compose-refs": 1.1.1
+ "@radix-ui/react-context": 1.1.1
+ "@radix-ui/react-presence": 1.1.2
+ "@radix-ui/react-primitive": 2.0.2
+ "@radix-ui/react-use-controllable-state": 1.1.0
+ "@radix-ui/react-use-previous": 1.1.0
+ "@radix-ui/react-use-size": 1.1.0
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+ checksum: 0f408b46735a76faca1b628106e32951c7a85f213720bdf0d4350e8df5da69b88d943727f185f23b49470f0496a93d35ffde2f567a6a20b4ebc9313a63ca8582
languageName: node
linkType: hard
-"@react-native/dev-middleware@npm:0.76.7":
- version: 0.76.7
- resolution: "@react-native/dev-middleware@npm:0.76.7"
- dependencies:
- "@isaacs/ttlcache": ^1.4.1
- "@react-native/debugger-frontend": 0.76.7
- chrome-launcher: ^0.15.2
- chromium-edge-launcher: ^0.2.0
- connect: ^3.6.5
- debug: ^2.2.0
- invariant: ^2.2.4
- nullthrows: ^1.1.1
- open: ^7.0.3
- selfsigned: ^2.4.1
- serve-static: ^1.13.1
- ws: ^6.2.3
- checksum: cc23a959299cd97e0960915a211ebe36a3c36161111bd8f627a5ab6c78a98ddbb893ac52313d6cd11b4c0c35324b8f2a0806676e255e2b0bf578e0aab71414a2
+"@radix-ui/react-collapsible@npm:1.1.3":
+ version: 1.1.3
+ resolution: "@radix-ui/react-collapsible@npm:1.1.3"
+ dependencies:
+ "@radix-ui/primitive": 1.1.1
+ "@radix-ui/react-compose-refs": 1.1.1
+ "@radix-ui/react-context": 1.1.1
+ "@radix-ui/react-id": 1.1.0
+ "@radix-ui/react-presence": 1.1.2
+ "@radix-ui/react-primitive": 2.0.2
+ "@radix-ui/react-use-controllable-state": 1.1.0
+ "@radix-ui/react-use-layout-effect": 1.1.0
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+ checksum: 3689dd1393ed983869e1f2aa4ccfe349af4788a4eb8ee36805ff89aaf6df5ed9743823302388691f9d4527ecee6ed558e95a198fdbe5b86bd2d81b40d0bc2a8c
languageName: node
linkType: hard
-"@react-native/eslint-config@npm:^0.73.1":
- version: 0.73.2
- resolution: "@react-native/eslint-config@npm:0.73.2"
+"@radix-ui/react-collection@npm:1.1.2":
+ version: 1.1.2
+ resolution: "@radix-ui/react-collection@npm:1.1.2"
dependencies:
- "@babel/core": ^7.20.0
- "@babel/eslint-parser": ^7.20.0
- "@react-native/eslint-plugin": 0.73.1
- "@typescript-eslint/eslint-plugin": ^5.57.1
- "@typescript-eslint/parser": ^5.57.1
- eslint-config-prettier: ^8.5.0
- eslint-plugin-eslint-comments: ^3.2.0
- eslint-plugin-ft-flow: ^2.0.1
- eslint-plugin-jest: ^26.5.3
- eslint-plugin-prettier: ^4.2.1
- eslint-plugin-react: ^7.30.1
- eslint-plugin-react-hooks: ^4.6.0
- eslint-plugin-react-native: ^4.0.0
+ "@radix-ui/react-compose-refs": 1.1.1
+ "@radix-ui/react-context": 1.1.1
+ "@radix-ui/react-primitive": 2.0.2
+ "@radix-ui/react-slot": 1.1.2
peerDependencies:
- eslint: ">=8"
- prettier: ">=2"
- checksum: 6d9de3267d80f1ee4f046a54a86bb906448dbc2a1a708fa7b7cb92f7611dec666b5908451501cd39b8b67eda4c8cfac6b2707a0ea65eb0228c79dcd47fc9b4c5
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+ checksum: 4401f36778cc9edc9dc5e82f59b51327f38cf6ed048981a04ff17b3279c47b1c6b6919fe6a621572fc154d2cb664df829b125f28525a556980e3c3b66447e6e5
languageName: node
linkType: hard
-"@react-native/eslint-plugin@npm:0.73.1":
- version: 0.73.1
- resolution: "@react-native/eslint-plugin@npm:0.73.1"
- checksum: 82a9bd30ada10ec4e926021967d1ffeb7c82eaaba6f7171cc655daf3339d2e2c15897bc3cd0f529e83ef2958c3b9b0365590a6b672a1a0efe7c781bd3e854473
+"@radix-ui/react-compose-refs@npm:1.1.1":
+ version: 1.1.1
+ resolution: "@radix-ui/react-compose-refs@npm:1.1.1"
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ checksum: 1be82f9f7fab96cc10f167a2e4f976e0135a63d473334f664c06f02af13bc5ea1994cb0505f89ed190d756cb65d57506721c030908af07e49b9e3cfd36044f33
languageName: node
linkType: hard
-"@react-native/gradle-plugin@npm:0.76.7":
- version: 0.76.7
- resolution: "@react-native/gradle-plugin@npm:0.76.7"
- checksum: 4a0b1150a9338ade0fb75a036b63d681243ab93c19dea676ac02c59f7b16b28fafe8e2e6106ff0de33d0ad4a1ac358eb90fa9a2b6e9bbc55ffb449f1098329db
+"@radix-ui/react-context@npm:1.1.1":
+ version: 1.1.1
+ resolution: "@radix-ui/react-context@npm:1.1.1"
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ checksum: 9a04db236685dacc2f5ab2bdcfc4c82b974998e712ab97d79b11d5b4ef073d24aa9392398c876ef6cb3c59f40299285ceee3646187ad818cdad4fe1c74469d3f
languageName: node
linkType: hard
-"@react-native/js-polyfills@npm:0.76.7":
- version: 0.76.7
- resolution: "@react-native/js-polyfills@npm:0.76.7"
- checksum: 6dbf035366c6a22e8f868c2e1f69ea6340d8e975e0d9ae6db6c469a37f58bdcdceb355684b3af53d3e76d7d7ff0db56dd6a5be39c9e54d7973c3256b80f1170e
+"@radix-ui/react-dialog@npm:1.1.6, @radix-ui/react-dialog@npm:^1.1.1":
+ version: 1.1.6
+ resolution: "@radix-ui/react-dialog@npm:1.1.6"
+ dependencies:
+ "@radix-ui/primitive": 1.1.1
+ "@radix-ui/react-compose-refs": 1.1.1
+ "@radix-ui/react-context": 1.1.1
+ "@radix-ui/react-dismissable-layer": 1.1.5
+ "@radix-ui/react-focus-guards": 1.1.1
+ "@radix-ui/react-focus-scope": 1.1.2
+ "@radix-ui/react-id": 1.1.0
+ "@radix-ui/react-portal": 1.1.4
+ "@radix-ui/react-presence": 1.1.2
+ "@radix-ui/react-primitive": 2.0.2
+ "@radix-ui/react-slot": 1.1.2
+ "@radix-ui/react-use-controllable-state": 1.1.0
+ aria-hidden: ^1.2.4
+ react-remove-scroll: ^2.6.3
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+ checksum: 0efd5709dc55c0446eb374ed25d2a0f1c1341d77f1b1034888c52e5c20c8dffa81ea03dc1babdc8e8a41c0d59c5207f1e62bbaf0ad04d5dc57fd1173badcfc7a
languageName: node
linkType: hard
-"@react-native/metro-babel-transformer@npm:0.76.7":
- version: 0.76.7
- resolution: "@react-native/metro-babel-transformer@npm:0.76.7"
+"@radix-ui/react-direction@npm:1.1.0":
+ version: 1.1.0
+ resolution: "@radix-ui/react-direction@npm:1.1.0"
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ checksum: 25ad0d1d65ad08c93cebfbefdff9ef2602e53f4573a66b37d2c366ede9485e75ec6fc8e7dd7d2939b34ea5504ca0fe6ac4a3acc2f6ee9b62d131d65486eafd49
+ languageName: node
+ linkType: hard
+
+"@radix-ui/react-dismissable-layer@npm:1.1.5":
+ version: 1.1.5
+ resolution: "@radix-ui/react-dismissable-layer@npm:1.1.5"
dependencies:
- "@babel/core": ^7.25.2
- "@react-native/babel-preset": 0.76.7
- hermes-parser: 0.23.1
- nullthrows: ^1.1.1
+ "@radix-ui/primitive": 1.1.1
+ "@radix-ui/react-compose-refs": 1.1.1
+ "@radix-ui/react-primitive": 2.0.2
+ "@radix-ui/react-use-callback-ref": 1.1.0
+ "@radix-ui/react-use-escape-keydown": 1.1.0
peerDependencies:
- "@babel/core": "*"
- checksum: 26af0564de9bc6c734dd5a08699d74ccded819c7afc0841b4a04e415ed7c4d2ea6f51edb3df23e86da8bd7601db8df38daf16aa83363c2aafee4dd4faf65857d
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+ checksum: 6f8c219df5033e98b5337e5351e0add8706aab6d10a6f2c7f028f7f36202300f648805530e788a8c8cc3014a7fb9d8e9824ea02100da510e70778457ffb3e4c0
languageName: node
linkType: hard
-"@react-native/normalize-colors@npm:0.76.7":
+"@radix-ui/react-focus-guards@npm:1.1.1":
+ version: 1.1.1
+ resolution: "@radix-ui/react-focus-guards@npm:1.1.1"
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ checksum: ac8dd31f48fa0500bafd9368f2f06c5a06918dccefa89fa5dc77ca218dc931a094a81ca57f6b181138029822f7acdd5280dceccf5ba4d9263c754fb8f7961879
+ languageName: node
+ linkType: hard
+
+"@radix-ui/react-focus-scope@npm:1.1.2":
+ version: 1.1.2
+ resolution: "@radix-ui/react-focus-scope@npm:1.1.2"
+ dependencies:
+ "@radix-ui/react-compose-refs": 1.1.1
+ "@radix-ui/react-primitive": 2.0.2
+ "@radix-ui/react-use-callback-ref": 1.1.0
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+ checksum: 803f44ae66cfa296042e23977c6cca373cab4418442d35cbdfbbee61cefc32a6419a99a6c0b62bb7e1340cf54994996d3cdc747d8d9b259bbfadb5d23a5af18a
+ languageName: node
+ linkType: hard
+
+"@radix-ui/react-id@npm:1.1.0":
+ version: 1.1.0
+ resolution: "@radix-ui/react-id@npm:1.1.0"
+ dependencies:
+ "@radix-ui/react-use-layout-effect": 1.1.0
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ checksum: 6fbc9d1739b3b082412da10359e63967b4f3a60383ebda4c9e56b07a722d29bee53b203b3b1418f88854a29315a7715867133bb149e6e22a027a048cdd20d970
+ languageName: node
+ linkType: hard
+
+"@radix-ui/react-label@npm:^2.1.0":
+ version: 2.1.2
+ resolution: "@radix-ui/react-label@npm:2.1.2"
+ dependencies:
+ "@radix-ui/react-primitive": 2.0.2
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+ checksum: e3d159dcbf41e46aaada532ff04c792791912216eba3c41ef21fab882ea51e0c3ef495d8fa13cf09bb4fb3599afbf3fb31fd187323ce78531859537bc2f7d096
+ languageName: node
+ linkType: hard
+
+"@radix-ui/react-popover@npm:^1.1.1":
+ version: 1.1.6
+ resolution: "@radix-ui/react-popover@npm:1.1.6"
+ dependencies:
+ "@radix-ui/primitive": 1.1.1
+ "@radix-ui/react-compose-refs": 1.1.1
+ "@radix-ui/react-context": 1.1.1
+ "@radix-ui/react-dismissable-layer": 1.1.5
+ "@radix-ui/react-focus-guards": 1.1.1
+ "@radix-ui/react-focus-scope": 1.1.2
+ "@radix-ui/react-id": 1.1.0
+ "@radix-ui/react-popper": 1.2.2
+ "@radix-ui/react-portal": 1.1.4
+ "@radix-ui/react-presence": 1.1.2
+ "@radix-ui/react-primitive": 2.0.2
+ "@radix-ui/react-slot": 1.1.2
+ "@radix-ui/react-use-controllable-state": 1.1.0
+ aria-hidden: ^1.2.4
+ react-remove-scroll: ^2.6.3
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+ checksum: 7f6af0e62194263447511f7bfbc999355a039056fc1231f82573ade3acdc73c08e4380b1196904add4907d5fbcc40128de3e2febb13a9a0d56f9f73aae63ffec
+ languageName: node
+ linkType: hard
+
+"@radix-ui/react-popper@npm:1.2.2":
+ version: 1.2.2
+ resolution: "@radix-ui/react-popper@npm:1.2.2"
+ dependencies:
+ "@floating-ui/react-dom": ^2.0.0
+ "@radix-ui/react-arrow": 1.1.2
+ "@radix-ui/react-compose-refs": 1.1.1
+ "@radix-ui/react-context": 1.1.1
+ "@radix-ui/react-primitive": 2.0.2
+ "@radix-ui/react-use-callback-ref": 1.1.0
+ "@radix-ui/react-use-layout-effect": 1.1.0
+ "@radix-ui/react-use-rect": 1.1.0
+ "@radix-ui/react-use-size": 1.1.0
+ "@radix-ui/rect": 1.1.0
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+ checksum: 039d16c0ac99cfdf9fee93c2ee6656880f62dbcf0e114e8f05b26935ad1df564cb2e912f8420bbd0249e9733964de62005d5e4b6a7bcc77eacdc00087f36353b
+ languageName: node
+ linkType: hard
+
+"@radix-ui/react-portal@npm:1.1.4":
+ version: 1.1.4
+ resolution: "@radix-ui/react-portal@npm:1.1.4"
+ dependencies:
+ "@radix-ui/react-primitive": 2.0.2
+ "@radix-ui/react-use-layout-effect": 1.1.0
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+ checksum: 7797c53d071c762e234c92b5ca721f97ba300969fa9d630e808d436a896082b7c31553cdc0ed1cbfd46b76fe2ddbe5e3a0790f9ff2f6542923b896301a634bbd
+ languageName: node
+ linkType: hard
+
+"@radix-ui/react-presence@npm:1.1.2":
+ version: 1.1.2
+ resolution: "@radix-ui/react-presence@npm:1.1.2"
+ dependencies:
+ "@radix-ui/react-compose-refs": 1.1.1
+ "@radix-ui/react-use-layout-effect": 1.1.0
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+ checksum: 0345bc8d3e1ddcbf4b864025833c71f3d76e4801ce16ad126a98aed816be6e819c4fe01097c6c1320771b947f5a14929cc610d18e7a1438cfb5573289fa4d4a6
+ languageName: node
+ linkType: hard
+
+"@radix-ui/react-primitive@npm:2.0.2":
+ version: 2.0.2
+ resolution: "@radix-ui/react-primitive@npm:2.0.2"
+ dependencies:
+ "@radix-ui/react-slot": 1.1.2
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+ checksum: 3a6144ed164322b1135f6f774bfd23c7c4c5340db8a1022d05c9c7ad41ba187299a4894caae634e94a1d73b5f69305318a47b41e6dc7806fb5923fa05dd39d40
+ languageName: node
+ linkType: hard
+
+"@radix-ui/react-progress@npm:^1.1.0":
+ version: 1.1.2
+ resolution: "@radix-ui/react-progress@npm:1.1.2"
+ dependencies:
+ "@radix-ui/react-context": 1.1.1
+ "@radix-ui/react-primitive": 2.0.2
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+ checksum: 4268dd35998e926270b2c03809381d380ba3327635ac0c2837e84ed4dcfcbe52961b7d96f920892965ac6483726214014678eef08650209b3ed69d97317de614
+ languageName: node
+ linkType: hard
+
+"@radix-ui/react-radio-group@npm:^1.2.0":
+ version: 1.2.3
+ resolution: "@radix-ui/react-radio-group@npm:1.2.3"
+ dependencies:
+ "@radix-ui/primitive": 1.1.1
+ "@radix-ui/react-compose-refs": 1.1.1
+ "@radix-ui/react-context": 1.1.1
+ "@radix-ui/react-direction": 1.1.0
+ "@radix-ui/react-presence": 1.1.2
+ "@radix-ui/react-primitive": 2.0.2
+ "@radix-ui/react-roving-focus": 1.1.2
+ "@radix-ui/react-use-controllable-state": 1.1.0
+ "@radix-ui/react-use-previous": 1.1.0
+ "@radix-ui/react-use-size": 1.1.0
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+ checksum: 2b75565f74036c6cf0f250d9aff193bed4d7ca48269b82f218577df46a24e68eb867a80e9f5b7d62633b012bd056290075c11137f195ece8eb936b1014ea8184
+ languageName: node
+ linkType: hard
+
+"@radix-ui/react-roving-focus@npm:1.1.2":
+ version: 1.1.2
+ resolution: "@radix-ui/react-roving-focus@npm:1.1.2"
+ dependencies:
+ "@radix-ui/primitive": 1.1.1
+ "@radix-ui/react-collection": 1.1.2
+ "@radix-ui/react-compose-refs": 1.1.1
+ "@radix-ui/react-context": 1.1.1
+ "@radix-ui/react-direction": 1.1.0
+ "@radix-ui/react-id": 1.1.0
+ "@radix-ui/react-primitive": 2.0.2
+ "@radix-ui/react-use-callback-ref": 1.1.0
+ "@radix-ui/react-use-controllable-state": 1.1.0
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+ checksum: 4a57f5af51387ae7621a6d0c7e3c743f16b06afda9311e6e5a39c023157d6a314931170dd794f901b59c0c768f0c3a121b8af59f7f80e58eb87512fb4540b037
+ languageName: node
+ linkType: hard
+
+"@radix-ui/react-select@npm:^2.1.1":
+ version: 2.1.6
+ resolution: "@radix-ui/react-select@npm:2.1.6"
+ dependencies:
+ "@radix-ui/number": 1.1.0
+ "@radix-ui/primitive": 1.1.1
+ "@radix-ui/react-collection": 1.1.2
+ "@radix-ui/react-compose-refs": 1.1.1
+ "@radix-ui/react-context": 1.1.1
+ "@radix-ui/react-direction": 1.1.0
+ "@radix-ui/react-dismissable-layer": 1.1.5
+ "@radix-ui/react-focus-guards": 1.1.1
+ "@radix-ui/react-focus-scope": 1.1.2
+ "@radix-ui/react-id": 1.1.0
+ "@radix-ui/react-popper": 1.2.2
+ "@radix-ui/react-portal": 1.1.4
+ "@radix-ui/react-primitive": 2.0.2
+ "@radix-ui/react-slot": 1.1.2
+ "@radix-ui/react-use-callback-ref": 1.1.0
+ "@radix-ui/react-use-controllable-state": 1.1.0
+ "@radix-ui/react-use-layout-effect": 1.1.0
+ "@radix-ui/react-use-previous": 1.1.0
+ "@radix-ui/react-visually-hidden": 1.1.2
+ aria-hidden: ^1.2.4
+ react-remove-scroll: ^2.6.3
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+ checksum: 2e9116e3025cf320e6c7c90892190ed0e5aba32983a2f3e30e1077b2c0032ea9b19ca03a95b737facc6cec94597646d9f77f96ffdba2737ec79d62d428fafa75
+ languageName: node
+ linkType: hard
+
+"@radix-ui/react-separator@npm:^1.1.0":
+ version: 1.1.2
+ resolution: "@radix-ui/react-separator@npm:1.1.2"
+ dependencies:
+ "@radix-ui/react-primitive": 2.0.2
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+ checksum: 83a2429171c3dcad1e33e43c843def6b4535d7ce7940fc46d3916c65abaebe5c3b19ca9a8882363c4057dce898e95beb90e97dee012feb02b42d43912c7b4120
+ languageName: node
+ linkType: hard
+
+"@radix-ui/react-slot@npm:1.1.2":
+ version: 1.1.2
+ resolution: "@radix-ui/react-slot@npm:1.1.2"
+ dependencies:
+ "@radix-ui/react-compose-refs": 1.1.1
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ checksum: f341cd66b284061a5147a67f6d7b8a7337a4c076b97ce087bcb1358fa36e9714ef988cc7ea2c2ed3b6ec3f17adafd2460851b31ed8f4dd73ea22b0b11e22ab97
+ languageName: node
+ linkType: hard
+
+"@radix-ui/react-switch@npm:^1.1.0":
+ version: 1.1.3
+ resolution: "@radix-ui/react-switch@npm:1.1.3"
+ dependencies:
+ "@radix-ui/primitive": 1.1.1
+ "@radix-ui/react-compose-refs": 1.1.1
+ "@radix-ui/react-context": 1.1.1
+ "@radix-ui/react-primitive": 2.0.2
+ "@radix-ui/react-use-controllable-state": 1.1.0
+ "@radix-ui/react-use-previous": 1.1.0
+ "@radix-ui/react-use-size": 1.1.0
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+ checksum: b0df2d2f4341474be4a0c13b783a6ad2061b42505d6721385b4eea304fbc13c0a9c2b9776c53096e80016ee5afdd8f11481eaa7de365cb0a3e9c7f87f8860d86
+ languageName: node
+ linkType: hard
+
+"@radix-ui/react-tooltip@npm:^1.1.2":
+ version: 1.1.8
+ resolution: "@radix-ui/react-tooltip@npm:1.1.8"
+ dependencies:
+ "@radix-ui/primitive": 1.1.1
+ "@radix-ui/react-compose-refs": 1.1.1
+ "@radix-ui/react-context": 1.1.1
+ "@radix-ui/react-dismissable-layer": 1.1.5
+ "@radix-ui/react-id": 1.1.0
+ "@radix-ui/react-popper": 1.2.2
+ "@radix-ui/react-portal": 1.1.4
+ "@radix-ui/react-presence": 1.1.2
+ "@radix-ui/react-primitive": 2.0.2
+ "@radix-ui/react-slot": 1.1.2
+ "@radix-ui/react-use-controllable-state": 1.1.0
+ "@radix-ui/react-visually-hidden": 1.1.2
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+ checksum: 2782dcf80be9a09dbc7f453561a2046ca4cfdaae8993ef120796e634b613118c8189590aa848a27e03641b6f1250894b4c0f0d6a9680d327664025bd82d1535a
+ languageName: node
+ linkType: hard
+
+"@radix-ui/react-use-callback-ref@npm:1.1.0":
+ version: 1.1.0
+ resolution: "@radix-ui/react-use-callback-ref@npm:1.1.0"
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ checksum: 2ec7903c67e3034b646005556f44fd975dc5204db6885fc58403e3584f27d95f0b573bc161de3d14fab9fda25150bf3b91f718d299fdfc701c736bd0bd2281fa
+ languageName: node
+ linkType: hard
+
+"@radix-ui/react-use-controllable-state@npm:1.1.0":
+ version: 1.1.0
+ resolution: "@radix-ui/react-use-controllable-state@npm:1.1.0"
+ dependencies:
+ "@radix-ui/react-use-callback-ref": 1.1.0
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ checksum: a6c167cf8eb0744effbeab1f92ea6c0ad71838b222670c0488599f28eecd941d87ac1eed4b5d3b10df6dc7b7b2edb88a54e99d92c2942ce3b21f81d5c188f32d
+ languageName: node
+ linkType: hard
+
+"@radix-ui/react-use-escape-keydown@npm:1.1.0":
+ version: 1.1.0
+ resolution: "@radix-ui/react-use-escape-keydown@npm:1.1.0"
+ dependencies:
+ "@radix-ui/react-use-callback-ref": 1.1.0
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ checksum: 9bf88ea272b32ea0f292afd336780a59c5646f795036b7e6105df2d224d73c54399ee5265f61d571eb545d28382491a8b02dc436e3088de8dae415d58b959b71
+ languageName: node
+ linkType: hard
+
+"@radix-ui/react-use-layout-effect@npm:1.1.0":
+ version: 1.1.0
+ resolution: "@radix-ui/react-use-layout-effect@npm:1.1.0"
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ checksum: 271ea0bf1cd74718895a68414a6e95537737f36e02ad08eeb61a82b229d6abda9cff3135a479e134e1f0ce2c3ff97bb85babbdce751985fb755a39b231d7ccf2
+ languageName: node
+ linkType: hard
+
+"@radix-ui/react-use-previous@npm:1.1.0":
+ version: 1.1.0
+ resolution: "@radix-ui/react-use-previous@npm:1.1.0"
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ checksum: 8a2407e3db6248ab52bf425f5f4161355d09f1a228038094959250ae53552e73543532b3bb80e452f6ad624621e2e1c6aebb8c702f2dfaa5e89f07ec629d9304
+ languageName: node
+ linkType: hard
+
+"@radix-ui/react-use-rect@npm:1.1.0":
+ version: 1.1.0
+ resolution: "@radix-ui/react-use-rect@npm:1.1.0"
+ dependencies:
+ "@radix-ui/rect": 1.1.0
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ checksum: facc9528af43df3b01952dbb915ff751b5924db2c31d41f053ddea19a7cc5cac5b096c4d7a2059e8f564a3f0d4a95bcd909df8faed52fa01709af27337628e2c
+ languageName: node
+ linkType: hard
+
+"@radix-ui/react-use-size@npm:1.1.0":
+ version: 1.1.0
+ resolution: "@radix-ui/react-use-size@npm:1.1.0"
+ dependencies:
+ "@radix-ui/react-use-layout-effect": 1.1.0
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ checksum: 01a11d4c07fc620b8a081e53d7ec8495b19a11e02688f3d9f47cf41a5fe0428d1e52ed60b2bf88dfd447dc2502797b9dad2841097389126dd108530913c4d90d
+ languageName: node
+ linkType: hard
+
+"@radix-ui/react-visually-hidden@npm:1.1.2":
+ version: 1.1.2
+ resolution: "@radix-ui/react-visually-hidden@npm:1.1.2"
+ dependencies:
+ "@radix-ui/react-primitive": 2.0.2
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+ checksum: 87dc45ffb32b652bde629bb5c3b216adb82fd1ec68c484fec260980b31508cbc515a73327798d0f47d558dd22245b25f51bb06296b1762693af9f27e23c1cb1f
+ languageName: node
+ linkType: hard
+
+"@radix-ui/rect@npm:1.1.0":
+ version: 1.1.0
+ resolution: "@radix-ui/rect@npm:1.1.0"
+ checksum: 1ad93efbc9fc3b878bae5e8bb26ffa1005235d8b5b9fca8339eb5dbcf7bf53abc9ccd2a8ce128557820168c8600521e48e0ea4dda96aa5f116381f66f46aeda3
+ languageName: node
+ linkType: hard
+
+"@react-native-community/datetimepicker@npm:^8.3.0":
+ version: 8.3.0
+ resolution: "@react-native-community/datetimepicker@npm:8.3.0"
+ dependencies:
+ invariant: ^2.2.4
+ peerDependencies:
+ expo: ">=50.0.0"
+ react: "*"
+ react-native: "*"
+ react-native-windows: "*"
+ peerDependenciesMeta:
+ expo:
+ optional: true
+ react-native-windows:
+ optional: true
+ checksum: a25468f54699c2d57c71469e10bcfa0ffcfe9be09cf850783202da8d081d34da38b33088edf5c0fe8e24d0a1320929ce7508d74903213c05c1dc287ac6ecc957
+ languageName: node
+ linkType: hard
+
+"@react-native/assets-registry@npm:0.76.7":
+ version: 0.76.7
+ resolution: "@react-native/assets-registry@npm:0.76.7"
+ checksum: f197582ad2e2964f5a6afa5a8945b368b7a6fe05cd9fac78e4832ad969cd8b5ad72e048f0c652ce5b4dd1ed7bf28e36254e49d3b7317b16d4481600482259048
+ languageName: node
+ linkType: hard
+
+"@react-native/babel-plugin-codegen@npm:0.76.7":
+ version: 0.76.7
+ resolution: "@react-native/babel-plugin-codegen@npm:0.76.7"
+ dependencies:
+ "@react-native/codegen": 0.76.7
+ checksum: d19f45cc0d3f1de0cbe9fe4b3623d008284957829d7d471adf6c881f2450a3f40ecc152361185a076403419f19f53094f12624915d41fa79a9f214afdaf85e60
+ languageName: node
+ linkType: hard
+
+"@react-native/babel-preset@npm:0.76.7":
+ version: 0.76.7
+ resolution: "@react-native/babel-preset@npm:0.76.7"
+ dependencies:
+ "@babel/core": ^7.25.2
+ "@babel/plugin-proposal-export-default-from": ^7.24.7
+ "@babel/plugin-syntax-dynamic-import": ^7.8.3
+ "@babel/plugin-syntax-export-default-from": ^7.24.7
+ "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3
+ "@babel/plugin-syntax-optional-chaining": ^7.8.3
+ "@babel/plugin-transform-arrow-functions": ^7.24.7
+ "@babel/plugin-transform-async-generator-functions": ^7.25.4
+ "@babel/plugin-transform-async-to-generator": ^7.24.7
+ "@babel/plugin-transform-block-scoping": ^7.25.0
+ "@babel/plugin-transform-class-properties": ^7.25.4
+ "@babel/plugin-transform-classes": ^7.25.4
+ "@babel/plugin-transform-computed-properties": ^7.24.7
+ "@babel/plugin-transform-destructuring": ^7.24.8
+ "@babel/plugin-transform-flow-strip-types": ^7.25.2
+ "@babel/plugin-transform-for-of": ^7.24.7
+ "@babel/plugin-transform-function-name": ^7.25.1
+ "@babel/plugin-transform-literals": ^7.25.2
+ "@babel/plugin-transform-logical-assignment-operators": ^7.24.7
+ "@babel/plugin-transform-modules-commonjs": ^7.24.8
+ "@babel/plugin-transform-named-capturing-groups-regex": ^7.24.7
+ "@babel/plugin-transform-nullish-coalescing-operator": ^7.24.7
+ "@babel/plugin-transform-numeric-separator": ^7.24.7
+ "@babel/plugin-transform-object-rest-spread": ^7.24.7
+ "@babel/plugin-transform-optional-catch-binding": ^7.24.7
+ "@babel/plugin-transform-optional-chaining": ^7.24.8
+ "@babel/plugin-transform-parameters": ^7.24.7
+ "@babel/plugin-transform-private-methods": ^7.24.7
+ "@babel/plugin-transform-private-property-in-object": ^7.24.7
+ "@babel/plugin-transform-react-display-name": ^7.24.7
+ "@babel/plugin-transform-react-jsx": ^7.25.2
+ "@babel/plugin-transform-react-jsx-self": ^7.24.7
+ "@babel/plugin-transform-react-jsx-source": ^7.24.7
+ "@babel/plugin-transform-regenerator": ^7.24.7
+ "@babel/plugin-transform-runtime": ^7.24.7
+ "@babel/plugin-transform-shorthand-properties": ^7.24.7
+ "@babel/plugin-transform-spread": ^7.24.7
+ "@babel/plugin-transform-sticky-regex": ^7.24.7
+ "@babel/plugin-transform-typescript": ^7.25.2
+ "@babel/plugin-transform-unicode-regex": ^7.24.7
+ "@babel/template": ^7.25.0
+ "@react-native/babel-plugin-codegen": 0.76.7
+ babel-plugin-syntax-hermes-parser: ^0.25.1
+ babel-plugin-transform-flow-enums: ^0.0.2
+ react-refresh: ^0.14.0
+ peerDependencies:
+ "@babel/core": "*"
+ checksum: 29b48f80d32839d03f17d938e3f2b34f213d6ac3155de9556016132d4e3b9d55ce2b3d18fcd596ba6507f6bbe64174a76c5e94cc3737b39f00467c455de6b2d4
+ languageName: node
+ linkType: hard
+
+"@react-native/codegen@npm:0.76.7":
+ version: 0.76.7
+ resolution: "@react-native/codegen@npm:0.76.7"
+ dependencies:
+ "@babel/parser": ^7.25.3
+ glob: ^7.1.1
+ hermes-parser: 0.23.1
+ invariant: ^2.2.4
+ jscodeshift: ^0.14.0
+ mkdirp: ^0.5.1
+ nullthrows: ^1.1.1
+ yargs: ^17.6.2
+ peerDependencies:
+ "@babel/preset-env": ^7.1.6
+ checksum: f5f332c334b0bae892c7f3986c87f20c052b2b1ca9fc927fc91db012e1f062d8feaa01dc2e09d64454ce4e36dc0571d73ae3cb3a2d2aeba485ddc0c3d0e80aa1
+ languageName: node
+ linkType: hard
+
+"@react-native/community-cli-plugin@npm:0.76.7":
+ version: 0.76.7
+ resolution: "@react-native/community-cli-plugin@npm:0.76.7"
+ dependencies:
+ "@react-native/dev-middleware": 0.76.7
+ "@react-native/metro-babel-transformer": 0.76.7
+ chalk: ^4.0.0
+ execa: ^5.1.1
+ invariant: ^2.2.4
+ metro: ^0.81.0
+ metro-config: ^0.81.0
+ metro-core: ^0.81.0
+ node-fetch: ^2.2.0
+ readline: ^1.3.0
+ semver: ^7.1.3
+ peerDependencies:
+ "@react-native-community/cli-server-api": "*"
+ peerDependenciesMeta:
+ "@react-native-community/cli-server-api":
+ optional: true
+ checksum: e6bfaf10dc941388b4342335ba3058728cd48b11315bd419012540ca5a3b5f1141fa42b61eff8271ccbe127d33a4f2b4de5956c9d2225fc1dff27e9846592670
+ languageName: node
+ linkType: hard
+
+"@react-native/debugger-frontend@npm:0.76.7":
+ version: 0.76.7
+ resolution: "@react-native/debugger-frontend@npm:0.76.7"
+ checksum: 3ef73a8e5f281d73b17f2b5834d803665506726a77e660a610b0b6511aedf26c82e92fdcf782e1d214c79b70432323f8116f11977f81ed3969c2af9f68f5c903
+ languageName: node
+ linkType: hard
+
+"@react-native/dev-middleware@npm:0.76.7":
+ version: 0.76.7
+ resolution: "@react-native/dev-middleware@npm:0.76.7"
+ dependencies:
+ "@isaacs/ttlcache": ^1.4.1
+ "@react-native/debugger-frontend": 0.76.7
+ chrome-launcher: ^0.15.2
+ chromium-edge-launcher: ^0.2.0
+ connect: ^3.6.5
+ debug: ^2.2.0
+ invariant: ^2.2.4
+ nullthrows: ^1.1.1
+ open: ^7.0.3
+ selfsigned: ^2.4.1
+ serve-static: ^1.13.1
+ ws: ^6.2.3
+ checksum: cc23a959299cd97e0960915a211ebe36a3c36161111bd8f627a5ab6c78a98ddbb893ac52313d6cd11b4c0c35324b8f2a0806676e255e2b0bf578e0aab71414a2
+ languageName: node
+ linkType: hard
+
+"@react-native/eslint-config@npm:^0.73.1":
+ version: 0.73.2
+ resolution: "@react-native/eslint-config@npm:0.73.2"
+ dependencies:
+ "@babel/core": ^7.20.0
+ "@babel/eslint-parser": ^7.20.0
+ "@react-native/eslint-plugin": 0.73.1
+ "@typescript-eslint/eslint-plugin": ^5.57.1
+ "@typescript-eslint/parser": ^5.57.1
+ eslint-config-prettier: ^8.5.0
+ eslint-plugin-eslint-comments: ^3.2.0
+ eslint-plugin-ft-flow: ^2.0.1
+ eslint-plugin-jest: ^26.5.3
+ eslint-plugin-prettier: ^4.2.1
+ eslint-plugin-react: ^7.30.1
+ eslint-plugin-react-hooks: ^4.6.0
+ eslint-plugin-react-native: ^4.0.0
+ peerDependencies:
+ eslint: ">=8"
+ prettier: ">=2"
+ checksum: 6d9de3267d80f1ee4f046a54a86bb906448dbc2a1a708fa7b7cb92f7611dec666b5908451501cd39b8b67eda4c8cfac6b2707a0ea65eb0228c79dcd47fc9b4c5
+ languageName: node
+ linkType: hard
+
+"@react-native/eslint-plugin@npm:0.73.1":
+ version: 0.73.1
+ resolution: "@react-native/eslint-plugin@npm:0.73.1"
+ checksum: 82a9bd30ada10ec4e926021967d1ffeb7c82eaaba6f7171cc655daf3339d2e2c15897bc3cd0f529e83ef2958c3b9b0365590a6b672a1a0efe7c781bd3e854473
+ languageName: node
+ linkType: hard
+
+"@react-native/gradle-plugin@npm:0.76.7":
+ version: 0.76.7
+ resolution: "@react-native/gradle-plugin@npm:0.76.7"
+ checksum: 4a0b1150a9338ade0fb75a036b63d681243ab93c19dea676ac02c59f7b16b28fafe8e2e6106ff0de33d0ad4a1ac358eb90fa9a2b6e9bbc55ffb449f1098329db
+ languageName: node
+ linkType: hard
+
+"@react-native/js-polyfills@npm:0.76.7":
+ version: 0.76.7
+ resolution: "@react-native/js-polyfills@npm:0.76.7"
+ checksum: 6dbf035366c6a22e8f868c2e1f69ea6340d8e975e0d9ae6db6c469a37f58bdcdceb355684b3af53d3e76d7d7ff0db56dd6a5be39c9e54d7973c3256b80f1170e
+ languageName: node
+ linkType: hard
+
+"@react-native/metro-babel-transformer@npm:0.76.7":
+ version: 0.76.7
+ resolution: "@react-native/metro-babel-transformer@npm:0.76.7"
+ dependencies:
+ "@babel/core": ^7.25.2
+ "@react-native/babel-preset": 0.76.7
+ hermes-parser: 0.23.1
+ nullthrows: ^1.1.1
+ peerDependencies:
+ "@babel/core": "*"
+ checksum: 26af0564de9bc6c734dd5a08699d74ccded819c7afc0841b4a04e415ed7c4d2ea6f51edb3df23e86da8bd7601db8df38daf16aa83363c2aafee4dd4faf65857d
+ languageName: node
+ linkType: hard
+
+"@react-native/normalize-colors@npm:0.76.7":
version: 0.76.7
resolution: "@react-native/normalize-colors@npm:0.76.7"
checksum: 4840d1f3852d908520aa77733dae07bd7bcfaa393e0245ea74716246d626785a6abe3add9c4975cbdabc45f5eaf56bbb133fd63e471b48e975a07ca5c346c9bb
@@ -3151,6 +4019,46 @@ __metadata:
languageName: node
linkType: hard
+"@react-navigation/core@npm:^6.4.17":
+ version: 6.4.17
+ resolution: "@react-navigation/core@npm:6.4.17"
+ dependencies:
+ "@react-navigation/routers": ^6.1.9
+ escape-string-regexp: ^4.0.0
+ nanoid: ^3.1.23
+ query-string: ^7.1.3
+ react-is: ^16.13.0
+ use-latest-callback: ^0.2.1
+ peerDependencies:
+ react: "*"
+ checksum: 5e7315bb6ebff8e796eaccb0442d00696466750cc387e93f5edb5293d4ad3f409c1525ef76192894488e2d0979b762b236a1b0fbbb7500b2f065bf4745d509c0
+ languageName: node
+ linkType: hard
+
+"@react-navigation/native@npm:^6.1.18":
+ version: 6.1.18
+ resolution: "@react-navigation/native@npm:6.1.18"
+ dependencies:
+ "@react-navigation/core": ^6.4.17
+ escape-string-regexp: ^4.0.0
+ fast-deep-equal: ^3.1.3
+ nanoid: ^3.1.23
+ peerDependencies:
+ react: "*"
+ react-native: "*"
+ checksum: 82aeea67723f5dc41403e1c260f04942696f6cde95e30629c383521c3837d18d2d5c21bd78f0ade50beb81ac5edca2d7d38980dcd3a79e3acc86f45d0c09a4b8
+ languageName: node
+ linkType: hard
+
+"@react-navigation/routers@npm:^6.1.9":
+ version: 6.1.9
+ resolution: "@react-navigation/routers@npm:6.1.9"
+ dependencies:
+ nanoid: ^3.1.23
+ checksum: 3a3392ce095d6a2bd2aad69856f513b35774f943a3dc73d8ffb75127de6773203e3264188d87058bdea4c0c9a7d43ed28d0cbf3a1f1cdc086df3ee255d8e1e27
+ languageName: node
+ linkType: hard
+
"@release-it/conventional-changelog@npm:^9.0.2":
version: 9.0.4
resolution: "@release-it/conventional-changelog@npm:9.0.4"
@@ -3166,6 +4074,326 @@ __metadata:
languageName: node
linkType: hard
+"@rn-primitives/accordion@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "@rn-primitives/accordion@npm:1.1.0"
+ dependencies:
+ "@radix-ui/react-accordion": ^1.2.0
+ "@rn-primitives/hooks": 1.1.0
+ "@rn-primitives/slot": 1.1.0
+ "@rn-primitives/types": 1.1.0
+ peerDependencies:
+ react: "*"
+ react-native: "*"
+ react-native-web: "*"
+ peerDependenciesMeta:
+ react-native:
+ optional: true
+ react-native-web:
+ optional: true
+ checksum: c3a220164172330114b2349adf40422ddd6b50dd2137e4c5195bce074583a4313119b90688f7d1332f1ccd33598fc37d5bcecda28400b4bc3e57d6d666eadd02
+ languageName: node
+ linkType: hard
+
+"@rn-primitives/alert-dialog@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "@rn-primitives/alert-dialog@npm:1.1.0"
+ dependencies:
+ "@radix-ui/react-alert-dialog": ^1.1.1
+ "@rn-primitives/hooks": 1.1.0
+ "@rn-primitives/slot": 1.1.0
+ "@rn-primitives/types": 1.1.0
+ peerDependencies:
+ "@rn-primitives/portal": "*"
+ react: "*"
+ react-native: "*"
+ react-native-web: "*"
+ peerDependenciesMeta:
+ react-native:
+ optional: true
+ react-native-web:
+ optional: true
+ checksum: f03012fbcbbe7e26463200f314b19b8b054fa1d062e8ef254414e8d986085893c0d0946e4ade61c959e44bffe775e7a59ae269579a1be46041d8965bde949d28
+ languageName: node
+ linkType: hard
+
+"@rn-primitives/checkbox@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "@rn-primitives/checkbox@npm:1.1.0"
+ dependencies:
+ "@radix-ui/react-checkbox": ^1.1.1
+ "@rn-primitives/hooks": 1.1.0
+ "@rn-primitives/slot": 1.1.0
+ "@rn-primitives/types": 1.1.0
+ peerDependencies:
+ react: "*"
+ react-native: "*"
+ react-native-web: "*"
+ peerDependenciesMeta:
+ react-native:
+ optional: true
+ react-native-web:
+ optional: true
+ checksum: b6fcfb7190978a1b598baa3b3de8f101921b42bced5659a189c2ce8c447d94a299b3c4a6da61f8524637227b875e41568c1f9ea2fd25cf51ca81c9f4b2f94797
+ languageName: node
+ linkType: hard
+
+"@rn-primitives/dialog@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "@rn-primitives/dialog@npm:1.1.0"
+ dependencies:
+ "@radix-ui/react-dialog": ^1.1.1
+ "@rn-primitives/hooks": 1.1.0
+ "@rn-primitives/slot": 1.1.0
+ "@rn-primitives/types": 1.1.0
+ peerDependencies:
+ "@rn-primitives/portal": "*"
+ react: "*"
+ react-native: "*"
+ react-native-web: "*"
+ peerDependenciesMeta:
+ react-native:
+ optional: true
+ react-native-web:
+ optional: true
+ checksum: 3f68d02b8b74cf5a8ad2e5fea2b37df4fe02359a790dc2fc2372f22e58444e5f2fd1f964762764cc75dad4176f9ecde15b00616645f7e83c8e7139365c4cd64a
+ languageName: node
+ linkType: hard
+
+"@rn-primitives/hooks@npm:1.1.0":
+ version: 1.1.0
+ resolution: "@rn-primitives/hooks@npm:1.1.0"
+ dependencies:
+ "@rn-primitives/types": 1.1.0
+ peerDependencies:
+ react: "*"
+ react-native: "*"
+ react-native-web: "*"
+ peerDependenciesMeta:
+ react-native:
+ optional: true
+ react-native-web:
+ optional: true
+ checksum: c89dd74f200cbc128b76dd9d860f7f766a6300ecfe990d9571ad9921f7097cfcd52649b7f4d46cffc85185baedb7d493be438f8d9666a1e5dbc98c54b1a643ad
+ languageName: node
+ linkType: hard
+
+"@rn-primitives/label@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "@rn-primitives/label@npm:1.1.0"
+ dependencies:
+ "@radix-ui/react-label": ^2.1.0
+ "@rn-primitives/slot": 1.1.0
+ "@rn-primitives/types": 1.1.0
+ peerDependencies:
+ react: "*"
+ react-native: "*"
+ react-native-web: "*"
+ peerDependenciesMeta:
+ react-native:
+ optional: true
+ react-native-web:
+ optional: true
+ checksum: 0356b251c81622cbea6ebac16c2a6a29f4ba68783e19ac9d02966ba16ca667b5e9a8e19080dac016a37b6a59471d0891bcc82ba5c6ee2eaa06c3c46a8e035be9
+ languageName: node
+ linkType: hard
+
+"@rn-primitives/popover@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "@rn-primitives/popover@npm:1.1.0"
+ dependencies:
+ "@radix-ui/react-popover": ^1.1.1
+ "@rn-primitives/hooks": 1.1.0
+ "@rn-primitives/slot": 1.1.0
+ "@rn-primitives/types": 1.1.0
+ peerDependencies:
+ "@rn-primitives/portal": "*"
+ react: "*"
+ react-native: "*"
+ react-native-web: "*"
+ peerDependenciesMeta:
+ react-native:
+ optional: true
+ react-native-web:
+ optional: true
+ checksum: ed545284dfee0e6aeef756630fdb339d3ecc70489fd4f917361fcc20f52be9fa66b06a06efd576ea7e6e2c92e80f6c5903d7959b5e4554bc0314dfe2d69df622
+ languageName: node
+ linkType: hard
+
+"@rn-primitives/portal@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "@rn-primitives/portal@npm:1.1.0"
+ dependencies:
+ zustand: ^4.4.7
+ peerDependencies:
+ react: "*"
+ react-native: "*"
+ react-native-web: "*"
+ peerDependenciesMeta:
+ react-native:
+ optional: true
+ react-native-web:
+ optional: true
+ checksum: f7bfa8d99c8b757352088a0cb8a7e1d37e34a379cd71fcde9b42c254a7f176ceae2e9b53fe97d0f9fdf835a61ad92333116059d5956d99f99d174dbb20bdb58c
+ languageName: node
+ linkType: hard
+
+"@rn-primitives/progress@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "@rn-primitives/progress@npm:1.1.0"
+ dependencies:
+ "@radix-ui/react-progress": ^1.1.0
+ "@rn-primitives/slot": 1.1.0
+ "@rn-primitives/types": 1.1.0
+ peerDependencies:
+ react: "*"
+ react-native: "*"
+ react-native-web: "*"
+ peerDependenciesMeta:
+ react-native:
+ optional: true
+ react-native-web:
+ optional: true
+ checksum: 2fa1b247972226b9c1cb05931269551507acff208267db471ddced50acaf9b1795952946cbf55a12560fa90bc3766fcadd197d22da0c0931ecd1220b4e8605cb
+ languageName: node
+ linkType: hard
+
+"@rn-primitives/radio-group@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "@rn-primitives/radio-group@npm:1.1.0"
+ dependencies:
+ "@radix-ui/react-radio-group": ^1.2.0
+ "@rn-primitives/slot": 1.1.0
+ "@rn-primitives/types": 1.1.0
+ peerDependencies:
+ react: "*"
+ react-native: "*"
+ react-native-web: "*"
+ peerDependenciesMeta:
+ react-native:
+ optional: true
+ react-native-web:
+ optional: true
+ checksum: ba9037e04ff31e090b3df6a6266843420cf416506f20f970ead6b4af688212411121919a2be7be1e70e5fa25dbbe626911e3a9c77ca7182c5e1327197b8e2c8f
+ languageName: node
+ linkType: hard
+
+"@rn-primitives/select@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "@rn-primitives/select@npm:1.1.0"
+ dependencies:
+ "@radix-ui/react-select": ^2.1.1
+ "@rn-primitives/hooks": 1.1.0
+ "@rn-primitives/slot": 1.1.0
+ "@rn-primitives/types": 1.1.0
+ peerDependencies:
+ "@rn-primitives/portal": "*"
+ react: "*"
+ react-native: "*"
+ react-native-web: "*"
+ peerDependenciesMeta:
+ react-native:
+ optional: true
+ react-native-web:
+ optional: true
+ checksum: f27dd2cef914d8a353fc9bdec41a3d481ce13df4e070e4978a5213761b51c70403e8333a292d39131e28e5b6c7db5fc9e92b736c4486172acdf6967293d26e0f
+ languageName: node
+ linkType: hard
+
+"@rn-primitives/separator@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "@rn-primitives/separator@npm:1.1.0"
+ dependencies:
+ "@radix-ui/react-separator": ^1.1.0
+ "@rn-primitives/slot": 1.1.0
+ "@rn-primitives/types": 1.1.0
+ peerDependencies:
+ react: "*"
+ react-native: "*"
+ react-native-web: "*"
+ peerDependenciesMeta:
+ react-native:
+ optional: true
+ react-native-web:
+ optional: true
+ checksum: e3df1a77860afcd9f906e3d5546cb4d201ff27a6868365dda0be53c799daf72dc259b184a93a11700b5b6a2d69a91d9c78a11cf7dbb137735e2144f941545915
+ languageName: node
+ linkType: hard
+
+"@rn-primitives/slot@npm:1.1.0, @rn-primitives/slot@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "@rn-primitives/slot@npm:1.1.0"
+ peerDependencies:
+ react: "*"
+ react-native: "*"
+ react-native-web: "*"
+ peerDependenciesMeta:
+ react-native:
+ optional: true
+ react-native-web:
+ optional: true
+ checksum: e83b0d8bd3a5498bdc99b337e3cf07f0d84fa77e458328182d9391a80380a0e2844218516f009556e1ddc3443d1b965fda2e149e073d19e538caf452c8f1f8df
+ languageName: node
+ linkType: hard
+
+"@rn-primitives/switch@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "@rn-primitives/switch@npm:1.1.0"
+ dependencies:
+ "@radix-ui/react-switch": ^1.1.0
+ "@rn-primitives/slot": 1.1.0
+ "@rn-primitives/types": 1.1.0
+ peerDependencies:
+ react: "*"
+ react-native: "*"
+ react-native-web: "*"
+ peerDependenciesMeta:
+ react-native:
+ optional: true
+ react-native-web:
+ optional: true
+ checksum: 0443671213d6c553eb48119a99307c3a63f0ea4bf86d09689e47f5d9209ea1c5e536c8fea74b3a8920722d6d8b3dfc24b505c953fc2e6b59b867c03bba9e7b28
+ languageName: node
+ linkType: hard
+
+"@rn-primitives/tooltip@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "@rn-primitives/tooltip@npm:1.1.0"
+ dependencies:
+ "@radix-ui/react-tooltip": ^1.1.2
+ "@rn-primitives/hooks": 1.1.0
+ "@rn-primitives/slot": 1.1.0
+ "@rn-primitives/types": 1.1.0
+ peerDependencies:
+ "@rn-primitives/portal": "*"
+ react: "*"
+ react-native: "*"
+ react-native-web: "*"
+ peerDependenciesMeta:
+ react-native:
+ optional: true
+ react-native-web:
+ optional: true
+ checksum: 56303b8f65c5c84c39570c9b4e30a1e6ba9a0098f4b4dc642325e3adf83352372468db4fc35639ebf48a5c7983dfe854395b1428d29311f466e58eedc4c5cd23
+ languageName: node
+ linkType: hard
+
+"@rn-primitives/types@npm:1.1.0, @rn-primitives/types@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "@rn-primitives/types@npm:1.1.0"
+ peerDependencies:
+ react: "*"
+ react-native: "*"
+ react-native-web: "*"
+ peerDependenciesMeta:
+ react-native:
+ optional: true
+ react-native-web:
+ optional: true
+ checksum: 3e6b7a64870f408954941bf3342aa1ba7900b97863fdadb86589f82dc2ed302c98ad15a40c5179eac865969e4da82d80cf799bdb4fdba0fc20724397465b8dd9
+ languageName: node
+ linkType: hard
+
"@segment/loosely-validate-event@npm:^2.0.0":
version: 2.0.0
resolution: "@segment/loosely-validate-event@npm:2.0.0"
@@ -3293,6 +4521,13 @@ __metadata:
languageName: node
linkType: hard
+"@types/hammerjs@npm:^2.0.36":
+ version: 2.0.46
+ resolution: "@types/hammerjs@npm:2.0.46"
+ checksum: caba6ec788d19905c71092670b58514b3d1f5eee5382bf9205e8df688d51e7857b7994e2dd7aed57fac8977bdf0e456d67fbaf23440a4385b8ce25fe2af1ec39
+ languageName: node
+ linkType: hard
+
"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1":
version: 2.0.6
resolution: "@types/istanbul-lib-coverage@npm:2.0.6"
@@ -3840,6 +5075,15 @@ __metadata:
languageName: node
linkType: hard
+"aria-hidden@npm:^1.2.4":
+ version: 1.2.4
+ resolution: "aria-hidden@npm:1.2.4"
+ dependencies:
+ tslib: ^2.0.0
+ checksum: 2ac90b70d29c6349d86d90e022cf01f4885f9be193932d943a14127cf28560dd0baf068a6625f084163437a4be0578f513cf7892f4cc63bfe91aa41dce27c6b2
+ languageName: node
+ linkType: hard
+
"array-buffer-byte-length@npm:^1.0.1, array-buffer-byte-length@npm:^1.0.2":
version: 1.0.2
resolution: "array-buffer-byte-length@npm:1.0.2"
@@ -4309,6 +5553,13 @@ __metadata:
languageName: node
linkType: hard
+"boolbase@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "boolbase@npm:1.0.0"
+ checksum: 3e25c80ef626c3a3487c73dbfc70ac322ec830666c9ad915d11b701142fab25ec1e63eff2c450c74347acfd2de854ccde865cd79ef4db1683f7c7b046ea43bb0
+ languageName: node
+ linkType: hard
+
"boxen@npm:^8.0.1":
version: 8.0.1
resolution: "boxen@npm:8.0.1"
@@ -4760,6 +6011,15 @@ __metadata:
languageName: node
linkType: hard
+"class-variance-authority@npm:^0.7.1":
+ version: 0.7.1
+ resolution: "class-variance-authority@npm:0.7.1"
+ dependencies:
+ clsx: ^2.1.1
+ checksum: e05ba26ef9ec38f7c675047ce366b067d60af6c954dba08f7802af19a9460a534ae752d8fe1294fff99d0fa94a669b16ccebd87e8a20f637c0736cf2751dd2c5
+ languageName: node
+ linkType: hard
+
"clean-stack@npm:^2.0.0":
version: 2.2.0
resolution: "clean-stack@npm:2.2.0"
@@ -4853,6 +6113,13 @@ __metadata:
languageName: node
linkType: hard
+"clsx@npm:^2.1.1":
+ version: 2.1.1
+ resolution: "clsx@npm:2.1.1"
+ checksum: acd3e1ab9d8a433ecb3cc2f6a05ab95fe50b4a3cfc5ba47abb6cbf3754585fcb87b84e90c822a1f256c4198e3b41c7f6c391577ffc8678ad587fc0976b24fd57
+ languageName: node
+ linkType: hard
+
"co@npm:^4.6.0":
version: 4.6.0
resolution: "co@npm:4.6.0"
@@ -5422,6 +6689,36 @@ __metadata:
languageName: node
linkType: hard
+"css-select@npm:^5.1.0":
+ version: 5.1.0
+ resolution: "css-select@npm:5.1.0"
+ dependencies:
+ boolbase: ^1.0.0
+ css-what: ^6.1.0
+ domhandler: ^5.0.2
+ domutils: ^3.0.1
+ nth-check: ^2.0.1
+ checksum: 2772c049b188d3b8a8159907192e926e11824aea525b8282981f72ba3f349cf9ecd523fdf7734875ee2cb772246c22117fc062da105b6d59afe8dcd5c99c9bda
+ languageName: node
+ linkType: hard
+
+"css-tree@npm:^1.1.3":
+ version: 1.1.3
+ resolution: "css-tree@npm:1.1.3"
+ dependencies:
+ mdn-data: 2.0.14
+ source-map: ^0.6.1
+ checksum: 79f9b81803991b6977b7fcb1588799270438274d89066ce08f117f5cdb5e20019b446d766c61506dd772c839df84caa16042d6076f20c97187f5abe3b50e7d1f
+ languageName: node
+ linkType: hard
+
+"css-what@npm:^6.1.0":
+ version: 6.1.0
+ resolution: "css-what@npm:6.1.0"
+ checksum: b975e547e1e90b79625918f84e67db5d33d896e6de846c9b584094e529f0c63e2ab85ee33b9daffd05bff3a146a1916bec664e18bb76dd5f66cbff9fc13b2bbe
+ languageName: node
+ linkType: hard
+
"cssesc@npm:^3.0.0":
version: 3.0.0
resolution: "cssesc@npm:3.0.0"
@@ -5485,6 +6782,13 @@ __metadata:
languageName: node
linkType: hard
+"date-fns@npm:^4.1.0":
+ version: 4.1.0
+ resolution: "date-fns@npm:4.1.0"
+ checksum: fb681b242cccabed45494468f64282a7d375ea970e0adbcc5dcc92dcb7aba49b2081c2c9739d41bf71ce89ed68dd73bebfe06ca35129490704775d091895710b
+ languageName: node
+ linkType: hard
+
"debug@npm:2.6.9, debug@npm:^2.2.0, debug@npm:^2.6.9":
version: 2.6.9
resolution: "debug@npm:2.6.9"
@@ -5539,6 +6843,13 @@ __metadata:
languageName: node
linkType: hard
+"decode-uri-component@npm:^0.2.2":
+ version: 0.2.2
+ resolution: "decode-uri-component@npm:0.2.2"
+ checksum: 95476a7d28f267292ce745eac3524a9079058bbb35767b76e3ee87d42e34cd0275d2eb19d9d08c3e167f97556e8a2872747f5e65cbebcac8b0c98d83e285f139
+ languageName: node
+ linkType: hard
+
"dedent@npm:^0.7.0":
version: 0.7.0
resolution: "dedent@npm:0.7.0"
@@ -5765,6 +7076,13 @@ __metadata:
languageName: node
linkType: hard
+"detect-node-es@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "detect-node-es@npm:1.1.0"
+ checksum: e46307d7264644975b71c104b9f028ed1d3d34b83a15b8a22373640ce5ea630e5640b1078b8ea15f202b54641da71e4aa7597093bd4b91f113db520a26a37449
+ languageName: node
+ linkType: hard
+
"didyoumean@npm:^1.2.2":
version: 1.2.2
resolution: "didyoumean@npm:1.2.2"
@@ -5820,6 +7138,44 @@ __metadata:
languageName: node
linkType: hard
+"dom-serializer@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "dom-serializer@npm:2.0.0"
+ dependencies:
+ domelementtype: ^2.3.0
+ domhandler: ^5.0.2
+ entities: ^4.2.0
+ checksum: cd1810544fd8cdfbd51fa2c0c1128ec3a13ba92f14e61b7650b5de421b88205fd2e3f0cc6ace82f13334114addb90ed1c2f23074a51770a8e9c1273acbc7f3e6
+ languageName: node
+ linkType: hard
+
+"domelementtype@npm:^2.3.0":
+ version: 2.3.0
+ resolution: "domelementtype@npm:2.3.0"
+ checksum: ee837a318ff702622f383409d1f5b25dd1024b692ef64d3096ff702e26339f8e345820f29a68bcdcea8cfee3531776b3382651232fbeae95612d6f0a75efb4f6
+ languageName: node
+ linkType: hard
+
+"domhandler@npm:^5.0.2, domhandler@npm:^5.0.3":
+ version: 5.0.3
+ resolution: "domhandler@npm:5.0.3"
+ dependencies:
+ domelementtype: ^2.3.0
+ checksum: 0f58f4a6af63e6f3a4320aa446d28b5790a009018707bce2859dcb1d21144c7876482b5188395a188dfa974238c019e0a1e610d2fc269a12b2c192ea2b0b131c
+ languageName: node
+ linkType: hard
+
+"domutils@npm:^3.0.1":
+ version: 3.2.2
+ resolution: "domutils@npm:3.2.2"
+ dependencies:
+ dom-serializer: ^2.0.0
+ domelementtype: ^2.3.0
+ domhandler: ^5.0.3
+ checksum: ae941d56f03d857077d55dde9297e960a625229fc2b933187cc4123084d7c2d2517f58283a7336567127029f1e008449bac8ac8506d44341e29e3bb18e02f906
+ languageName: node
+ linkType: hard
+
"dot-prop@npm:^5.1.0":
version: 5.3.0
resolution: "dot-prop@npm:5.3.0"
@@ -5946,6 +7302,13 @@ __metadata:
languageName: node
linkType: hard
+"entities@npm:^4.2.0":
+ version: 4.5.0
+ resolution: "entities@npm:4.5.0"
+ checksum: 853f8ebd5b425d350bffa97dd6958143179a5938352ccae092c62d1267c4e392a039be1bae7d51b6e4ffad25f51f9617531fedf5237f15df302ccfb452cbf2d7
+ languageName: node
+ linkType: hard
+
"env-editor@npm:^0.4.1":
version: 0.4.2
resolution: "env-editor@npm:0.4.2"
@@ -6690,7 +8053,21 @@ __metadata:
languageName: node
linkType: hard
-"expo-status-bar@npm:~2.0.1":
+"expo-navigation-bar@npm:^4.0.8":
+ version: 4.0.8
+ resolution: "expo-navigation-bar@npm:4.0.8"
+ dependencies:
+ "@react-native/normalize-colors": 0.76.7
+ debug: ^4.3.2
+ peerDependencies:
+ expo: "*"
+ react: "*"
+ react-native: "*"
+ checksum: cb43df98f075945c8699ec3eafc0deb3fb3a77d025418ac349e1571e23a49664d212b14644c53512e48977654971a5255bba376a44b737909a22d80f74cdbcbb
+ languageName: node
+ linkType: hard
+
+"expo-status-bar@npm:^2.0.1, expo-status-bar@npm:~2.0.1":
version: 2.0.1
resolution: "expo-status-bar@npm:2.0.1"
peerDependencies:
@@ -6888,6 +8265,13 @@ __metadata:
languageName: node
linkType: hard
+"filter-obj@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "filter-obj@npm:1.1.0"
+ checksum: cf2104a7c45ff48e7f505b78a3991c8f7f30f28bd8106ef582721f321f1c6277f7751aacd5d83026cb079d9d5091082f588d14a72e7c5d720ece79118fa61e10
+ languageName: node
+ linkType: hard
+
"finalhandler@npm:1.1.2":
version: 1.1.2
resolution: "finalhandler@npm:1.1.2"
@@ -7211,6 +8595,13 @@ __metadata:
languageName: node
linkType: hard
+"get-nonce@npm:^1.0.0":
+ version: 1.0.1
+ resolution: "get-nonce@npm:1.0.1"
+ checksum: e2614e43b4694c78277bb61b0f04583d45786881289285c73770b07ded246a98be7e1f78b940c80cbe6f2b07f55f0b724e6db6fd6f1bcbd1e8bdac16521074ed
+ languageName: node
+ linkType: hard
+
"get-package-type@npm:^0.1.0":
version: 0.1.0
resolution: "get-package-type@npm:0.1.0"
@@ -7668,6 +9059,15 @@ __metadata:
languageName: node
linkType: hard
+"hoist-non-react-statics@npm:^3.3.0":
+ version: 3.3.2
+ resolution: "hoist-non-react-statics@npm:3.3.2"
+ dependencies:
+ react-is: ^16.7.0
+ checksum: b1538270429b13901ee586aa44f4cc3ecd8831c061d06cb8322e50ea17b3f5ce4d0e2e66394761e6c8e152cd8c34fb3b4b690116c6ce2bd45b18c746516cb9e8
+ languageName: node
+ linkType: hard
+
"hosted-git-info@npm:^2.1.4":
version: 2.8.9
resolution: "hosted-git-info@npm:2.8.9"
@@ -9619,6 +11019,15 @@ __metadata:
languageName: node
linkType: hard
+"linkify-it@npm:^5.0.0":
+ version: 5.0.0
+ resolution: "linkify-it@npm:5.0.0"
+ dependencies:
+ uc.micro: ^2.0.0
+ checksum: b0b86cadaf816b64c947a83994ceaad1c15f9fe7e079776ab88699fb71afd7b8fc3fd3d0ae5ebec8c92c1d347be9ba257b8aef338c0ebf81b0d27dcf429a765a
+ languageName: node
+ linkType: hard
+
"locate-path@npm:^3.0.0":
version: 3.0.0
resolution: "locate-path@npm:3.0.0"
@@ -9838,6 +11247,17 @@ __metadata:
languageName: node
linkType: hard
+"lucide-react-native@npm:^0.479.0":
+ version: 0.479.0
+ resolution: "lucide-react-native@npm:0.479.0"
+ peerDependencies:
+ react: ^16.5.1 || ^17.0.0 || ^18.0.0
+ react-native: "*"
+ react-native-svg: ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0
+ checksum: 854ad43da12e9399630a93821cc41dbd9d1c037794400a72041ac97af634fa26727eb2f193bbf2ae2fe37d00aef740a4f27997c26935e92e1b3cbd184cd2264a
+ languageName: node
+ linkType: hard
+
"macos-release@npm:^3.1.0":
version: 3.3.0
resolution: "macos-release@npm:3.3.0"
@@ -9949,6 +11369,20 @@ __metadata:
languageName: node
linkType: hard
+"mdn-data@npm:2.0.14":
+ version: 2.0.14
+ resolution: "mdn-data@npm:2.0.14"
+ checksum: 9d0128ed425a89f4cba8f787dca27ad9408b5cb1b220af2d938e2a0629d17d879a34d2cb19318bdb26c3f14c77dd5dfbae67211f5caaf07b61b1f2c5c8c7dc16
+ languageName: node
+ linkType: hard
+
+"mdurl@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "mdurl@npm:2.0.0"
+ checksum: 880bc289ef668df0bb34c5b2b5aaa7b6ea755052108cdaf4a5e5968ad01cf27e74927334acc9ebcc50a8628b65272ae6b1fd51fae1330c130e261c0466e1a3b2
+ languageName: node
+ linkType: hard
+
"memoize-one@npm:^5.0.0":
version: 5.2.1
resolution: "memoize-one@npm:5.2.1"
@@ -10772,6 +12206,15 @@ __metadata:
languageName: node
linkType: hard
+"nanoid@npm:^3.1.23, nanoid@npm:^3.3.1":
+ version: 3.3.9
+ resolution: "nanoid@npm:3.3.9"
+ bin:
+ nanoid: bin/nanoid.cjs
+ checksum: 42b1dc3e05d6d4f846e65538dd6fbdf78419d8ef60c531f0faf3264cc90600041ebb53c4276013947e03dc3c9a1ac1fce5bb9e1c3a634db608e95349d7e9d3b6
+ languageName: node
+ linkType: hard
+
"nanoid@npm:^3.3.7, nanoid@npm:^3.3.8":
version: 3.3.8
resolution: "nanoid@npm:3.3.8"
@@ -10781,7 +12224,7 @@ __metadata:
languageName: node
linkType: hard
-"nativewind@npm:4.x.x, nativewind@npm:^4.1.23":
+"nativewind@npm:^4.1.23":
version: 4.1.23
resolution: "nativewind@npm:4.1.23"
dependencies:
@@ -11029,6 +12472,15 @@ __metadata:
languageName: node
linkType: hard
+"nth-check@npm:^2.0.1":
+ version: 2.1.1
+ resolution: "nth-check@npm:2.1.1"
+ dependencies:
+ boolbase: ^1.0.0
+ checksum: 5afc3dafcd1573b08877ca8e6148c52abd565f1d06b1eb08caf982e3fa289a82f2cae697ffb55b5021e146d60443f1590a5d6b944844e944714a5b549675bcd3
+ languageName: node
+ linkType: hard
+
"nullthrows@npm:^1.1.1":
version: 1.1.1
resolution: "nullthrows@npm:1.1.1"
@@ -11907,7 +13359,7 @@ __metadata:
languageName: node
linkType: hard
-"prop-types@npm:^15.8.1":
+"prop-types@npm:^15.7.2, prop-types@npm:^15.8.1":
version: 15.8.1
resolution: "prop-types@npm:15.8.1"
dependencies:
@@ -11997,6 +13449,18 @@ __metadata:
languageName: node
linkType: hard
+"query-string@npm:^7.1.3":
+ version: 7.1.3
+ resolution: "query-string@npm:7.1.3"
+ dependencies:
+ decode-uri-component: ^0.2.2
+ filter-obj: ^1.1.0
+ split-on-first: ^1.0.0
+ strict-uri-encode: ^2.0.0
+ checksum: 91af02dcd9cc9227a052841d5c2eecb80a0d6489d05625df506a097ef1c59037cfb5e907f39b84643cbfd535c955abec3e553d0130a7b510120c37d06e0f4346
+ languageName: node
+ linkType: hard
+
"queue-microtask@npm:^1.2.2":
version: 1.2.3
resolution: "queue-microtask@npm:1.2.3"
@@ -12070,7 +13534,7 @@ __metadata:
languageName: node
linkType: hard
-"react-is@npm:^16.13.1":
+"react-is@npm:^16.13.0, react-is@npm:^16.13.1, react-is@npm:^16.7.0":
version: 16.13.1
resolution: "react-is@npm:16.13.1"
checksum: f7a19ac3496de32ca9ae12aa030f00f14a3d45374f1ceca0af707c831b2a6098ef0d6bdae51bd437b0a306d7f01d4677fcc8de7c0d331eb47ad0f46130e53c5f
@@ -12140,7 +13604,28 @@ __metadata:
languageName: node
linkType: hard
-"react-native-is-edge-to-edge@npm:1.1.6":
+"react-native-elevation@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "react-native-elevation@npm:1.0.0"
+ checksum: 988edf86b441459e65f5121b0f916087c94dc0fb4bf7a36da4718b633644dbf10313054208cc4758302fbaa7e1d7b99d29004efc937466ecd7d66c2372f47129
+ languageName: node
+ linkType: hard
+
+"react-native-gesture-handler@npm:^2.24.0":
+ version: 2.24.0
+ resolution: "react-native-gesture-handler@npm:2.24.0"
+ dependencies:
+ "@egjs/hammerjs": ^2.0.17
+ hoist-non-react-statics: ^3.3.0
+ invariant: ^2.2.4
+ peerDependencies:
+ react: "*"
+ react-native: "*"
+ checksum: 65abaeef68180fee2811d01d88ff50c231a91faca05279222fcaaa55349e758b68a7d6a9ac3eddfb1887f6b4c4790ac195b99989f1ad8a2a1f3f3bdff3ba0a76
+ languageName: node
+ linkType: hard
+
+"react-native-is-edge-to-edge@npm:1.1.6, react-native-is-edge-to-edge@npm:^1.1.6":
version: 1.1.6
resolution: "react-native-is-edge-to-edge@npm:1.1.6"
peerDependencies:
@@ -12150,6 +13635,41 @@ __metadata:
languageName: node
linkType: hard
+"react-native-keyboard-controller@npm:^1.16.7":
+ version: 1.16.7
+ resolution: "react-native-keyboard-controller@npm:1.16.7"
+ dependencies:
+ react-native-is-edge-to-edge: ^1.1.6
+ peerDependencies:
+ react: "*"
+ react-native: "*"
+ react-native-reanimated: ">=3.0.0"
+ checksum: a0c051d90dec2c70e67209e9bccb9f021190659192dd51228e3a29441262717605e406dfe44bc9f60234b57ba5567c5bcbd48ae16c0860af59cf51b1b5e7a088
+ languageName: node
+ linkType: hard
+
+"react-native-mmkv@npm:^3.2.0":
+ version: 3.2.0
+ resolution: "react-native-mmkv@npm:3.2.0"
+ peerDependencies:
+ react: "*"
+ react-native: "*"
+ checksum: 766944a7cbf265e27b57576e51bff8604cd8f58c88eaec78bd93d4ce10ff9127d5f75f4c3bb03d6c7ce5dafa07c65e233d5363c0504db802cc88eaf1ccbffaa1
+ languageName: node
+ linkType: hard
+
+"react-native-modal-datetime-picker@npm:^18.0.0":
+ version: 18.0.0
+ resolution: "react-native-modal-datetime-picker@npm:18.0.0"
+ dependencies:
+ prop-types: ^15.7.2
+ peerDependencies:
+ "@react-native-community/datetimepicker": ">=6.7.0"
+ react-native: ">=0.65.0"
+ checksum: 30d28a8e599c7a36df4c3e93928aa246087edb95a82a98cb1162b045d18db47447c4e28a89190c83a8258f080066531b2b67805a9aeb007b135d62abfccf8c4c
+ languageName: node
+ linkType: hard
+
"react-native-nayan-example@workspace:example":
version: 0.0.0-use.local
resolution: "react-native-nayan-example@workspace:example"
@@ -12163,8 +13683,11 @@ __metadata:
react-dom: 18.3.1
react-native: 0.76.7
react-native-builder-bob: ^0.37.0
- react-native-reanimated: ^3.16.2
- react-native-safe-area-context: ^5.2.0
+ react-native-gesture-handler: ^2.24.0
+ react-native-keyboard-controller: ^1.16.7
+ react-native-mmkv: ^3.2.0
+ react-native-reanimated: ^3.16.1
+ react-native-safe-area-context: ^4.12.0
react-native-web: ~0.19.13
tailwindcss: ^3.4.17
languageName: unknown
@@ -12176,34 +13699,72 @@ __metadata:
dependencies:
"@commitlint/config-conventional": ^17.0.2
"@evilmartians/lefthook": ^1.5.0
+ "@gorhom/bottom-sheet": ^5.1.1
+ "@react-native-community/datetimepicker": ^8.3.0
"@react-native/eslint-config": ^0.73.1
+ "@react-navigation/native": ^6.1.18
"@release-it/conventional-changelog": ^9.0.2
+ "@rn-primitives/accordion": ^1.1.0
+ "@rn-primitives/alert-dialog": ^1.1.0
+ "@rn-primitives/checkbox": ^1.1.0
+ "@rn-primitives/dialog": ^1.1.0
+ "@rn-primitives/label": ^1.1.0
+ "@rn-primitives/popover": ^1.1.0
+ "@rn-primitives/portal": ^1.1.0
+ "@rn-primitives/progress": ^1.1.0
+ "@rn-primitives/radio-group": ^1.1.0
+ "@rn-primitives/select": ^1.1.0
+ "@rn-primitives/separator": ^1.1.0
+ "@rn-primitives/slot": ^1.1.0
+ "@rn-primitives/switch": ^1.1.0
+ "@rn-primitives/tooltip": ^1.1.0
+ "@rn-primitives/types": ^1.1.0
"@types/jest": ^29.5.5
"@types/react": ^18.2.44
+ class-variance-authority: ^0.7.1
+ clsx: ^2.1.1
commitlint: ^17.0.2
+ date-fns: ^4.1.0
del-cli: ^5.1.0
eslint: ^8.51.0
eslint-config-prettier: ^9.0.0
eslint-plugin-prettier: ^5.0.1
+ expo-navigation-bar: ^4.0.8
+ expo-status-bar: ^2.0.1
jest: ^29.7.0
- nativewind: 4.x.x
+ linkify-it: ^5.0.0
+ lucide-react-native: ^0.479.0
+ mdurl: ^2.0.0
+ nativewind: ^4.1.23
prettier: ^3.0.3
react: 18.3.1
react-native: 0.76.7
react-native-builder-bob: ^0.37.0
+ react-native-gesture-handler: ^2.24.0
+ react-native-mmkv: ^3.2.0
+ react-native-modal-datetime-picker: ^18.0.0
+ react-native-reanimated: ^3.16.1
+ react-native-safe-area-context: ^4.12.0
+ react-native-svg: ^15.11.2
+ react-native-toast-message: ^2.2.1
+ react-native-wheel-color-picker: ^1.3.1
release-it: ^17.10.0
- tailwindcss: 3.x.x
+ tailwind-merge: ^3.0.2
typescript: ^5.2.2
peerDependencies:
+ "@react-navigation/native": ">=6"
nativewind: ">=4"
react: "*"
react-native: "*"
+ react-native-gesture-handler: ">=2"
react-native-reanimated: ">=3"
+ react-native-safe-area-context: ">=4"
+ react-native-svg: "*"
tailwindcss: ">=3"
languageName: unknown
linkType: soft
-"react-native-reanimated@npm:^3.16.2":
+"react-native-reanimated@npm:^3.16.1":
version: 3.17.1
resolution: "react-native-reanimated@npm:3.17.1"
dependencies:
@@ -12227,13 +13788,37 @@ __metadata:
languageName: node
linkType: hard
-"react-native-safe-area-context@npm:^5.2.0":
- version: 5.3.0
- resolution: "react-native-safe-area-context@npm:5.3.0"
+"react-native-safe-area-context@npm:^4.12.0":
+ version: 4.14.1
+ resolution: "react-native-safe-area-context@npm:4.14.1"
+ peerDependencies:
+ react: "*"
+ react-native: "*"
+ checksum: acf94ea2a30a3ec5594b467f8e0942ac48c10cbb5d34d16beba33cc0052f7c82dfd6ace754fa55f41d55143f134d3d3fa908eaf4cc9dec5743d6c4483b23520a
+ languageName: node
+ linkType: hard
+
+"react-native-svg@npm:^15.11.2":
+ version: 15.11.2
+ resolution: "react-native-svg@npm:15.11.2"
+ dependencies:
+ css-select: ^5.1.0
+ css-tree: ^1.1.3
+ warn-once: 0.1.1
+ peerDependencies:
+ react: "*"
+ react-native: "*"
+ checksum: 7bc2d9a5b7ceb66905e358d995bf102d63ce017db40b024d31a6ada03c21733fd3620f9ad867d631b878e2380033ea8777e75c4f654bc5b420ea902695ed9ba8
+ languageName: node
+ linkType: hard
+
+"react-native-toast-message@npm:^2.2.1":
+ version: 2.2.1
+ resolution: "react-native-toast-message@npm:2.2.1"
peerDependencies:
react: "*"
react-native: "*"
- checksum: 21f18b1286fc7bc6f38f864b7468848c16c58106ae429633e8f655dabb80571beba19ac8aa8bc5e1b2e926d75afddd7ded919a56450aa00c36d56f7fb421f782
+ checksum: c6b5d231b3b617b3d3d893023673534fe2cc0c5f32bb5fc4aecfe239e9de2fb9f0e9a4086d776e53daf3bc2376dce16dcec13e1b5cf1554dbf51808695fc2441
languageName: node
linkType: hard
@@ -12256,6 +13841,15 @@ __metadata:
languageName: node
linkType: hard
+"react-native-wheel-color-picker@npm:^1.3.1":
+ version: 1.3.1
+ resolution: "react-native-wheel-color-picker@npm:1.3.1"
+ dependencies:
+ react-native-elevation: ^1.0.0
+ checksum: a9f34ff91e4181c3fb77b436393f3bd2232d7644c0193553b2ccbe3a9f71dd77f1d61884577c3be882f16baed2e91ef533d341fc874795fe1acd613b27549506
+ languageName: node
+ linkType: hard
+
"react-native@npm:0.76.7":
version: 0.76.7
resolution: "react-native@npm:0.76.7"
@@ -12317,6 +13911,57 @@ __metadata:
languageName: node
linkType: hard
+"react-remove-scroll-bar@npm:^2.3.7":
+ version: 2.3.8
+ resolution: "react-remove-scroll-bar@npm:2.3.8"
+ dependencies:
+ react-style-singleton: ^2.2.2
+ tslib: ^2.0.0
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ checksum: c4663247f689dbe51c370836edf735487f6d8796acb7f15b09e8a1c14e84c7997360e8e3d54de2bc9c0e782fed2b2c4127d15b4053e4d2cf26839e809e57605f
+ languageName: node
+ linkType: hard
+
+"react-remove-scroll@npm:^2.6.3":
+ version: 2.6.3
+ resolution: "react-remove-scroll@npm:2.6.3"
+ dependencies:
+ react-remove-scroll-bar: ^2.3.7
+ react-style-singleton: ^2.2.3
+ tslib: ^2.1.0
+ use-callback-ref: ^1.3.3
+ use-sidecar: ^1.1.3
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ checksum: a4afd320435cc25a6ee39d7cef2f605dca14cc7618e1cdab24ed0924fa71d8c3756626334dedc9a578945d7ba6f8f87d7b8b66b48034853dc4dbfbda0a1b228b
+ languageName: node
+ linkType: hard
+
+"react-style-singleton@npm:^2.2.2, react-style-singleton@npm:^2.2.3":
+ version: 2.2.3
+ resolution: "react-style-singleton@npm:2.2.3"
+ dependencies:
+ get-nonce: ^1.0.0
+ tslib: ^2.0.0
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ checksum: a7b0bf493c9231065ebafa84c4237aed997c746c561196121b7de82fe155a5355b372db5070a3ac9fe980cf7f60dc0f1e8cf6402a2aa5b2957392932ccf76e76
+ languageName: node
+ linkType: hard
+
"react@npm:18.3.1":
version: 18.3.1
resolution: "react@npm:18.3.1"
@@ -13447,6 +15092,13 @@ __metadata:
languageName: node
linkType: hard
+"split-on-first@npm:^1.0.0":
+ version: 1.1.0
+ resolution: "split-on-first@npm:1.1.0"
+ checksum: 16ff85b54ddcf17f9147210a4022529b343edbcbea4ce977c8f30e38408b8d6e0f25f92cd35b86a524d4797f455e29ab89eb8db787f3c10708e0b47ebf528d30
+ languageName: node
+ linkType: hard
+
"split2@npm:^3.0.0, split2@npm:^3.2.2":
version: 3.2.2
resolution: "split2@npm:3.2.2"
@@ -13550,6 +15202,13 @@ __metadata:
languageName: node
linkType: hard
+"strict-uri-encode@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "strict-uri-encode@npm:2.0.0"
+ checksum: eaac4cf978b6fbd480f1092cab8b233c9b949bcabfc9b598dd79a758f7243c28765ef7639c876fa72940dac687181b35486ea01ff7df3e65ce3848c64822c581
+ languageName: node
+ linkType: hard
+
"string-length@npm:^4.0.1":
version: 4.0.2
resolution: "string-length@npm:4.0.2"
@@ -13881,7 +15540,14 @@ __metadata:
languageName: node
linkType: hard
-"tailwindcss@npm:3.x.x, tailwindcss@npm:^3.4.17":
+"tailwind-merge@npm:^3.0.2":
+ version: 3.0.2
+ resolution: "tailwind-merge@npm:3.0.2"
+ checksum: fdcf4d9e65c8767077b93de4f6296125d9a761fce1ef85715e7cadbf467973a6b1c5fd95ca3a0416013b24ecfba61d0340f201d7becd1fc1f2f771e007bd5bd3
+ languageName: node
+ linkType: hard
+
+"tailwindcss@npm:^3.4.17":
version: 3.4.17
resolution: "tailwindcss@npm:3.4.17"
dependencies:
@@ -14176,7 +15842,7 @@ __metadata:
languageName: node
linkType: hard
-"tslib@npm:^2.0.1, tslib@npm:^2.1.0, tslib@npm:^2.4.0, tslib@npm:^2.6.2":
+"tslib@npm:^2.0.0, tslib@npm:^2.0.1, tslib@npm:^2.1.0, tslib@npm:^2.4.0, tslib@npm:^2.6.2":
version: 2.8.1
resolution: "tslib@npm:2.8.1"
checksum: e4aba30e632b8c8902b47587fd13345e2827fa639e7c3121074d5ee0880723282411a8838f830b55100cbe4517672f84a2472667d355b81e8af165a55dc6203a
@@ -14369,6 +16035,13 @@ __metadata:
languageName: node
linkType: hard
+"uc.micro@npm:^2.0.0":
+ version: 2.1.0
+ resolution: "uc.micro@npm:2.1.0"
+ checksum: 37197358242eb9afe367502d4638ac8c5838b78792ab218eafe48287b0ed28aaca268ec0392cc5729f6c90266744de32c06ae938549aee041fc93b0f9672d6b2
+ languageName: node
+ linkType: hard
+
"uglify-js@npm:^3.1.4":
version: 3.19.3
resolution: "uglify-js@npm:3.19.3"
@@ -14577,6 +16250,55 @@ __metadata:
languageName: node
linkType: hard
+"use-callback-ref@npm:^1.3.3":
+ version: 1.3.3
+ resolution: "use-callback-ref@npm:1.3.3"
+ dependencies:
+ tslib: ^2.0.0
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ checksum: 4da1c82d7a2409cee6c882748a40f4a083decf238308bf12c3d0166f0e338f8d512f37b8d11987eb5a421f14b9b5b991edf3e11ed25c3bb7a6559081f8359b44
+ languageName: node
+ linkType: hard
+
+"use-latest-callback@npm:^0.2.1":
+ version: 0.2.3
+ resolution: "use-latest-callback@npm:0.2.3"
+ peerDependencies:
+ react: ">=16.8"
+ checksum: 5db2dc0d414508c768ba4d1a337bd73dd0fb2a77eccc9dd7051517b28cd71c849c5e9230b5c97fc76a3811c1500f210cb4e4ebb95fe20347e5f910509a8e533c
+ languageName: node
+ linkType: hard
+
+"use-sidecar@npm:^1.1.3":
+ version: 1.1.3
+ resolution: "use-sidecar@npm:1.1.3"
+ dependencies:
+ detect-node-es: ^1.1.0
+ tslib: ^2.0.0
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ checksum: 88664c6b2c5b6e53e4d5d987694c9053cea806da43130248c74ca058945c8caa6ccb7b1787205a9eb5b9d124633e42153848904002828acabccdc48cda026622
+ languageName: node
+ linkType: hard
+
+"use-sync-external-store@npm:^1.2.2":
+ version: 1.4.0
+ resolution: "use-sync-external-store@npm:1.4.0"
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ checksum: dc3843a1b59ac8bd01417bd79498d4c688d5df8bf4801be50008ef4bfaacb349058c0b1605b5b43c828e0a2d62722d7e861573b3f31cea77a7f23e8b0fc2f7e3
+ languageName: node
+ linkType: hard
+
"util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2, util-deprecate@npm:~1.0.1":
version: 1.0.2
resolution: "util-deprecate@npm:1.0.2"
@@ -14667,6 +16389,13 @@ __metadata:
languageName: node
linkType: hard
+"warn-once@npm:0.1.1":
+ version: 0.1.1
+ resolution: "warn-once@npm:0.1.1"
+ checksum: e6a5a1f5a8dba7744399743d3cfb571db4c3947897875d4962a7c5b1bf2195ab4518c838cb4cea652e71729f21bba2e98dc75686f5fccde0fabbd894e2ed0c0d
+ languageName: node
+ linkType: hard
+
"wcwidth@npm:^1.0.1":
version: 1.0.1
resolution: "wcwidth@npm:1.0.1"
@@ -15123,3 +16852,23 @@ __metadata:
checksum: 1c474d4b30a8c130e679279c5c2c33a0d48eba9684ffa0252cc64846c121fb56c3f25457fef902edbe1e2d7a7872130073a9fc8e795299d75e13fa3f5f548f1b
languageName: node
linkType: hard
+
+"zustand@npm:^4.4.7":
+ version: 4.5.6
+ resolution: "zustand@npm:4.5.6"
+ dependencies:
+ use-sync-external-store: ^1.2.2
+ peerDependencies:
+ "@types/react": ">=16.8"
+ immer: ">=9.0.6"
+ react: ">=16.8"
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ immer:
+ optional: true
+ react:
+ optional: true
+ checksum: c4e9c809c92195fa2f9e8e0cd6631b6830fc9676343c8584c20cf26d402f220c54ae0479a299dbcd5e1cdfc5977f116838f1b5f39d6a4997ff727c6cebe60d3f
+ languageName: node
+ linkType: hard