From 37745648ad031dad9240a7cb2ae7816e3740d004 Mon Sep 17 00:00:00 2001 From: gibbyb Date: Tue, 8 Oct 2024 12:25:29 -0500 Subject: [PATCH] Initial commit Generated by create-expo-app 3.0.0. --- .gitignore | 14 + README.md | 50 + app.json | 36 + app/(tabs)/_layout.tsx | 37 + app/(tabs)/explore.tsx | 102 + app/(tabs)/index.tsx | 70 + app/+html.tsx | 39 + app/+not-found.tsx | 32 + app/_layout.tsx | 37 + assets/fonts/SpaceMono-Regular.ttf | Bin 0 -> 93252 bytes assets/images/adaptive-icon.png | Bin 0 -> 17547 bytes assets/images/favicon.png | Bin 0 -> 1466 bytes assets/images/icon.png | Bin 0 -> 22380 bytes assets/images/partial-react-logo.png | Bin 0 -> 5075 bytes assets/images/react-logo.png | Bin 0 -> 6341 bytes assets/images/react-logo@2x.png | Bin 0 -> 14225 bytes assets/images/react-logo@3x.png | Bin 0 -> 21252 bytes assets/images/splash.png | Bin 0 -> 47346 bytes babel.config.js | 6 + components/Collapsible.tsx | 41 + components/ExternalLink.tsx | 24 + components/HelloWave.tsx | 37 + components/ParallaxScrollView.tsx | 76 + components/ThemedText.tsx | 60 + components/ThemedView.tsx | 14 + components/__tests__/ThemedText-test.tsx | 10 + .../__snapshots__/ThemedText-test.tsx.snap | 24 + components/navigation/TabBarIcon.tsx | 9 + constants/Colors.ts | 26 + hooks/useColorScheme.ts | 1 + hooks/useColorScheme.web.ts | 8 + hooks/useThemeColor.ts | 22 + package-lock.json | 20013 ++++++++++++++++ package.json | 49 + scripts/reset-project.js | 73 + tsconfig.json | 17 + 36 files changed, 20927 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 app.json create mode 100644 app/(tabs)/_layout.tsx create mode 100644 app/(tabs)/explore.tsx create mode 100644 app/(tabs)/index.tsx create mode 100644 app/+html.tsx create mode 100644 app/+not-found.tsx create mode 100644 app/_layout.tsx create mode 100755 assets/fonts/SpaceMono-Regular.ttf create mode 100644 assets/images/adaptive-icon.png create mode 100644 assets/images/favicon.png create mode 100644 assets/images/icon.png create mode 100644 assets/images/partial-react-logo.png create mode 100644 assets/images/react-logo.png create mode 100644 assets/images/react-logo@2x.png create mode 100644 assets/images/react-logo@3x.png create mode 100644 assets/images/splash.png create mode 100644 babel.config.js create mode 100644 components/Collapsible.tsx create mode 100644 components/ExternalLink.tsx create mode 100644 components/HelloWave.tsx create mode 100644 components/ParallaxScrollView.tsx create mode 100644 components/ThemedText.tsx create mode 100644 components/ThemedView.tsx create mode 100644 components/__tests__/ThemedText-test.tsx create mode 100644 components/__tests__/__snapshots__/ThemedText-test.tsx.snap create mode 100644 components/navigation/TabBarIcon.tsx create mode 100644 constants/Colors.ts create mode 100644 hooks/useColorScheme.ts create mode 100644 hooks/useColorScheme.web.ts create mode 100644 hooks/useThemeColor.ts create mode 100644 package-lock.json create mode 100644 package.json create mode 100755 scripts/reset-project.js create mode 100644 tsconfig.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ec8a36a --- /dev/null +++ b/.gitignore @@ -0,0 +1,14 @@ +node_modules/ +.expo/ +dist/ +npm-debug.* +*.jks +*.p8 +*.p12 +*.key +*.mobileprovision +*.orig.* +web-build/ + +# macOS +.DS_Store diff --git a/README.md b/README.md new file mode 100644 index 0000000..cd4feb8 --- /dev/null +++ b/README.md @@ -0,0 +1,50 @@ +# Welcome to your Expo app 👋 + +This is an [Expo](https://expo.dev) project created with [`create-expo-app`](https://www.npmjs.com/package/create-expo-app). + +## Get started + +1. Install dependencies + + ```bash + npm install + ``` + +2. Start the app + + ```bash + npx expo start + ``` + +In the output, you'll find options to open the app in a + +- [development build](https://docs.expo.dev/develop/development-builds/introduction/) +- [Android emulator](https://docs.expo.dev/workflow/android-studio-emulator/) +- [iOS simulator](https://docs.expo.dev/workflow/ios-simulator/) +- [Expo Go](https://expo.dev/go), a limited sandbox for trying out app development with Expo + +You can start developing by editing the files inside the **app** directory. This project uses [file-based routing](https://docs.expo.dev/router/introduction). + +## Get a fresh project + +When you're ready, run: + +```bash +npm run reset-project +``` + +This command will move the starter code to the **app-example** directory and create a blank **app** directory where you can start developing. + +## Learn more + +To learn more about developing your project with Expo, look at the following resources: + +- [Expo documentation](https://docs.expo.dev/): Learn fundamentals, or go into advanced topics with our [guides](https://docs.expo.dev/guides). +- [Learn Expo tutorial](https://docs.expo.dev/tutorial/introduction/): Follow a step-by-step tutorial where you'll create a project that runs on Android, iOS, and the web. + +## Join the community + +Join our community of developers creating universal apps. + +- [Expo on GitHub](https://github.com/expo/expo): View our open source platform and contribute. +- [Discord community](https://chat.expo.dev): Chat with Expo users and ask questions. diff --git a/app.json b/app.json new file mode 100644 index 0000000..3b1085e --- /dev/null +++ b/app.json @@ -0,0 +1,36 @@ +{ + "expo": { + "name": "Wavelength", + "slug": "Wavelength", + "version": "1.0.0", + "orientation": "portrait", + "icon": "./assets/images/icon.png", + "scheme": "myapp", + "userInterfaceStyle": "automatic", + "splash": { + "image": "./assets/images/splash.png", + "resizeMode": "contain", + "backgroundColor": "#ffffff" + }, + "ios": { + "supportsTablet": true + }, + "android": { + "adaptiveIcon": { + "foregroundImage": "./assets/images/adaptive-icon.png", + "backgroundColor": "#ffffff" + } + }, + "web": { + "bundler": "metro", + "output": "static", + "favicon": "./assets/images/favicon.png" + }, + "plugins": [ + "expo-router" + ], + "experiments": { + "typedRoutes": true + } + } +} diff --git a/app/(tabs)/_layout.tsx b/app/(tabs)/_layout.tsx new file mode 100644 index 0000000..22a49b6 --- /dev/null +++ b/app/(tabs)/_layout.tsx @@ -0,0 +1,37 @@ +import { Tabs } from 'expo-router'; +import React from 'react'; + +import { TabBarIcon } from '@/components/navigation/TabBarIcon'; +import { Colors } from '@/constants/Colors'; +import { useColorScheme } from '@/hooks/useColorScheme'; + +export default function TabLayout() { + const colorScheme = useColorScheme(); + + return ( + + ( + + ), + }} + /> + ( + + ), + }} + /> + + ); +} diff --git a/app/(tabs)/explore.tsx b/app/(tabs)/explore.tsx new file mode 100644 index 0000000..e480218 --- /dev/null +++ b/app/(tabs)/explore.tsx @@ -0,0 +1,102 @@ +import Ionicons from '@expo/vector-icons/Ionicons'; +import { StyleSheet, Image, Platform } from 'react-native'; + +import { Collapsible } from '@/components/Collapsible'; +import { ExternalLink } from '@/components/ExternalLink'; +import ParallaxScrollView from '@/components/ParallaxScrollView'; +import { ThemedText } from '@/components/ThemedText'; +import { ThemedView } from '@/components/ThemedView'; + +export default function TabTwoScreen() { + return ( + }> + + Explore + + This app includes example code to help you get started. + + + This app has two screens:{' '} + app/(tabs)/index.tsx and{' '} + app/(tabs)/explore.tsx + + + The layout file in app/(tabs)/_layout.tsx{' '} + sets up the tab navigator. + + + Learn more + + + + + You can open this project on Android, iOS, and the web. To open the web version, press{' '} + w in the terminal running this project. + + + + + For static images, you can use the @2x and{' '} + @3x suffixes to provide files for + different screen densities + + + + Learn more + + + + + Open app/_layout.tsx to see how to load{' '} + + custom fonts such as this one. + + + + Learn more + + + + + This template has light and dark mode support. The{' '} + useColorScheme() hook lets you inspect + what the user's current color scheme is, and so you can adjust UI colors accordingly. + + + Learn more + + + + + This template includes an example of an animated component. The{' '} + components/HelloWave.tsx component uses + the powerful react-native-reanimated library + to create a waving hand animation. + + {Platform.select({ + ios: ( + + The components/ParallaxScrollView.tsx{' '} + component provides a parallax effect for the header image. + + ), + })} + + + ); +} + +const styles = StyleSheet.create({ + headerImage: { + color: '#808080', + bottom: -90, + left: -35, + position: 'absolute', + }, + titleContainer: { + flexDirection: 'row', + gap: 8, + }, +}); diff --git a/app/(tabs)/index.tsx b/app/(tabs)/index.tsx new file mode 100644 index 0000000..324aeb7 --- /dev/null +++ b/app/(tabs)/index.tsx @@ -0,0 +1,70 @@ +import { Image, StyleSheet, Platform } from 'react-native'; + +import { HelloWave } from '@/components/HelloWave'; +import ParallaxScrollView from '@/components/ParallaxScrollView'; +import { ThemedText } from '@/components/ThemedText'; +import { ThemedView } from '@/components/ThemedView'; + +export default function HomeScreen() { + return ( + + }> + + Welcome! + + + + Step 1: Try it + + Edit app/(tabs)/index.tsx to see changes. + Press{' '} + + {Platform.select({ ios: 'cmd + d', android: 'cmd + m' })} + {' '} + to open developer tools. + + + + Step 2: Explore + + Tap the Explore tab to learn more about what's included in this starter app. + + + + Step 3: Get a fresh start + + When you're ready, run{' '} + npm run reset-project to get a fresh{' '} + app directory. This will move the current{' '} + app to{' '} + app-example. + + + + ); +} + +const styles = StyleSheet.create({ + titleContainer: { + flexDirection: 'row', + alignItems: 'center', + gap: 8, + }, + stepContainer: { + gap: 8, + marginBottom: 8, + }, + reactLogo: { + height: 178, + width: 290, + bottom: 0, + left: 0, + position: 'absolute', + }, +}); diff --git a/app/+html.tsx b/app/+html.tsx new file mode 100644 index 0000000..8b92456 --- /dev/null +++ b/app/+html.tsx @@ -0,0 +1,39 @@ +import { ScrollViewStyleReset } from 'expo-router/html'; +import { type PropsWithChildren } from 'react'; + +/** + * This file is web-only and used to configure the root HTML for every web page during static rendering. + * The contents of this function only run in Node.js environments and do not have access to the DOM or browser APIs. + */ +export default function Root({ children }: PropsWithChildren) { + return ( + + + + + + + {/* + Disable body scrolling on web. This makes ScrollView components work closer to how they do on native. + However, body scrolling is often nice to have for mobile web. If you want to enable it, remove this line. + */} + + + {/* Using raw CSS styles as an escape-hatch to ensure the background color never flickers in dark-mode. */} +