package-installer-cli 2.3.0 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bundle-standalone/cli-with-packages.js +568 -369
- data/bundle-standalone/template.json +87 -14
- data/bundle-standalone/templates/c++_c/crow/template/CMakeLists.txt +18 -0
- data/bundle-standalone/templates/c++_c/crow/template/README.md +11 -0
- data/bundle-standalone/templates/c++_c/crow/template/include/routes.hpp +19 -0
- data/bundle-standalone/templates/c++_c/crow/template/main.cpp +12 -0
- data/bundle-standalone/templates/combination-templates/nextjs-auth0-shadcn/README.md +36 -0
- data/bundle-standalone/templates/combination-templates/nextjs-auth0-shadcn/eslint.config.mjs +16 -0
- data/bundle-standalone/templates/combination-templates/nextjs-auth0-shadcn/middleware.ts +18 -0
- data/bundle-standalone/templates/combination-templates/nextjs-auth0-shadcn/next.config.ts +7 -0
- data/bundle-standalone/templates/combination-templates/nextjs-auth0-shadcn/package.json +28 -0
- data/bundle-standalone/templates/combination-templates/nextjs-auth0-shadcn/pnpm-lock.yaml +3819 -0
- data/bundle-standalone/templates/combination-templates/nextjs-auth0-shadcn/postcss.config.mjs +5 -0
- data/bundle-standalone/templates/combination-templates/nextjs-auth0-shadcn/public/file.svg +1 -0
- data/bundle-standalone/templates/combination-templates/nextjs-auth0-shadcn/public/globe.svg +1 -0
- data/bundle-standalone/templates/combination-templates/nextjs-auth0-shadcn/public/next.svg +1 -0
- data/bundle-standalone/templates/combination-templates/nextjs-auth0-shadcn/public/vercel.svg +1 -0
- data/bundle-standalone/templates/combination-templates/nextjs-auth0-shadcn/public/window.svg +1 -0
- data/bundle-standalone/templates/combination-templates/nextjs-auth0-shadcn/src/app/favicon.ico +0 -0
- data/bundle-standalone/templates/combination-templates/nextjs-auth0-shadcn/src/app/globals.css +26 -0
- data/bundle-standalone/templates/combination-templates/nextjs-auth0-shadcn/src/app/layout.tsx +34 -0
- data/bundle-standalone/templates/combination-templates/nextjs-auth0-shadcn/src/app/page.tsx +33 -0
- data/bundle-standalone/templates/combination-templates/nextjs-auth0-shadcn/src/lib/auth0.ts +3 -0
- data/bundle-standalone/templates/combination-templates/nextjs-auth0-shadcn/tsconfig.json +27 -0
- data/bundle-standalone/templates/combination-templates/nextjs-clerk-shadcn/README.md +36 -0
- data/bundle-standalone/templates/combination-templates/nextjs-clerk-shadcn/components.json +21 -0
- data/bundle-standalone/templates/combination-templates/nextjs-clerk-shadcn/eslint.config.mjs +16 -0
- data/bundle-standalone/templates/combination-templates/nextjs-clerk-shadcn/middleware.ts +12 -0
- data/bundle-standalone/templates/combination-templates/nextjs-clerk-shadcn/next.config.ts +7 -0
- data/bundle-standalone/templates/combination-templates/nextjs-clerk-shadcn/package.json +37 -0
- data/bundle-standalone/templates/combination-templates/nextjs-clerk-shadcn/pnpm-lock.yaml +4113 -0
- data/bundle-standalone/templates/combination-templates/nextjs-clerk-shadcn/postcss.config.mjs +5 -0
- data/bundle-standalone/templates/combination-templates/nextjs-clerk-shadcn/public/file.svg +1 -0
- data/bundle-standalone/templates/combination-templates/nextjs-clerk-shadcn/public/globe.svg +1 -0
- data/bundle-standalone/templates/combination-templates/nextjs-clerk-shadcn/public/next.svg +1 -0
- data/bundle-standalone/templates/combination-templates/nextjs-clerk-shadcn/public/vercel.svg +1 -0
- data/bundle-standalone/templates/combination-templates/nextjs-clerk-shadcn/public/window.svg +1 -0
- data/bundle-standalone/templates/combination-templates/nextjs-clerk-shadcn/src/app/favicon.ico +0 -0
- data/bundle-standalone/templates/combination-templates/nextjs-clerk-shadcn/src/app/globals.css +122 -0
- data/bundle-standalone/templates/combination-templates/nextjs-clerk-shadcn/src/app/layout.tsx +55 -0
- data/bundle-standalone/templates/combination-templates/nextjs-clerk-shadcn/src/app/page.tsx +10 -0
- data/bundle-standalone/templates/combination-templates/nextjs-clerk-shadcn/src/components/ui/button.tsx +59 -0
- data/bundle-standalone/templates/combination-templates/nextjs-clerk-shadcn/src/components/ui/card.tsx +92 -0
- data/bundle-standalone/templates/combination-templates/nextjs-clerk-shadcn/src/components/ui/input.tsx +21 -0
- data/bundle-standalone/templates/combination-templates/nextjs-clerk-shadcn/src/components/ui/textarea.tsx +18 -0
- data/bundle-standalone/templates/combination-templates/nextjs-clerk-shadcn/src/lib/utils.ts +6 -0
- data/bundle-standalone/templates/combination-templates/nextjs-clerk-shadcn/src/middleware.ts +12 -0
- data/bundle-standalone/templates/combination-templates/nextjs-clerk-shadcn/tsconfig.json +27 -0
- data/bundle-standalone/templates/combination-templates/nextjs-next-auth-shadcn/README.md +36 -0
- data/bundle-standalone/templates/combination-templates/nextjs-next-auth-shadcn/eslint.config.mjs +16 -0
- data/bundle-standalone/templates/combination-templates/nextjs-next-auth-shadcn/middleware.ts +0 -0
- data/bundle-standalone/templates/combination-templates/nextjs-next-auth-shadcn/next.config.ts +7 -0
- data/bundle-standalone/templates/combination-templates/nextjs-next-auth-shadcn/package.json +28 -0
- data/bundle-standalone/templates/combination-templates/nextjs-next-auth-shadcn/pnpm-lock.yaml +3862 -0
- data/bundle-standalone/templates/combination-templates/nextjs-next-auth-shadcn/postcss.config.mjs +5 -0
- data/bundle-standalone/templates/combination-templates/nextjs-next-auth-shadcn/public/file.svg +1 -0
- data/bundle-standalone/templates/combination-templates/nextjs-next-auth-shadcn/public/globe.svg +1 -0
- data/bundle-standalone/templates/combination-templates/nextjs-next-auth-shadcn/public/next.svg +1 -0
- data/bundle-standalone/templates/combination-templates/nextjs-next-auth-shadcn/public/vercel.svg +1 -0
- data/bundle-standalone/templates/combination-templates/nextjs-next-auth-shadcn/public/window.svg +1 -0
- data/bundle-standalone/templates/combination-templates/nextjs-next-auth-shadcn/src/app/api/auth/[...nextauth]/route.ts +6 -0
- data/bundle-standalone/templates/combination-templates/nextjs-next-auth-shadcn/src/app/favicon.ico +0 -0
- data/bundle-standalone/templates/combination-templates/nextjs-next-auth-shadcn/src/app/globals.css +26 -0
- data/bundle-standalone/templates/combination-templates/nextjs-next-auth-shadcn/src/app/layout.tsx +39 -0
- data/bundle-standalone/templates/combination-templates/nextjs-next-auth-shadcn/src/app/page.tsx +10 -0
- data/bundle-standalone/templates/combination-templates/nextjs-next-auth-shadcn/src/lib/auth-provider.tsx +7 -0
- data/bundle-standalone/templates/combination-templates/nextjs-next-auth-shadcn/src/lib/auth.ts +126 -0
- data/bundle-standalone/templates/combination-templates/nextjs-next-auth-shadcn/tsconfig.json +27 -0
- data/bundle-standalone/templates/game/unity/template/README.md +3 -0
- data/bundle-standalone/templates/game/unity/template/Scripts/PlayerController.cs +25 -0
- data/bundle-standalone/templates/game/unreal/template/README.md +3 -0
- data/bundle-standalone/templates/game/unreal/template/Source/PlayerCharacter.cpp +33 -0
- data/bundle-standalone/templates/game/unreal/template/Source/PlayerCharacter.h +20 -0
- data/bundle-standalone/templates/javascript/preactjs/javascript/template/index.html +13 -0
- data/bundle-standalone/templates/javascript/preactjs/javascript/template/package.json +18 -0
- data/bundle-standalone/templates/javascript/preactjs/javascript/template/public/vite.svg +1 -0
- data/bundle-standalone/templates/javascript/preactjs/javascript/template/src/app.css +25 -0
- data/bundle-standalone/templates/javascript/preactjs/javascript/template/src/app.jsx +43 -0
- data/bundle-standalone/templates/javascript/preactjs/javascript/template/src/assets/preact.svg +1 -0
- data/bundle-standalone/templates/javascript/preactjs/javascript/template/src/index.css +68 -0
- data/bundle-standalone/templates/javascript/preactjs/javascript/template/src/main.jsx +5 -0
- data/bundle-standalone/templates/javascript/preactjs/javascript/template/vite.config.js +7 -0
- data/bundle-standalone/templates/javascript/preactjs/typescript/template/index.html +13 -0
- data/bundle-standalone/templates/javascript/preactjs/typescript/template/package.json +20 -0
- data/bundle-standalone/templates/javascript/preactjs/typescript/template/public/vite.svg +1 -0
- data/bundle-standalone/templates/javascript/preactjs/typescript/template/src/app.css +25 -0
- data/bundle-standalone/templates/javascript/preactjs/typescript/template/src/app.tsx +43 -0
- data/bundle-standalone/templates/javascript/preactjs/typescript/template/src/assets/preact.svg +1 -0
- data/bundle-standalone/templates/javascript/preactjs/typescript/template/src/index.css +68 -0
- data/bundle-standalone/templates/javascript/preactjs/typescript/template/src/main.tsx +5 -0
- data/bundle-standalone/templates/javascript/preactjs/typescript/template/tsconfig.app.json +33 -0
- data/bundle-standalone/templates/javascript/preactjs/typescript/template/tsconfig.json +7 -0
- data/bundle-standalone/templates/javascript/preactjs/typescript/template/tsconfig.node.json +26 -0
- data/bundle-standalone/templates/javascript/preactjs/typescript/template/vite.config.ts +7 -0
- data/bundle-standalone/templates/javascript/solidjs/javascript/template/README.md +28 -0
- data/bundle-standalone/templates/javascript/solidjs/javascript/template/index.html +13 -0
- data/bundle-standalone/templates/javascript/solidjs/javascript/template/package.json +18 -0
- data/bundle-standalone/templates/javascript/solidjs/javascript/template/public/vite.svg +1 -0
- data/bundle-standalone/templates/javascript/solidjs/javascript/template/src/App.css +27 -0
- data/bundle-standalone/templates/javascript/solidjs/javascript/template/src/App.jsx +35 -0
- data/bundle-standalone/templates/javascript/solidjs/javascript/template/src/assets/solid.svg +1 -0
- data/bundle-standalone/templates/javascript/solidjs/javascript/template/src/index.css +68 -0
- data/bundle-standalone/templates/javascript/solidjs/javascript/template/src/index.jsx +8 -0
- data/bundle-standalone/templates/javascript/solidjs/javascript/template/vite.config.js +6 -0
- data/bundle-standalone/templates/javascript/solidjs/typescript/template/README.md +28 -0
- data/bundle-standalone/templates/javascript/solidjs/typescript/template/index.html +13 -0
- data/bundle-standalone/templates/javascript/solidjs/typescript/template/package.json +20 -0
- data/bundle-standalone/templates/javascript/solidjs/typescript/template/public/vite.svg +1 -0
- data/bundle-standalone/templates/javascript/solidjs/typescript/template/src/App.css +27 -0
- data/bundle-standalone/templates/javascript/solidjs/typescript/template/src/App.tsx +35 -0
- data/bundle-standalone/templates/javascript/solidjs/typescript/template/src/assets/solid.svg +1 -0
- data/bundle-standalone/templates/javascript/solidjs/typescript/template/src/index.css +68 -0
- data/bundle-standalone/templates/javascript/solidjs/typescript/template/src/index.tsx +8 -0
- data/bundle-standalone/templates/javascript/solidjs/typescript/template/tsconfig.app.json +29 -0
- data/bundle-standalone/templates/javascript/solidjs/typescript/template/tsconfig.json +7 -0
- data/bundle-standalone/templates/javascript/solidjs/typescript/template/tsconfig.node.json +26 -0
- data/bundle-standalone/templates/javascript/solidjs/typescript/template/vite.config.ts +6 -0
- data/bundle-standalone/templates/javascript/sveltejs/javascript/template/README.md +43 -0
- data/bundle-standalone/templates/javascript/sveltejs/javascript/template/index.html +13 -0
- data/bundle-standalone/templates/javascript/sveltejs/javascript/template/jsconfig.json +33 -0
- data/bundle-standalone/templates/javascript/sveltejs/javascript/template/package.json +16 -0
- data/bundle-standalone/templates/javascript/sveltejs/javascript/template/public/vite.svg +1 -0
- data/bundle-standalone/templates/javascript/sveltejs/javascript/template/src/App.svelte +47 -0
- data/bundle-standalone/templates/javascript/sveltejs/javascript/template/src/app.css +79 -0
- data/bundle-standalone/templates/javascript/sveltejs/javascript/template/src/assets/svelte.svg +1 -0
- data/bundle-standalone/templates/javascript/sveltejs/javascript/template/src/lib/Counter.svelte +10 -0
- data/bundle-standalone/templates/javascript/sveltejs/javascript/template/src/main.js +9 -0
- data/bundle-standalone/templates/javascript/sveltejs/javascript/template/svelte.config.js +8 -0
- data/bundle-standalone/templates/javascript/sveltejs/javascript/template/vite.config.js +7 -0
- data/bundle-standalone/templates/javascript/sveltejs/typescript/template/README.md +47 -0
- data/bundle-standalone/templates/javascript/sveltejs/typescript/template/index.html +13 -0
- data/bundle-standalone/templates/javascript/sveltejs/typescript/template/package.json +21 -0
- data/bundle-standalone/templates/javascript/sveltejs/typescript/template/public/vite.svg +1 -0
- data/bundle-standalone/templates/javascript/sveltejs/typescript/template/src/App.svelte +47 -0
- data/bundle-standalone/templates/javascript/sveltejs/typescript/template/src/app.css +79 -0
- data/bundle-standalone/templates/javascript/sveltejs/typescript/template/src/assets/svelte.svg +1 -0
- data/bundle-standalone/templates/javascript/sveltejs/typescript/template/src/lib/Counter.svelte +10 -0
- data/bundle-standalone/templates/javascript/sveltejs/typescript/template/src/main.ts +9 -0
- data/bundle-standalone/templates/javascript/sveltejs/typescript/template/svelte.config.js +8 -0
- data/bundle-standalone/templates/javascript/sveltejs/typescript/template/tsconfig.app.json +21 -0
- data/bundle-standalone/templates/javascript/sveltejs/typescript/template/tsconfig.json +7 -0
- data/bundle-standalone/templates/javascript/sveltejs/typescript/template/tsconfig.node.json +26 -0
- data/bundle-standalone/templates/javascript/sveltejs/typescript/template/vite.config.ts +7 -0
- data/bundle-standalone/templates/mobile/react-native/javascript/expo-cli-template/README.md +50 -0
- data/bundle-standalone/templates/mobile/react-native/javascript/expo-cli-template/app/(tabs)/_layout.jsx +35 -0
- data/bundle-standalone/templates/mobile/react-native/javascript/expo-cli-template/app/(tabs)/explore.jsx +112 -0
- data/bundle-standalone/templates/mobile/react-native/javascript/expo-cli-template/app/(tabs)/index.jsx +98 -0
- data/bundle-standalone/templates/mobile/react-native/javascript/expo-cli-template/app/_layout.jsx +24 -0
- data/bundle-standalone/templates/mobile/react-native/javascript/expo-cli-template/app/modal.jsx +29 -0
- data/bundle-standalone/templates/mobile/react-native/javascript/expo-cli-template/app.json +48 -0
- data/bundle-standalone/templates/mobile/react-native/javascript/expo-cli-template/assets/images/android-icon-background.png +0 -0
- data/bundle-standalone/templates/mobile/react-native/javascript/expo-cli-template/assets/images/android-icon-foreground.png +0 -0
- data/bundle-standalone/templates/mobile/react-native/javascript/expo-cli-template/assets/images/android-icon-monochrome.png +0 -0
- data/bundle-standalone/templates/mobile/react-native/javascript/expo-cli-template/assets/images/favicon.png +0 -0
- data/bundle-standalone/templates/mobile/react-native/javascript/expo-cli-template/assets/images/icon.png +0 -0
- data/bundle-standalone/templates/mobile/react-native/javascript/expo-cli-template/assets/images/partial-react-logo.png +0 -0
- data/bundle-standalone/templates/mobile/react-native/javascript/expo-cli-template/assets/images/react-logo.png +0 -0
- data/bundle-standalone/templates/mobile/react-native/javascript/expo-cli-template/assets/images/react-logo@2x.png +0 -0
- data/bundle-standalone/templates/mobile/react-native/javascript/expo-cli-template/assets/images/react-logo@3x.png +0 -0
- data/bundle-standalone/templates/mobile/react-native/javascript/expo-cli-template/assets/images/splash-icon.png +0 -0
- data/bundle-standalone/templates/mobile/react-native/javascript/expo-cli-template/components/external-link.jsx +25 -0
- data/bundle-standalone/templates/mobile/react-native/javascript/expo-cli-template/components/haptic-tab.jsx +18 -0
- data/bundle-standalone/templates/mobile/react-native/javascript/expo-cli-template/components/hello-wave.jsx +19 -0
- data/bundle-standalone/templates/mobile/react-native/javascript/expo-cli-template/components/parallax-scroll-view.jsx +79 -0
- data/bundle-standalone/templates/mobile/react-native/javascript/expo-cli-template/components/themed-text.jsx +60 -0
- data/bundle-standalone/templates/mobile/react-native/javascript/expo-cli-template/components/themed-view.jsx +14 -0
- data/bundle-standalone/templates/mobile/react-native/javascript/expo-cli-template/components/ui/collapsible.jsx +45 -0
- data/bundle-standalone/templates/mobile/react-native/javascript/expo-cli-template/components/ui/icon-symbol.ios.jsx +32 -0
- data/bundle-standalone/templates/mobile/react-native/javascript/expo-cli-template/components/ui/icon-symbol.jsx +41 -0
- data/bundle-standalone/templates/mobile/react-native/javascript/expo-cli-template/constants/theme.js +53 -0
- data/bundle-standalone/templates/mobile/react-native/javascript/expo-cli-template/eslint.config.js +10 -0
- data/bundle-standalone/templates/mobile/react-native/javascript/expo-cli-template/hooks/use-color-scheme.js +1 -0
- data/bundle-standalone/templates/mobile/react-native/javascript/expo-cli-template/hooks/use-color-scheme.web.js +21 -0
- data/bundle-standalone/templates/mobile/react-native/javascript/expo-cli-template/hooks/use-theme-color.js +21 -0
- data/bundle-standalone/templates/mobile/react-native/javascript/expo-cli-template/jsconfig.json +17 -0
- data/bundle-standalone/templates/mobile/react-native/javascript/expo-cli-template/package.json +47 -0
- data/bundle-standalone/templates/mobile/react-native/javascript/expo-cli-template/pnpm-workspace.yaml +1 -0
- data/bundle-standalone/templates/mobile/react-native/javascript/expo-cli-template/scripts/reset-project.js +112 -0
- data/bundle-standalone/templates/mobile/react-native/typescript/expo-cli-template/README.md +50 -0
- data/bundle-standalone/templates/mobile/react-native/typescript/expo-cli-template/app/(tabs)/_layout.tsx +35 -0
- data/bundle-standalone/templates/mobile/react-native/typescript/expo-cli-template/app/(tabs)/explore.tsx +112 -0
- data/bundle-standalone/templates/mobile/react-native/typescript/expo-cli-template/app/(tabs)/index.tsx +98 -0
- data/bundle-standalone/templates/mobile/react-native/typescript/expo-cli-template/app/_layout.tsx +24 -0
- data/bundle-standalone/templates/mobile/react-native/typescript/expo-cli-template/app/modal.tsx +29 -0
- data/bundle-standalone/templates/mobile/react-native/typescript/expo-cli-template/app.json +48 -0
- data/bundle-standalone/templates/mobile/react-native/typescript/expo-cli-template/assets/images/android-icon-background.png +0 -0
- data/bundle-standalone/templates/mobile/react-native/typescript/expo-cli-template/assets/images/android-icon-foreground.png +0 -0
- data/bundle-standalone/templates/mobile/react-native/typescript/expo-cli-template/assets/images/android-icon-monochrome.png +0 -0
- data/bundle-standalone/templates/mobile/react-native/typescript/expo-cli-template/assets/images/favicon.png +0 -0
- data/bundle-standalone/templates/mobile/react-native/typescript/expo-cli-template/assets/images/icon.png +0 -0
- data/bundle-standalone/templates/mobile/react-native/typescript/expo-cli-template/assets/images/partial-react-logo.png +0 -0
- data/bundle-standalone/templates/mobile/react-native/typescript/expo-cli-template/assets/images/react-logo.png +0 -0
- data/bundle-standalone/templates/mobile/react-native/typescript/expo-cli-template/assets/images/react-logo@2x.png +0 -0
- data/bundle-standalone/templates/mobile/react-native/typescript/expo-cli-template/assets/images/react-logo@3x.png +0 -0
- data/bundle-standalone/templates/mobile/react-native/typescript/expo-cli-template/assets/images/splash-icon.png +0 -0
- data/bundle-standalone/templates/mobile/react-native/typescript/expo-cli-template/components/external-link.tsx +25 -0
- data/bundle-standalone/templates/mobile/react-native/typescript/expo-cli-template/components/haptic-tab.tsx +18 -0
- data/bundle-standalone/templates/mobile/react-native/typescript/expo-cli-template/components/hello-wave.tsx +19 -0
- data/bundle-standalone/templates/mobile/react-native/typescript/expo-cli-template/components/parallax-scroll-view.tsx +79 -0
- data/bundle-standalone/templates/mobile/react-native/typescript/expo-cli-template/components/themed-text.tsx +60 -0
- data/bundle-standalone/templates/mobile/react-native/typescript/expo-cli-template/components/themed-view.tsx +14 -0
- data/bundle-standalone/templates/mobile/react-native/typescript/expo-cli-template/components/ui/collapsible.tsx +45 -0
- data/bundle-standalone/templates/mobile/react-native/typescript/expo-cli-template/components/ui/icon-symbol.ios.tsx +32 -0
- data/bundle-standalone/templates/mobile/react-native/typescript/expo-cli-template/components/ui/icon-symbol.tsx +41 -0
- data/bundle-standalone/templates/mobile/react-native/typescript/expo-cli-template/constants/theme.ts +53 -0
- data/bundle-standalone/templates/mobile/react-native/typescript/expo-cli-template/eslint.config.js +10 -0
- data/bundle-standalone/templates/mobile/react-native/typescript/expo-cli-template/hooks/use-color-scheme.ts +1 -0
- data/bundle-standalone/templates/mobile/react-native/typescript/expo-cli-template/hooks/use-color-scheme.web.ts +21 -0
- data/bundle-standalone/templates/mobile/react-native/typescript/expo-cli-template/hooks/use-theme-color.ts +21 -0
- data/bundle-standalone/templates/mobile/react-native/typescript/expo-cli-template/package.json +47 -0
- data/bundle-standalone/templates/mobile/react-native/typescript/expo-cli-template/pnpm-workspace.yaml +1 -0
- data/bundle-standalone/templates/mobile/react-native/typescript/expo-cli-template/scripts/reset-project.js +112 -0
- data/bundle-standalone/templates/mobile/react-native/typescript/expo-cli-template/tsconfig.json +17 -0
- data/bundle-standalone/templates/python/bottle/template/README.md +0 -0
- data/bundle-standalone/templates/python/bottle/template/main.py +6 -0
- data/bundle-standalone/templates/python/bottle/template/pyproject.toml +7 -0
- data/bundle-standalone/templates/python/dash/template/README.md +0 -0
- data/bundle-standalone/templates/python/dash/template/main.py +6 -0
- data/bundle-standalone/templates/python/dash/template/pyproject.toml +7 -0
- data/bundle-standalone/templates/python/falcon/template/README.md +0 -0
- data/bundle-standalone/templates/python/falcon/template/main.py +6 -0
- data/bundle-standalone/templates/python/falcon/template/pyproject.toml +7 -0
- data/bundle-standalone/templates/python/fastapi/template/README.md +0 -0
- data/bundle-standalone/templates/python/fastapi/template/main.py +27 -0
- data/bundle-standalone/templates/python/fastapi/template/pyproject.toml +7 -0
- data/bundle-standalone/templates/python/pyramid/template/README.md +0 -0
- data/bundle-standalone/templates/python/pyramid/template/main.py +6 -0
- data/bundle-standalone/templates/python/pyramid/template/pyproject.toml +7 -0
- data/bundle-standalone/templates/python/quart/template/README.md +0 -0
- data/bundle-standalone/templates/python/quart/template/main.py +6 -0
- data/bundle-standalone/templates/python/quart/template/pyproject.toml +7 -0
- data/bundle-standalone/templates/python/streamlit/template/README.md +0 -0
- data/bundle-standalone/templates/python/streamlit/template/main.py +6 -0
- data/bundle-standalone/templates/python/streamlit/template/pyproject.toml +7 -0
- data/bundle-standalone/templates/python/tornado/template/README.md +0 -0
- data/bundle-standalone/templates/python/tornado/template/main.py +6 -0
- data/bundle-standalone/templates/python/tornado/template/pyproject.toml +7 -0
- data/bundle-standalone/templates/template.json +87 -14
- data/bundle-standalone/templates/web3/anchor/template/Anchor.toml +6 -0
- data/bundle-standalone/templates/web3/anchor/template/Cargo.toml +23 -0
- data/bundle-standalone/templates/web3/anchor/template/README.md +10 -0
- data/bundle-standalone/templates/web3/anchor/template/migrations/deploy.ts +27 -0
- data/bundle-standalone/templates/web3/anchor/template/programs/mysolanaapp/src/lib.rs +40 -0
- data/bundle-standalone/templates/web3/anchor/template/tests/mysolanaapp.ts +26 -0
- data/bundle-standalone/templates/web3/ethersjs/template/README.md +12 -0
- data/bundle-standalone/templates/web3/ethersjs/template/contracts/SimpleStorage.sol +17 -0
- data/bundle-standalone/templates/web3/ethersjs/template/hardhat.config.js +8 -0
- data/bundle-standalone/templates/web3/ethersjs/template/package.json +29 -0
- data/bundle-standalone/templates/web3/ethersjs/template/scripts/deploy.ts +18 -0
- data/bundle-standalone/templates/web3/ethersjs/template/scripts/interact.ts +17 -0
- data/bundle-standalone/templates/web3/solidity/solidity-learning/01_data-types/DataTypes.sol +37 -0
- data/bundle-standalone/templates/web3/solidity/solidity-learning/01_data-types/SolidityOperations.sol +48 -0
- data/bundle-standalone/templates/web3/solidity/solidity-learning/02_contructors/Constructor.sol +16 -0
- data/bundle-standalone/templates/web3/solidity/solidity-learning/03_variables/Variables.sol +31 -0
- data/bundle-standalone/templates/web3/solidity/solidity-learning/04_functions/Functions.sol +19 -0
- data/bundle-standalone/templates/web3/solidity/solidity-learning/05_visibility/FunctionVisibility.sol +39 -0
- data/bundle-standalone/templates/web3/solidity/solidity-learning/06_pure_and_view_functions/PureAndViewFunction.sol +19 -0
- data/bundle-standalone/templates/web3/solidity/solidity-learning/07_function_modifiers/Modifiers.sol +27 -0
- data/bundle-standalone/templates/web3/solidity/solidity-learning/09_events/Events.sol +19 -0
- data/bundle-standalone/templates/web3/solidity/solidity-learning/10_error_handling/ErrorHandling.sol +25 -0
- data/bundle-standalone/templates/web3/solidity/solidity-learning/11_fallback_function/Fallback.sol +7 -0
- data/bundle-standalone/templates/web3/solidity/solidity-learning/12_for_loop/ForLoop.sol +15 -0
- data/bundle-standalone/templates/web3/solidity/solidity-learning/13_array/Array.sol +40 -0
- data/bundle-standalone/templates/web3/solidity/solidity-learning/14_mapping/Mapping.sol +21 -0
- data/bundle-standalone/templates/web3/solidity/solidity-learning/14_mapping/NestedMapping.sol +25 -0
- data/bundle-standalone/templates/web3/solidity/solidity-learning/15_enum/Enum.sol +22 -0
- data/bundle-standalone/templates/web3/solidity/solidity-learning/16_struct/Struct.sol +23 -0
- data/bundle-standalone/templates/web3/solidity/solidity-learning/17_payable_modifier/Payable.sol +26 -0
- data/bundle-standalone/templates/web3/solidity/solidity-learning/18_imports/Contract1.sol +15 -0
- data/bundle-standalone/templates/web3/solidity/solidity-learning/18_imports/Contract2.sol +11 -0
- data/bundle-standalone/templates/web3/solidity/solidity-learning/19_contract_cleanup/Cleanup.sol +18 -0
- data/bundle-standalone/templates/web3/solidity/solidity-learning/20_memory_and_storage/MemoryAndStorage.sol +20 -0
- data/bundle-standalone/templates/web3/solidity/solidity-learning/21_inheritance/Inheritance.sol +67 -0
- data/bundle-standalone/templates/web3/solidity/solidity-learning/22_if_statement/if-statement.sol +22 -0
- data/bundle-standalone/templates/web3/solidity/solidity-learning/23_libraries/libraries.sol +31 -0
- data/bundle-standalone/templates/web3/solidity/solidity-learning/23_libraries/safemath.sol +116 -0
- data/bundle-standalone/templates/web3/solidity/solidity-learning/24_interface/interface.sol +88 -0
- data/bundle-standalone/templates/web3/solidity/solidity-learning/README.md +423 -0
- data/bundle-standalone/templates/web3/solidity/uniswap-simple-swap/SimpleSwap.sol +46 -0
- metadata +369 -93
- /data/bundle-standalone/templates/mobile/react-native/javascript/{template → react-native-cli-template}/App.jsx +0 -0
- /data/bundle-standalone/templates/mobile/react-native/javascript/{template → react-native-cli-template}/Gemfile +0 -0
- /data/bundle-standalone/templates/mobile/react-native/javascript/{template → react-native-cli-template}/README.md +0 -0
- /data/bundle-standalone/templates/mobile/react-native/javascript/{template → react-native-cli-template}/__tests__/App.test.tsx +0 -0
- /data/bundle-standalone/templates/mobile/react-native/javascript/{template → react-native-cli-template}/android/app/build.gradle +0 -0
- /data/bundle-standalone/templates/mobile/react-native/javascript/{template → react-native-cli-template}/android/app/debug.keystore +0 -0
- /data/bundle-standalone/templates/mobile/react-native/javascript/{template → react-native-cli-template}/android/app/proguard-rules.pro +0 -0
- /data/bundle-standalone/templates/mobile/react-native/javascript/{template → react-native-cli-template}/android/app/src/main/AndroidManifest.xml +0 -0
- /data/bundle-standalone/templates/mobile/react-native/javascript/{template → react-native-cli-template}/android/app/src/main/java/com/template/MainActivity.kt +0 -0
- /data/bundle-standalone/templates/mobile/react-native/javascript/{template → react-native-cli-template}/android/app/src/main/java/com/template/MainApplication.kt +0 -0
- /data/bundle-standalone/templates/mobile/react-native/javascript/{template → react-native-cli-template}/android/app/src/main/res/drawable/rn_edit_text_material.xml +0 -0
- /data/bundle-standalone/templates/mobile/react-native/javascript/{template → react-native-cli-template}/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
- /data/bundle-standalone/templates/mobile/react-native/javascript/{template → react-native-cli-template}/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
- /data/bundle-standalone/templates/mobile/react-native/javascript/{template → react-native-cli-template}/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
- /data/bundle-standalone/templates/mobile/react-native/javascript/{template → react-native-cli-template}/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
- /data/bundle-standalone/templates/mobile/react-native/javascript/{template → react-native-cli-template}/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
- /data/bundle-standalone/templates/mobile/react-native/javascript/{template → react-native-cli-template}/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
- /data/bundle-standalone/templates/mobile/react-native/javascript/{template → react-native-cli-template}/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- /data/bundle-standalone/templates/mobile/react-native/javascript/{template → react-native-cli-template}/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
- /data/bundle-standalone/templates/mobile/react-native/javascript/{template → react-native-cli-template}/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
- /data/bundle-standalone/templates/mobile/react-native/javascript/{template → react-native-cli-template}/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
- /data/bundle-standalone/templates/mobile/react-native/javascript/{template → react-native-cli-template}/android/app/src/main/res/values/strings.xml +0 -0
- /data/bundle-standalone/templates/mobile/react-native/javascript/{template → react-native-cli-template}/android/app/src/main/res/values/styles.xml +0 -0
- /data/bundle-standalone/templates/mobile/react-native/javascript/{template → react-native-cli-template}/android/build.gradle +0 -0
- /data/bundle-standalone/templates/mobile/react-native/javascript/{template → react-native-cli-template}/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- /data/bundle-standalone/templates/mobile/react-native/javascript/{template → react-native-cli-template}/android/gradle/wrapper/gradle-wrapper.properties +0 -0
- /data/bundle-standalone/templates/mobile/react-native/javascript/{template → react-native-cli-template}/android/gradle.properties +0 -0
- /data/bundle-standalone/templates/mobile/react-native/javascript/{template → react-native-cli-template}/android/gradlew +0 -0
- /data/bundle-standalone/templates/mobile/react-native/javascript/{template → react-native-cli-template}/android/gradlew.bat +0 -0
- /data/bundle-standalone/templates/mobile/react-native/javascript/{template → react-native-cli-template}/android/settings.gradle +0 -0
- /data/bundle-standalone/templates/mobile/react-native/javascript/{template → react-native-cli-template}/app.json +0 -0
- /data/bundle-standalone/templates/mobile/react-native/javascript/{template → react-native-cli-template}/babel.config.js +0 -0
- /data/bundle-standalone/templates/mobile/react-native/javascript/{template → react-native-cli-template}/index.js +0 -0
- /data/bundle-standalone/templates/mobile/react-native/javascript/{template → react-native-cli-template}/ios/Podfile +0 -0
- /data/bundle-standalone/templates/mobile/react-native/javascript/{template → react-native-cli-template}/ios/template/AppDelegate.swift +0 -0
- /data/bundle-standalone/templates/mobile/react-native/javascript/{template → react-native-cli-template}/ios/template/Images.xcassets/AppIcon.appiconset/Contents.json +0 -0
- /data/bundle-standalone/templates/mobile/react-native/javascript/{template → react-native-cli-template}/ios/template/Images.xcassets/Contents.json +0 -0
- /data/bundle-standalone/templates/mobile/react-native/javascript/{template → react-native-cli-template}/ios/template/Info.plist +0 -0
- /data/bundle-standalone/templates/mobile/react-native/javascript/{template → react-native-cli-template}/ios/template/LaunchScreen.storyboard +0 -0
- /data/bundle-standalone/templates/mobile/react-native/javascript/{template → react-native-cli-template}/ios/template/PrivacyInfo.xcprivacy +0 -0
- /data/bundle-standalone/templates/mobile/react-native/javascript/{template → react-native-cli-template}/ios/template.xcodeproj/project.pbxproj +0 -0
- /data/bundle-standalone/templates/mobile/react-native/javascript/{template → react-native-cli-template}/ios/template.xcodeproj/xcshareddata/xcschemes/template.xcscheme +0 -0
- /data/bundle-standalone/templates/mobile/react-native/javascript/{template → react-native-cli-template}/jest.config.js +0 -0
- /data/bundle-standalone/templates/mobile/react-native/javascript/{template → react-native-cli-template}/metro.config.js +0 -0
- /data/bundle-standalone/templates/mobile/react-native/javascript/{template → react-native-cli-template}/package.json +0 -0
- /data/bundle-standalone/templates/mobile/react-native/typescript/{template → react-native-cli-template}/App.tsx +0 -0
- /data/bundle-standalone/templates/mobile/react-native/typescript/{template → react-native-cli-template}/Gemfile +0 -0
- /data/bundle-standalone/templates/mobile/react-native/typescript/{template → react-native-cli-template}/README.md +0 -0
- /data/bundle-standalone/templates/mobile/react-native/typescript/{template → react-native-cli-template}/__tests__/App.test.tsx +0 -0
- /data/bundle-standalone/templates/mobile/react-native/typescript/{template → react-native-cli-template}/android/app/build.gradle +0 -0
- /data/bundle-standalone/templates/mobile/react-native/typescript/{template → react-native-cli-template}/android/app/debug.keystore +0 -0
- /data/bundle-standalone/templates/mobile/react-native/typescript/{template → react-native-cli-template}/android/app/proguard-rules.pro +0 -0
- /data/bundle-standalone/templates/mobile/react-native/typescript/{template → react-native-cli-template}/android/app/src/main/AndroidManifest.xml +0 -0
- /data/bundle-standalone/templates/mobile/react-native/typescript/{template → react-native-cli-template}/android/app/src/main/java/com/template/MainActivity.kt +0 -0
- /data/bundle-standalone/templates/mobile/react-native/typescript/{template → react-native-cli-template}/android/app/src/main/java/com/template/MainApplication.kt +0 -0
- /data/bundle-standalone/templates/mobile/react-native/typescript/{template → react-native-cli-template}/android/app/src/main/res/drawable/rn_edit_text_material.xml +0 -0
- /data/bundle-standalone/templates/mobile/react-native/typescript/{template → react-native-cli-template}/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
- /data/bundle-standalone/templates/mobile/react-native/typescript/{template → react-native-cli-template}/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
- /data/bundle-standalone/templates/mobile/react-native/typescript/{template → react-native-cli-template}/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
- /data/bundle-standalone/templates/mobile/react-native/typescript/{template → react-native-cli-template}/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
- /data/bundle-standalone/templates/mobile/react-native/typescript/{template → react-native-cli-template}/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
- /data/bundle-standalone/templates/mobile/react-native/typescript/{template → react-native-cli-template}/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
- /data/bundle-standalone/templates/mobile/react-native/typescript/{template → react-native-cli-template}/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- /data/bundle-standalone/templates/mobile/react-native/typescript/{template → react-native-cli-template}/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
- /data/bundle-standalone/templates/mobile/react-native/typescript/{template → react-native-cli-template}/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
- /data/bundle-standalone/templates/mobile/react-native/typescript/{template → react-native-cli-template}/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
- /data/bundle-standalone/templates/mobile/react-native/typescript/{template → react-native-cli-template}/android/app/src/main/res/values/strings.xml +0 -0
- /data/bundle-standalone/templates/mobile/react-native/typescript/{template → react-native-cli-template}/android/app/src/main/res/values/styles.xml +0 -0
- /data/bundle-standalone/templates/mobile/react-native/typescript/{template → react-native-cli-template}/android/build.gradle +0 -0
- /data/bundle-standalone/templates/mobile/react-native/typescript/{template → react-native-cli-template}/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- /data/bundle-standalone/templates/mobile/react-native/typescript/{template → react-native-cli-template}/android/gradle/wrapper/gradle-wrapper.properties +0 -0
- /data/bundle-standalone/templates/mobile/react-native/typescript/{template → react-native-cli-template}/android/gradle.properties +0 -0
- /data/bundle-standalone/templates/mobile/react-native/typescript/{template → react-native-cli-template}/android/gradlew +0 -0
- /data/bundle-standalone/templates/mobile/react-native/typescript/{template → react-native-cli-template}/android/gradlew.bat +0 -0
- /data/bundle-standalone/templates/mobile/react-native/typescript/{template → react-native-cli-template}/android/settings.gradle +0 -0
- /data/bundle-standalone/templates/mobile/react-native/typescript/{template → react-native-cli-template}/app.json +0 -0
- /data/bundle-standalone/templates/mobile/react-native/typescript/{template → react-native-cli-template}/babel.config.js +0 -0
- /data/bundle-standalone/templates/mobile/react-native/typescript/{template → react-native-cli-template}/index.js +0 -0
- /data/bundle-standalone/templates/mobile/react-native/typescript/{template → react-native-cli-template}/ios/Podfile +0 -0
- /data/bundle-standalone/templates/mobile/react-native/typescript/{template → react-native-cli-template}/ios/template/AppDelegate.swift +0 -0
- /data/bundle-standalone/templates/mobile/react-native/typescript/{template → react-native-cli-template}/ios/template/Images.xcassets/AppIcon.appiconset/Contents.json +0 -0
- /data/bundle-standalone/templates/mobile/react-native/typescript/{template → react-native-cli-template}/ios/template/Images.xcassets/Contents.json +0 -0
- /data/bundle-standalone/templates/mobile/react-native/typescript/{template → react-native-cli-template}/ios/template/Info.plist +0 -0
- /data/bundle-standalone/templates/mobile/react-native/typescript/{template → react-native-cli-template}/ios/template/LaunchScreen.storyboard +0 -0
- /data/bundle-standalone/templates/mobile/react-native/typescript/{template → react-native-cli-template}/ios/template/PrivacyInfo.xcprivacy +0 -0
- /data/bundle-standalone/templates/mobile/react-native/typescript/{template → react-native-cli-template}/ios/template.xcodeproj/project.pbxproj +0 -0
- /data/bundle-standalone/templates/mobile/react-native/typescript/{template → react-native-cli-template}/ios/template.xcodeproj/xcshareddata/xcschemes/template.xcscheme +0 -0
- /data/bundle-standalone/templates/mobile/react-native/typescript/{template → react-native-cli-template}/jest.config.js +0 -0
- /data/bundle-standalone/templates/mobile/react-native/typescript/{template → react-native-cli-template}/metro.config.js +0 -0
- /data/bundle-standalone/templates/mobile/react-native/typescript/{template → react-native-cli-template}/package.json +0 -0
- /data/bundle-standalone/templates/mobile/react-native/typescript/{template → react-native-cli-template}/tsconfig.json +0 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { View, type ViewProps } from 'react-native';
|
|
2
|
+
|
|
3
|
+
import { useThemeColor } from '@/hooks/use-theme-color';
|
|
4
|
+
|
|
5
|
+
export type ThemedViewProps = ViewProps & {
|
|
6
|
+
lightColor?: string;
|
|
7
|
+
darkColor?: string;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export function ThemedView({ style, lightColor, darkColor, ...otherProps }: ThemedViewProps) {
|
|
11
|
+
const backgroundColor = useThemeColor({ light: lightColor, dark: darkColor }, 'background');
|
|
12
|
+
|
|
13
|
+
return <View style={[{ backgroundColor }, style]} {...otherProps} />;
|
|
14
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { PropsWithChildren, useState } from 'react';
|
|
2
|
+
import { StyleSheet, TouchableOpacity } from 'react-native';
|
|
3
|
+
|
|
4
|
+
import { ThemedText } from '@/components/themed-text';
|
|
5
|
+
import { ThemedView } from '@/components/themed-view';
|
|
6
|
+
import { IconSymbol } from '@/components/ui/icon-symbol';
|
|
7
|
+
import { Colors } from '@/constants/theme';
|
|
8
|
+
import { useColorScheme } from '@/hooks/use-color-scheme';
|
|
9
|
+
|
|
10
|
+
export function Collapsible({ children, title }: PropsWithChildren & { title: string }) {
|
|
11
|
+
const [isOpen, setIsOpen] = useState(false);
|
|
12
|
+
const theme = useColorScheme() ?? 'light';
|
|
13
|
+
|
|
14
|
+
return (
|
|
15
|
+
<ThemedView>
|
|
16
|
+
<TouchableOpacity
|
|
17
|
+
style={styles.heading}
|
|
18
|
+
onPress={() => setIsOpen((value) => !value)}
|
|
19
|
+
activeOpacity={0.8}>
|
|
20
|
+
<IconSymbol
|
|
21
|
+
name="chevron.right"
|
|
22
|
+
size={18}
|
|
23
|
+
weight="medium"
|
|
24
|
+
color={theme === 'light' ? Colors.light.icon : Colors.dark.icon}
|
|
25
|
+
style={{ transform: [{ rotate: isOpen ? '90deg' : '0deg' }] }}
|
|
26
|
+
/>
|
|
27
|
+
|
|
28
|
+
<ThemedText type="defaultSemiBold">{title}</ThemedText>
|
|
29
|
+
</TouchableOpacity>
|
|
30
|
+
{isOpen && <ThemedView style={styles.content}>{children}</ThemedView>}
|
|
31
|
+
</ThemedView>
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const styles = StyleSheet.create({
|
|
36
|
+
heading: {
|
|
37
|
+
flexDirection: 'row',
|
|
38
|
+
alignItems: 'center',
|
|
39
|
+
gap: 6,
|
|
40
|
+
},
|
|
41
|
+
content: {
|
|
42
|
+
marginTop: 6,
|
|
43
|
+
marginLeft: 24,
|
|
44
|
+
},
|
|
45
|
+
});
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { SymbolView, SymbolViewProps, SymbolWeight } from 'expo-symbols';
|
|
2
|
+
import { StyleProp, ViewStyle } from 'react-native';
|
|
3
|
+
|
|
4
|
+
export function IconSymbol({
|
|
5
|
+
name,
|
|
6
|
+
size = 24,
|
|
7
|
+
color,
|
|
8
|
+
style,
|
|
9
|
+
weight = 'regular',
|
|
10
|
+
}: {
|
|
11
|
+
name: SymbolViewProps['name'];
|
|
12
|
+
size?: number;
|
|
13
|
+
color: string;
|
|
14
|
+
style?: StyleProp<ViewStyle>;
|
|
15
|
+
weight?: SymbolWeight;
|
|
16
|
+
}) {
|
|
17
|
+
return (
|
|
18
|
+
<SymbolView
|
|
19
|
+
weight={weight}
|
|
20
|
+
tintColor={color}
|
|
21
|
+
resizeMode="scaleAspectFit"
|
|
22
|
+
name={name}
|
|
23
|
+
style={[
|
|
24
|
+
{
|
|
25
|
+
width: size,
|
|
26
|
+
height: size,
|
|
27
|
+
},
|
|
28
|
+
style,
|
|
29
|
+
]}
|
|
30
|
+
/>
|
|
31
|
+
);
|
|
32
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
// Fallback for using MaterialIcons on Android and web.
|
|
2
|
+
|
|
3
|
+
import MaterialIcons from '@expo/vector-icons/MaterialIcons';
|
|
4
|
+
import { SymbolWeight, SymbolViewProps } from 'expo-symbols';
|
|
5
|
+
import { ComponentProps } from 'react';
|
|
6
|
+
import { OpaqueColorValue, type StyleProp, type TextStyle } from 'react-native';
|
|
7
|
+
|
|
8
|
+
type IconMapping = Record<SymbolViewProps['name'], ComponentProps<typeof MaterialIcons>['name']>;
|
|
9
|
+
type IconSymbolName = keyof typeof MAPPING;
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Add your SF Symbols to Material Icons mappings here.
|
|
13
|
+
* - see Material Icons in the [Icons Directory](https://icons.expo.fyi).
|
|
14
|
+
* - see SF Symbols in the [SF Symbols](https://developer.apple.com/sf-symbols/) app.
|
|
15
|
+
*/
|
|
16
|
+
const MAPPING = {
|
|
17
|
+
'house.fill': 'home',
|
|
18
|
+
'paperplane.fill': 'send',
|
|
19
|
+
'chevron.left.forwardslash.chevron.right': 'code',
|
|
20
|
+
'chevron.right': 'chevron-right',
|
|
21
|
+
} as IconMapping;
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* An icon component that uses native SF Symbols on iOS, and Material Icons on Android and web.
|
|
25
|
+
* This ensures a consistent look across platforms, and optimal resource usage.
|
|
26
|
+
* Icon `name`s are based on SF Symbols and require manual mapping to Material Icons.
|
|
27
|
+
*/
|
|
28
|
+
export function IconSymbol({
|
|
29
|
+
name,
|
|
30
|
+
size = 24,
|
|
31
|
+
color,
|
|
32
|
+
style,
|
|
33
|
+
}: {
|
|
34
|
+
name: IconSymbolName;
|
|
35
|
+
size?: number;
|
|
36
|
+
color: string | OpaqueColorValue;
|
|
37
|
+
style?: StyleProp<TextStyle>;
|
|
38
|
+
weight?: SymbolWeight;
|
|
39
|
+
}) {
|
|
40
|
+
return <MaterialIcons color={color} size={size} name={MAPPING[name]} style={style} />;
|
|
41
|
+
}
|
data/bundle-standalone/templates/mobile/react-native/javascript/expo-cli-template/constants/theme.js
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Below are the colors that are used in the app. The colors are defined in the light and dark mode.
|
|
3
|
+
* There are many other ways to style your app. For example, [Nativewind](https://www.nativewind.dev/), [Tamagui](https://tamagui.dev/), [unistyles](https://reactnativeunistyles.vercel.app), etc.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { Platform } from 'react-native';
|
|
7
|
+
|
|
8
|
+
const tintColorLight = '#0a7ea4';
|
|
9
|
+
const tintColorDark = '#fff';
|
|
10
|
+
|
|
11
|
+
export const Colors = {
|
|
12
|
+
light: {
|
|
13
|
+
text: '#11181C',
|
|
14
|
+
background: '#fff',
|
|
15
|
+
tint: tintColorLight,
|
|
16
|
+
icon: '#687076',
|
|
17
|
+
tabIconDefault: '#687076',
|
|
18
|
+
tabIconSelected: tintColorLight,
|
|
19
|
+
},
|
|
20
|
+
dark: {
|
|
21
|
+
text: '#ECEDEE',
|
|
22
|
+
background: '#151718',
|
|
23
|
+
tint: tintColorDark,
|
|
24
|
+
icon: '#9BA1A6',
|
|
25
|
+
tabIconDefault: '#9BA1A6',
|
|
26
|
+
tabIconSelected: tintColorDark,
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export const Fonts = Platform.select({
|
|
31
|
+
ios: {
|
|
32
|
+
/** iOS `UIFontDescriptorSystemDesignDefault` */
|
|
33
|
+
sans: 'system-ui',
|
|
34
|
+
/** iOS `UIFontDescriptorSystemDesignSerif` */
|
|
35
|
+
serif: 'ui-serif',
|
|
36
|
+
/** iOS `UIFontDescriptorSystemDesignRounded` */
|
|
37
|
+
rounded: 'ui-rounded',
|
|
38
|
+
/** iOS `UIFontDescriptorSystemDesignMonospaced` */
|
|
39
|
+
mono: 'ui-monospace',
|
|
40
|
+
},
|
|
41
|
+
default: {
|
|
42
|
+
sans: 'normal',
|
|
43
|
+
serif: 'serif',
|
|
44
|
+
rounded: 'normal',
|
|
45
|
+
mono: 'monospace',
|
|
46
|
+
},
|
|
47
|
+
web: {
|
|
48
|
+
sans: "system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif",
|
|
49
|
+
serif: "Georgia, 'Times New Roman', serif",
|
|
50
|
+
rounded: "'SF Pro Rounded', 'Hiragino Maru Gothic ProN', Meiryo, 'MS PGothic', sans-serif",
|
|
51
|
+
mono: "SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace",
|
|
52
|
+
},
|
|
53
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { useColorScheme } from 'react-native';
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { useEffect, useState } from 'react';
|
|
2
|
+
import { useColorScheme as useRNColorScheme } from 'react-native';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* To support static rendering, this value needs to be re-calculated on the client side for web
|
|
6
|
+
*/
|
|
7
|
+
export function useColorScheme() {
|
|
8
|
+
const [hasHydrated, setHasHydrated] = useState(false);
|
|
9
|
+
|
|
10
|
+
useEffect(() => {
|
|
11
|
+
setHasHydrated(true);
|
|
12
|
+
}, []);
|
|
13
|
+
|
|
14
|
+
const colorScheme = useRNColorScheme();
|
|
15
|
+
|
|
16
|
+
if (hasHydrated) {
|
|
17
|
+
return colorScheme;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
return 'light';
|
|
21
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Learn more about light and dark modes:
|
|
3
|
+
* https://docs.expo.dev/guides/color-schemes/
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { Colors } from '@/constants/theme';
|
|
7
|
+
import { useColorScheme } from '@/hooks/use-color-scheme';
|
|
8
|
+
|
|
9
|
+
export function useThemeColor(
|
|
10
|
+
props: { light?: string; dark?: string },
|
|
11
|
+
colorName: keyof typeof Colors.light & keyof typeof Colors.dark
|
|
12
|
+
) {
|
|
13
|
+
const theme = useColorScheme() ?? 'light';
|
|
14
|
+
const colorFromProps = props[theme];
|
|
15
|
+
|
|
16
|
+
if (colorFromProps) {
|
|
17
|
+
return colorFromProps;
|
|
18
|
+
} else {
|
|
19
|
+
return Colors[theme][colorName];
|
|
20
|
+
}
|
|
21
|
+
}
|
data/bundle-standalone/templates/mobile/react-native/javascript/expo-cli-template/jsconfig.json
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "expo/tsconfig.base",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"strict": true,
|
|
5
|
+
"paths": {
|
|
6
|
+
"@/*": [
|
|
7
|
+
"./*"
|
|
8
|
+
]
|
|
9
|
+
}
|
|
10
|
+
},
|
|
11
|
+
"include": [
|
|
12
|
+
"**/*.ts",
|
|
13
|
+
"**/*.tsx",
|
|
14
|
+
".expo/types/**/*.ts",
|
|
15
|
+
"expo-env.d.ts"
|
|
16
|
+
, "components/ui/icon-symbol.jsx", "components/ui/icon-symbol.ios.jsx", "components/ui/collapsible.jsx", "constants/theme.js", "hooks/use-theme-color.js", "hooks/use-color-scheme.web.js", "hooks/use-color-scheme.js", "app/(tabs)/index.sx", "app/(tabs)/explore.jsx", "app/(tabs)/_layout.jsx", "app/modal.jsx", "app/_layout.jsx" ]
|
|
17
|
+
}
|
data/bundle-standalone/templates/mobile/react-native/javascript/expo-cli-template/package.json
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "movies-mobile-app",
|
|
3
|
+
"main": "expo-router/entry",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"scripts": {
|
|
6
|
+
"start": "expo start",
|
|
7
|
+
"reset-project": "node ./scripts/reset-project.js",
|
|
8
|
+
"android": "expo start --android",
|
|
9
|
+
"ios": "expo start --ios",
|
|
10
|
+
"web": "expo start --web",
|
|
11
|
+
"lint": "expo lint"
|
|
12
|
+
},
|
|
13
|
+
"dependencies": {
|
|
14
|
+
"@expo/vector-icons": "^15.0.2",
|
|
15
|
+
"@react-navigation/bottom-tabs": "^7.4.0",
|
|
16
|
+
"@react-navigation/elements": "^2.6.3",
|
|
17
|
+
"@react-navigation/native": "^7.1.8",
|
|
18
|
+
"expo": "~54.0.13",
|
|
19
|
+
"expo-constants": "~18.0.9",
|
|
20
|
+
"expo-font": "~14.0.9",
|
|
21
|
+
"expo-haptics": "~15.0.7",
|
|
22
|
+
"expo-image": "~3.0.9",
|
|
23
|
+
"expo-linking": "~8.0.8",
|
|
24
|
+
"expo-router": "~6.0.11",
|
|
25
|
+
"expo-splash-screen": "~31.0.10",
|
|
26
|
+
"expo-status-bar": "~3.0.8",
|
|
27
|
+
"expo-symbols": "~1.0.7",
|
|
28
|
+
"expo-system-ui": "~6.0.7",
|
|
29
|
+
"expo-web-browser": "~15.0.8",
|
|
30
|
+
"react": "19.1.0",
|
|
31
|
+
"react-dom": "19.1.0",
|
|
32
|
+
"react-native": "0.81.4",
|
|
33
|
+
"react-native-gesture-handler": "~2.28.0",
|
|
34
|
+
"react-native-worklets": "0.5.1",
|
|
35
|
+
"react-native-reanimated": "~4.1.1",
|
|
36
|
+
"react-native-safe-area-context": "~5.6.0",
|
|
37
|
+
"react-native-screens": "~4.16.0",
|
|
38
|
+
"react-native-web": "~0.21.0"
|
|
39
|
+
},
|
|
40
|
+
"devDependencies": {
|
|
41
|
+
"@types/react": "~19.1.0",
|
|
42
|
+
"typescript": "~5.9.2",
|
|
43
|
+
"eslint": "^9.25.0",
|
|
44
|
+
"eslint-config-expo": "~10.0.0"
|
|
45
|
+
},
|
|
46
|
+
"private": true
|
|
47
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
nodeLinker: hoisted
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* This script is used to reset the project to a blank state.
|
|
5
|
+
* It deletes or moves the /app, /components, /hooks, /scripts, and /constants directories to /app-example based on user input and creates a new /app directory with an index.tsx and _layout.tsx file.
|
|
6
|
+
* You can remove the `reset-project` script from package.json and safely delete this file after running it.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
const fs = require("fs");
|
|
10
|
+
const path = require("path");
|
|
11
|
+
const readline = require("readline");
|
|
12
|
+
|
|
13
|
+
const root = process.cwd();
|
|
14
|
+
const oldDirs = ["app", "components", "hooks", "constants", "scripts"];
|
|
15
|
+
const exampleDir = "app-example";
|
|
16
|
+
const newAppDir = "app";
|
|
17
|
+
const exampleDirPath = path.join(root, exampleDir);
|
|
18
|
+
|
|
19
|
+
const indexContent = `import { Text, View } from "react-native";
|
|
20
|
+
|
|
21
|
+
export default function Index() {
|
|
22
|
+
return (
|
|
23
|
+
<View
|
|
24
|
+
style={{
|
|
25
|
+
flex: 1,
|
|
26
|
+
justifyContent: "center",
|
|
27
|
+
alignItems: "center",
|
|
28
|
+
}}
|
|
29
|
+
>
|
|
30
|
+
<Text>Edit app/index.tsx to edit this screen.</Text>
|
|
31
|
+
</View>
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
`;
|
|
35
|
+
|
|
36
|
+
const layoutContent = `import { Stack } from "expo-router";
|
|
37
|
+
|
|
38
|
+
export default function RootLayout() {
|
|
39
|
+
return <Stack />;
|
|
40
|
+
}
|
|
41
|
+
`;
|
|
42
|
+
|
|
43
|
+
const rl = readline.createInterface({
|
|
44
|
+
input: process.stdin,
|
|
45
|
+
output: process.stdout,
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
const moveDirectories = async (userInput) => {
|
|
49
|
+
try {
|
|
50
|
+
if (userInput === "y") {
|
|
51
|
+
// Create the app-example directory
|
|
52
|
+
await fs.promises.mkdir(exampleDirPath, { recursive: true });
|
|
53
|
+
console.log(`📁 /${exampleDir} directory created.`);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// Move old directories to new app-example directory or delete them
|
|
57
|
+
for (const dir of oldDirs) {
|
|
58
|
+
const oldDirPath = path.join(root, dir);
|
|
59
|
+
if (fs.existsSync(oldDirPath)) {
|
|
60
|
+
if (userInput === "y") {
|
|
61
|
+
const newDirPath = path.join(root, exampleDir, dir);
|
|
62
|
+
await fs.promises.rename(oldDirPath, newDirPath);
|
|
63
|
+
console.log(`➡️ /${dir} moved to /${exampleDir}/${dir}.`);
|
|
64
|
+
} else {
|
|
65
|
+
await fs.promises.rm(oldDirPath, { recursive: true, force: true });
|
|
66
|
+
console.log(`❌ /${dir} deleted.`);
|
|
67
|
+
}
|
|
68
|
+
} else {
|
|
69
|
+
console.log(`➡️ /${dir} does not exist, skipping.`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// Create new /app directory
|
|
74
|
+
const newAppDirPath = path.join(root, newAppDir);
|
|
75
|
+
await fs.promises.mkdir(newAppDirPath, { recursive: true });
|
|
76
|
+
console.log("\n📁 New /app directory created.");
|
|
77
|
+
|
|
78
|
+
// Create index.tsx
|
|
79
|
+
const indexPath = path.join(newAppDirPath, "index.tsx");
|
|
80
|
+
await fs.promises.writeFile(indexPath, indexContent);
|
|
81
|
+
console.log("📄 app/index.tsx created.");
|
|
82
|
+
|
|
83
|
+
// Create _layout.tsx
|
|
84
|
+
const layoutPath = path.join(newAppDirPath, "_layout.tsx");
|
|
85
|
+
await fs.promises.writeFile(layoutPath, layoutContent);
|
|
86
|
+
console.log("📄 app/_layout.tsx created.");
|
|
87
|
+
|
|
88
|
+
console.log("\n✅ Project reset complete. Next steps:");
|
|
89
|
+
console.log(
|
|
90
|
+
`1. Run \`npx expo start\` to start a development server.\n2. Edit app/index.tsx to edit the main screen.${
|
|
91
|
+
userInput === "y"
|
|
92
|
+
? `\n3. Delete the /${exampleDir} directory when you're done referencing it.`
|
|
93
|
+
: ""
|
|
94
|
+
}`
|
|
95
|
+
);
|
|
96
|
+
} catch (error) {
|
|
97
|
+
console.error(`❌ Error during script execution: ${error.message}`);
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
rl.question(
|
|
102
|
+
"Do you want to move existing files to /app-example instead of deleting them? (Y/n): ",
|
|
103
|
+
(answer) => {
|
|
104
|
+
const userInput = answer.trim().toLowerCase() || "y";
|
|
105
|
+
if (userInput === "y" || userInput === "n") {
|
|
106
|
+
moveDirectories(userInput).finally(() => rl.close());
|
|
107
|
+
} else {
|
|
108
|
+
console.log("❌ Invalid input. Please enter 'Y' or 'N'.");
|
|
109
|
+
rl.close();
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
);
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Welcome to your Expo app 👋
|
|
2
|
+
|
|
3
|
+
This is an [Expo](https://expo.dev) project created with [`create-expo-app`](https://www.npmjs.com/package/create-expo-app).
|
|
4
|
+
|
|
5
|
+
## Get started
|
|
6
|
+
|
|
7
|
+
1. Install dependencies
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
2. Start the app
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npx expo start
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
In the output, you'll find options to open the app in a
|
|
20
|
+
|
|
21
|
+
- [development build](https://docs.expo.dev/develop/development-builds/introduction/)
|
|
22
|
+
- [Android emulator](https://docs.expo.dev/workflow/android-studio-emulator/)
|
|
23
|
+
- [iOS simulator](https://docs.expo.dev/workflow/ios-simulator/)
|
|
24
|
+
- [Expo Go](https://expo.dev/go), a limited sandbox for trying out app development with Expo
|
|
25
|
+
|
|
26
|
+
You can start developing by editing the files inside the **app** directory. This project uses [file-based routing](https://docs.expo.dev/router/introduction).
|
|
27
|
+
|
|
28
|
+
## Get a fresh project
|
|
29
|
+
|
|
30
|
+
When you're ready, run:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
npm run reset-project
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
This command will move the starter code to the **app-example** directory and create a blank **app** directory where you can start developing.
|
|
37
|
+
|
|
38
|
+
## Learn more
|
|
39
|
+
|
|
40
|
+
To learn more about developing your project with Expo, look at the following resources:
|
|
41
|
+
|
|
42
|
+
- [Expo documentation](https://docs.expo.dev/): Learn fundamentals, or go into advanced topics with our [guides](https://docs.expo.dev/guides).
|
|
43
|
+
- [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.
|
|
44
|
+
|
|
45
|
+
## Join the community
|
|
46
|
+
|
|
47
|
+
Join our community of developers creating universal apps.
|
|
48
|
+
|
|
49
|
+
- [Expo on GitHub](https://github.com/expo/expo): View our open source platform and contribute.
|
|
50
|
+
- [Discord community](https://chat.expo.dev): Chat with Expo users and ask questions.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Tabs } from 'expo-router';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
|
|
4
|
+
import { HapticTab } from '@/components/haptic-tab';
|
|
5
|
+
import { IconSymbol } from '@/components/ui/icon-symbol';
|
|
6
|
+
import { Colors } from '@/constants/theme';
|
|
7
|
+
import { useColorScheme } from '@/hooks/use-color-scheme';
|
|
8
|
+
|
|
9
|
+
export default function TabLayout() {
|
|
10
|
+
const colorScheme = useColorScheme();
|
|
11
|
+
|
|
12
|
+
return (
|
|
13
|
+
<Tabs
|
|
14
|
+
screenOptions={{
|
|
15
|
+
tabBarActiveTintColor: Colors[colorScheme ?? 'light'].tint,
|
|
16
|
+
headerShown: false,
|
|
17
|
+
tabBarButton: HapticTab,
|
|
18
|
+
}}>
|
|
19
|
+
<Tabs.Screen
|
|
20
|
+
name="index"
|
|
21
|
+
options={{
|
|
22
|
+
title: 'Home',
|
|
23
|
+
tabBarIcon: ({ color }) => <IconSymbol size={28} name="house.fill" color={color} />,
|
|
24
|
+
}}
|
|
25
|
+
/>
|
|
26
|
+
<Tabs.Screen
|
|
27
|
+
name="explore"
|
|
28
|
+
options={{
|
|
29
|
+
title: 'Explore',
|
|
30
|
+
tabBarIcon: ({ color }) => <IconSymbol size={28} name="paperplane.fill" color={color} />,
|
|
31
|
+
}}
|
|
32
|
+
/>
|
|
33
|
+
</Tabs>
|
|
34
|
+
);
|
|
35
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { Image } from 'expo-image';
|
|
2
|
+
import { Platform, StyleSheet } from 'react-native';
|
|
3
|
+
|
|
4
|
+
import { Collapsible } from '@/components/ui/collapsible';
|
|
5
|
+
import { ExternalLink } from '@/components/external-link';
|
|
6
|
+
import ParallaxScrollView from '@/components/parallax-scroll-view';
|
|
7
|
+
import { ThemedText } from '@/components/themed-text';
|
|
8
|
+
import { ThemedView } from '@/components/themed-view';
|
|
9
|
+
import { IconSymbol } from '@/components/ui/icon-symbol';
|
|
10
|
+
import { Fonts } from '@/constants/theme';
|
|
11
|
+
|
|
12
|
+
export default function TabTwoScreen() {
|
|
13
|
+
return (
|
|
14
|
+
<ParallaxScrollView
|
|
15
|
+
headerBackgroundColor={{ light: '#D0D0D0', dark: '#353636' }}
|
|
16
|
+
headerImage={
|
|
17
|
+
<IconSymbol
|
|
18
|
+
size={310}
|
|
19
|
+
color="#808080"
|
|
20
|
+
name="chevron.left.forwardslash.chevron.right"
|
|
21
|
+
style={styles.headerImage}
|
|
22
|
+
/>
|
|
23
|
+
}>
|
|
24
|
+
<ThemedView style={styles.titleContainer}>
|
|
25
|
+
<ThemedText
|
|
26
|
+
type="title"
|
|
27
|
+
style={{
|
|
28
|
+
fontFamily: Fonts.rounded,
|
|
29
|
+
}}>
|
|
30
|
+
Explore
|
|
31
|
+
</ThemedText>
|
|
32
|
+
</ThemedView>
|
|
33
|
+
<ThemedText>This app includes example code to help you get started.</ThemedText>
|
|
34
|
+
<Collapsible title="File-based routing">
|
|
35
|
+
<ThemedText>
|
|
36
|
+
This app has two screens:{' '}
|
|
37
|
+
<ThemedText type="defaultSemiBold">app/(tabs)/index.tsx</ThemedText> and{' '}
|
|
38
|
+
<ThemedText type="defaultSemiBold">app/(tabs)/explore.tsx</ThemedText>
|
|
39
|
+
</ThemedText>
|
|
40
|
+
<ThemedText>
|
|
41
|
+
The layout file in <ThemedText type="defaultSemiBold">app/(tabs)/_layout.tsx</ThemedText>{' '}
|
|
42
|
+
sets up the tab navigator.
|
|
43
|
+
</ThemedText>
|
|
44
|
+
<ExternalLink href="https://docs.expo.dev/router/introduction">
|
|
45
|
+
<ThemedText type="link">Learn more</ThemedText>
|
|
46
|
+
</ExternalLink>
|
|
47
|
+
</Collapsible>
|
|
48
|
+
<Collapsible title="Android, iOS, and web support">
|
|
49
|
+
<ThemedText>
|
|
50
|
+
You can open this project on Android, iOS, and the web. To open the web version, press{' '}
|
|
51
|
+
<ThemedText type="defaultSemiBold">w</ThemedText> in the terminal running this project.
|
|
52
|
+
</ThemedText>
|
|
53
|
+
</Collapsible>
|
|
54
|
+
<Collapsible title="Images">
|
|
55
|
+
<ThemedText>
|
|
56
|
+
For static images, you can use the <ThemedText type="defaultSemiBold">@2x</ThemedText> and{' '}
|
|
57
|
+
<ThemedText type="defaultSemiBold">@3x</ThemedText> suffixes to provide files for
|
|
58
|
+
different screen densities
|
|
59
|
+
</ThemedText>
|
|
60
|
+
<Image
|
|
61
|
+
source={require('@/assets/images/react-logo.png')}
|
|
62
|
+
style={{ width: 100, height: 100, alignSelf: 'center' }}
|
|
63
|
+
/>
|
|
64
|
+
<ExternalLink href="https://reactnative.dev/docs/images">
|
|
65
|
+
<ThemedText type="link">Learn more</ThemedText>
|
|
66
|
+
</ExternalLink>
|
|
67
|
+
</Collapsible>
|
|
68
|
+
<Collapsible title="Light and dark mode components">
|
|
69
|
+
<ThemedText>
|
|
70
|
+
This template has light and dark mode support. The{' '}
|
|
71
|
+
<ThemedText type="defaultSemiBold">useColorScheme()</ThemedText> hook lets you inspect
|
|
72
|
+
what the user's current color scheme is, and so you can adjust UI colors accordingly.
|
|
73
|
+
</ThemedText>
|
|
74
|
+
<ExternalLink href="https://docs.expo.dev/develop/user-interface/color-themes/">
|
|
75
|
+
<ThemedText type="link">Learn more</ThemedText>
|
|
76
|
+
</ExternalLink>
|
|
77
|
+
</Collapsible>
|
|
78
|
+
<Collapsible title="Animations">
|
|
79
|
+
<ThemedText>
|
|
80
|
+
This template includes an example of an animated component. The{' '}
|
|
81
|
+
<ThemedText type="defaultSemiBold">components/HelloWave.tsx</ThemedText> component uses
|
|
82
|
+
the powerful{' '}
|
|
83
|
+
<ThemedText type="defaultSemiBold" style={{ fontFamily: Fonts.mono }}>
|
|
84
|
+
react-native-reanimated
|
|
85
|
+
</ThemedText>{' '}
|
|
86
|
+
library to create a waving hand animation.
|
|
87
|
+
</ThemedText>
|
|
88
|
+
{Platform.select({
|
|
89
|
+
ios: (
|
|
90
|
+
<ThemedText>
|
|
91
|
+
The <ThemedText type="defaultSemiBold">components/ParallaxScrollView.tsx</ThemedText>{' '}
|
|
92
|
+
component provides a parallax effect for the header image.
|
|
93
|
+
</ThemedText>
|
|
94
|
+
),
|
|
95
|
+
})}
|
|
96
|
+
</Collapsible>
|
|
97
|
+
</ParallaxScrollView>
|
|
98
|
+
);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
const styles = StyleSheet.create({
|
|
102
|
+
headerImage: {
|
|
103
|
+
color: '#808080',
|
|
104
|
+
bottom: -90,
|
|
105
|
+
left: -35,
|
|
106
|
+
position: 'absolute',
|
|
107
|
+
},
|
|
108
|
+
titleContainer: {
|
|
109
|
+
flexDirection: 'row',
|
|
110
|
+
gap: 8,
|
|
111
|
+
},
|
|
112
|
+
});
|