@symbiote-native/cli 0.0.1

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.
Files changed (384) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +492 -0
  3. package/bundle.js +2833 -0
  4. package/package.json +49 -0
  5. package/src/index.ts +70 -0
  6. package/templates/README.md +93 -0
  7. package/templates/js/angular/.prettierrc.js +5 -0
  8. package/templates/js/angular/.watchmanconfig +1 -0
  9. package/templates/js/angular/README.md +117 -0
  10. package/templates/js/angular/app.json +4 -0
  11. package/templates/js/angular/babel.config.js +34 -0
  12. package/templates/js/angular/index.js +12 -0
  13. package/templates/js/angular/metro.config.js +38 -0
  14. package/templates/js/angular/package.json.fragment.json +29 -0
  15. package/templates/js/angular/src/App.css +89 -0
  16. package/templates/js/angular/src/App.ts +40 -0
  17. package/templates/js/angular/src/assets/angular-logo.png +0 -0
  18. package/templates/js/angular/src/assets/angular-logo@2x.png +0 -0
  19. package/templates/js/angular/src/assets/angular-logo@3x.png +0 -0
  20. package/templates/js/angular/src/assets/plus-icon.png +0 -0
  21. package/templates/js/angular/src/assets/plus-icon@2x.png +0 -0
  22. package/templates/js/angular/src/assets/plus-icon@3x.png +0 -0
  23. package/templates/js/angular/src/assets/react-native-logo.png +0 -0
  24. package/templates/js/angular/src/assets/react-native-logo@2x.png +0 -0
  25. package/templates/js/angular/src/assets/react-native-logo@3x.png +0 -0
  26. package/templates/js/angular/src/css.d.ts +23 -0
  27. package/templates/js/angular/tsconfig.angular.json +42 -0
  28. package/templates/js/angular/tsconfig.json +17 -0
  29. package/templates/js/react/.prettierrc.js +5 -0
  30. package/templates/js/react/.watchmanconfig +1 -0
  31. package/templates/js/react/App.css +69 -0
  32. package/templates/js/react/App.jsx +27 -0
  33. package/templates/js/react/App.tsx +27 -0
  34. package/templates/js/react/README.md +116 -0
  35. package/templates/js/react/app.json +4 -0
  36. package/templates/js/react/assets/react-native-logo.png +0 -0
  37. package/templates/js/react/assets/react-native-logo@2x.png +0 -0
  38. package/templates/js/react/assets/react-native-logo@3x.png +0 -0
  39. package/templates/js/react/babel.config.js +24 -0
  40. package/templates/js/react/css.d.ts +24 -0
  41. package/templates/js/react/index.js +14 -0
  42. package/templates/js/react/metro.config.js +29 -0
  43. package/templates/js/react/package.json.fragment.json +22 -0
  44. package/templates/js/react/package.json.fragment.typescript.json +11 -0
  45. package/templates/js/react/tsconfig.json +18 -0
  46. package/templates/js/solid/.prettierrc.js +5 -0
  47. package/templates/js/solid/.watchmanconfig +1 -0
  48. package/templates/js/solid/App.css +89 -0
  49. package/templates/js/solid/App.jsx +35 -0
  50. package/templates/js/solid/App.tsx +35 -0
  51. package/templates/js/solid/README.md +18 -0
  52. package/templates/js/solid/app.json +4 -0
  53. package/templates/js/solid/assets/plus-icon.png +0 -0
  54. package/templates/js/solid/assets/plus-icon@2x.png +0 -0
  55. package/templates/js/solid/assets/plus-icon@3x.png +0 -0
  56. package/templates/js/solid/assets/react-native-logo.png +0 -0
  57. package/templates/js/solid/assets/react-native-logo@2x.png +0 -0
  58. package/templates/js/solid/assets/react-native-logo@3x.png +0 -0
  59. package/templates/js/solid/assets/solid-logo.png +0 -0
  60. package/templates/js/solid/assets/solid-logo@2x.png +0 -0
  61. package/templates/js/solid/assets/solid-logo@3x.png +0 -0
  62. package/templates/js/solid/babel.config.js +29 -0
  63. package/templates/js/solid/css.d.ts +20 -0
  64. package/templates/js/solid/eslint.config.js +3 -0
  65. package/templates/js/solid/index.js +13 -0
  66. package/templates/js/solid/metro.config.js +50 -0
  67. package/templates/js/solid/package.json.fragment.json +23 -0
  68. package/templates/js/solid/package.json.fragment.typescript.json +11 -0
  69. package/templates/js/solid/tsconfig.json +11 -0
  70. package/templates/js/svelte/.prettierrc.js +15 -0
  71. package/templates/js/svelte/.watchmanconfig +1 -0
  72. package/templates/js/svelte/App.svelte +123 -0
  73. package/templates/js/svelte/App.typescript.svelte +123 -0
  74. package/templates/js/svelte/README.md +18 -0
  75. package/templates/js/svelte/app.json +4 -0
  76. package/templates/js/svelte/babel.config.js +22 -0
  77. package/templates/js/svelte/css.d.ts +21 -0
  78. package/templates/js/svelte/eslint.config.js +37 -0
  79. package/templates/js/svelte/image-uris.js +8 -0
  80. package/templates/js/svelte/index.js +13 -0
  81. package/templates/js/svelte/metro.config.js +83 -0
  82. package/templates/js/svelte/package.json.fragment.json +26 -0
  83. package/templates/js/svelte/package.json.fragment.typescript.json +12 -0
  84. package/templates/js/svelte/svelte.config.js +47 -0
  85. package/templates/js/svelte/tsconfig.json +9 -0
  86. package/templates/js/svelte/tsconfig.typecheck.json +4 -0
  87. package/templates/js/vue-sfc/.prettierrc.js +5 -0
  88. package/templates/js/vue-sfc/.watchmanconfig +1 -0
  89. package/templates/js/vue-sfc/App.typescript.vue +128 -0
  90. package/templates/js/vue-sfc/App.vue +128 -0
  91. package/templates/js/vue-sfc/README.md +124 -0
  92. package/templates/js/vue-sfc/app.json +4 -0
  93. package/templates/js/vue-sfc/assets/plus-icon.png +0 -0
  94. package/templates/js/vue-sfc/assets/plus-icon@2x.png +0 -0
  95. package/templates/js/vue-sfc/assets/plus-icon@3x.png +0 -0
  96. package/templates/js/vue-sfc/assets/react-native-logo.png +0 -0
  97. package/templates/js/vue-sfc/assets/react-native-logo@2x.png +0 -0
  98. package/templates/js/vue-sfc/assets/react-native-logo@3x.png +0 -0
  99. package/templates/js/vue-sfc/assets/vue-logo.png +0 -0
  100. package/templates/js/vue-sfc/assets/vue-logo@2x.png +0 -0
  101. package/templates/js/vue-sfc/assets/vue-logo@3x.png +0 -0
  102. package/templates/js/vue-sfc/babel.config.js +24 -0
  103. package/templates/js/vue-sfc/css.d.ts +24 -0
  104. package/templates/js/vue-sfc/eslint.config.js +48 -0
  105. package/templates/js/vue-sfc/index.js +13 -0
  106. package/templates/js/vue-sfc/metro.config.js +30 -0
  107. package/templates/js/vue-sfc/package.json.fragment.json +26 -0
  108. package/templates/js/vue-sfc/package.json.fragment.typescript.json +11 -0
  109. package/templates/js/vue-sfc/tsconfig.json +18 -0
  110. package/templates/js/vue-sfc/tsconfig.typecheck.json +8 -0
  111. package/templates/js/vue-sfc/vue-runtime-core.d.ts +3 -0
  112. package/templates/js/vue-tsx/.prettierrc.js +5 -0
  113. package/templates/js/vue-tsx/.watchmanconfig +1 -0
  114. package/templates/js/vue-tsx/App.css +89 -0
  115. package/templates/js/vue-tsx/App.jsx +40 -0
  116. package/templates/js/vue-tsx/App.tsx +40 -0
  117. package/templates/js/vue-tsx/README.md +110 -0
  118. package/templates/js/vue-tsx/app.json +4 -0
  119. package/templates/js/vue-tsx/assets/plus-icon.png +0 -0
  120. package/templates/js/vue-tsx/assets/plus-icon@2x.png +0 -0
  121. package/templates/js/vue-tsx/assets/plus-icon@3x.png +0 -0
  122. package/templates/js/vue-tsx/assets/react-native-logo.png +0 -0
  123. package/templates/js/vue-tsx/assets/react-native-logo@2x.png +0 -0
  124. package/templates/js/vue-tsx/assets/react-native-logo@3x.png +0 -0
  125. package/templates/js/vue-tsx/assets/vue-logo.png +0 -0
  126. package/templates/js/vue-tsx/assets/vue-logo@2x.png +0 -0
  127. package/templates/js/vue-tsx/assets/vue-logo@3x.png +0 -0
  128. package/templates/js/vue-tsx/babel.config.js +67 -0
  129. package/templates/js/vue-tsx/css.d.ts +24 -0
  130. package/templates/js/vue-tsx/index.js +14 -0
  131. package/templates/js/vue-tsx/metro.config.js +42 -0
  132. package/templates/js/vue-tsx/package.json.fragment.json +26 -0
  133. package/templates/js/vue-tsx/package.json.fragment.typescript.json +11 -0
  134. package/templates/js/vue-tsx/tsconfig.json +15 -0
  135. package/templates/js/vue-tsx/tsconfig.typecheck.json +10 -0
  136. package/templates/js/vue-tsx/vue-jsx.d.ts +43 -0
  137. package/templates/js/vue-tsx/vue-runtime-core.d.ts +3 -0
  138. package/templates/layers/README.md +90 -0
  139. package/templates/layers/application/package.json.fragment.json +5 -0
  140. package/templates/layers/battery/package.json.fragment.json +5 -0
  141. package/templates/layers/brightness/package.json.fragment.json +5 -0
  142. package/templates/layers/cellular/package.json.fragment.json +5 -0
  143. package/templates/layers/clipboard/package.json.fragment.json +5 -0
  144. package/templates/layers/crypto/package.json.fragment.json +5 -0
  145. package/templates/layers/device/package.json.fragment.json +5 -0
  146. package/templates/layers/expo-modules/ios/Canary/Info.plist +66 -0
  147. package/templates/layers/expo-modules/package.json.fragment.json +9 -0
  148. package/templates/layers/haptics/package.json.fragment.json +5 -0
  149. package/templates/layers/keep-awake/package.json.fragment.json +5 -0
  150. package/templates/layers/local-auth/package.json.fragment.json +5 -0
  151. package/templates/layers/localization/package.json.fragment.json +5 -0
  152. package/templates/layers/navigation/app/angular/assets/angular-logo.png +0 -0
  153. package/templates/layers/navigation/app/angular/assets/angular-logo@2x.png +0 -0
  154. package/templates/layers/navigation/app/angular/assets/angular-logo@3x.png +0 -0
  155. package/templates/layers/navigation/app/angular/assets/plus-icon.png +0 -0
  156. package/templates/layers/navigation/app/angular/assets/plus-icon@2x.png +0 -0
  157. package/templates/layers/navigation/app/angular/assets/plus-icon@3x.png +0 -0
  158. package/templates/layers/navigation/app/angular/assets/react-native-logo.png +0 -0
  159. package/templates/layers/navigation/app/angular/assets/react-native-logo@2x.png +0 -0
  160. package/templates/layers/navigation/app/angular/assets/react-native-logo@3x.png +0 -0
  161. package/templates/layers/navigation/app/angular/src/App.css +129 -0
  162. package/templates/layers/navigation/app/angular/src/App.ts +31 -0
  163. package/templates/layers/navigation/app/angular/src/DetailsScreen.ts +24 -0
  164. package/templates/layers/navigation/app/angular/src/MenuScreen.ts +43 -0
  165. package/templates/layers/navigation/app/react/App.css +109 -0
  166. package/templates/layers/navigation/app/react/App.jsx +77 -0
  167. package/templates/layers/navigation/app/react/App.tsx +77 -0
  168. package/templates/layers/navigation/app/react/assets/react-native-logo.png +0 -0
  169. package/templates/layers/navigation/app/react/assets/react-native-logo@2x.png +0 -0
  170. package/templates/layers/navigation/app/react/assets/react-native-logo@3x.png +0 -0
  171. package/templates/layers/navigation/app/solid/App.css +129 -0
  172. package/templates/layers/navigation/app/solid/App.jsx +85 -0
  173. package/templates/layers/navigation/app/solid/App.tsx +85 -0
  174. package/templates/layers/navigation/app/solid/assets/plus-icon.png +0 -0
  175. package/templates/layers/navigation/app/solid/assets/plus-icon@2x.png +0 -0
  176. package/templates/layers/navigation/app/solid/assets/plus-icon@3x.png +0 -0
  177. package/templates/layers/navigation/app/solid/assets/react-native-logo.png +0 -0
  178. package/templates/layers/navigation/app/solid/assets/react-native-logo@2x.png +0 -0
  179. package/templates/layers/navigation/app/solid/assets/react-native-logo@3x.png +0 -0
  180. package/templates/layers/navigation/app/solid/assets/solid-logo.png +0 -0
  181. package/templates/layers/navigation/app/solid/assets/solid-logo@2x.png +0 -0
  182. package/templates/layers/navigation/app/solid/assets/solid-logo@3x.png +0 -0
  183. package/templates/layers/navigation/app/svelte/App.css +129 -0
  184. package/templates/layers/navigation/app/svelte/App.svelte +19 -0
  185. package/templates/layers/navigation/app/svelte/App.typescript.svelte +19 -0
  186. package/templates/layers/navigation/app/svelte/DetailsScreen.svelte +17 -0
  187. package/templates/layers/navigation/app/svelte/DetailsScreen.typescript.svelte +17 -0
  188. package/templates/layers/navigation/app/svelte/MenuScreen.svelte +40 -0
  189. package/templates/layers/navigation/app/svelte/MenuScreen.typescript.svelte +40 -0
  190. package/templates/layers/navigation/app/svelte/image-uris.js +8 -0
  191. package/templates/layers/navigation/app/vue-sfc/App.css +129 -0
  192. package/templates/layers/navigation/app/vue-sfc/App.typescript.vue +36 -0
  193. package/templates/layers/navigation/app/vue-sfc/App.vue +36 -0
  194. package/templates/layers/navigation/app/vue-sfc/DetailsScreen.typescript.vue +20 -0
  195. package/templates/layers/navigation/app/vue-sfc/DetailsScreen.vue +20 -0
  196. package/templates/layers/navigation/app/vue-sfc/MenuScreen.typescript.vue +52 -0
  197. package/templates/layers/navigation/app/vue-sfc/MenuScreen.vue +52 -0
  198. package/templates/layers/navigation/app/vue-sfc/assets/plus-icon.png +0 -0
  199. package/templates/layers/navigation/app/vue-sfc/assets/plus-icon@2x.png +0 -0
  200. package/templates/layers/navigation/app/vue-sfc/assets/plus-icon@3x.png +0 -0
  201. package/templates/layers/navigation/app/vue-sfc/assets/react-native-logo.png +0 -0
  202. package/templates/layers/navigation/app/vue-sfc/assets/react-native-logo@2x.png +0 -0
  203. package/templates/layers/navigation/app/vue-sfc/assets/react-native-logo@3x.png +0 -0
  204. package/templates/layers/navigation/app/vue-sfc/assets/vue-logo.png +0 -0
  205. package/templates/layers/navigation/app/vue-sfc/assets/vue-logo@2x.png +0 -0
  206. package/templates/layers/navigation/app/vue-sfc/assets/vue-logo@3x.png +0 -0
  207. package/templates/layers/navigation/app/vue-tsx/App.css +129 -0
  208. package/templates/layers/navigation/app/vue-tsx/App.jsx +91 -0
  209. package/templates/layers/navigation/app/vue-tsx/App.tsx +91 -0
  210. package/templates/layers/navigation/app/vue-tsx/assets/plus-icon.png +0 -0
  211. package/templates/layers/navigation/app/vue-tsx/assets/plus-icon@2x.png +0 -0
  212. package/templates/layers/navigation/app/vue-tsx/assets/plus-icon@3x.png +0 -0
  213. package/templates/layers/navigation/app/vue-tsx/assets/react-native-logo.png +0 -0
  214. package/templates/layers/navigation/app/vue-tsx/assets/react-native-logo@2x.png +0 -0
  215. package/templates/layers/navigation/app/vue-tsx/assets/react-native-logo@3x.png +0 -0
  216. package/templates/layers/navigation/app/vue-tsx/assets/vue-logo.png +0 -0
  217. package/templates/layers/navigation/app/vue-tsx/assets/vue-logo@2x.png +0 -0
  218. package/templates/layers/navigation/app/vue-tsx/assets/vue-logo@3x.png +0 -0
  219. package/templates/layers/navigation/package.json.fragment.json +5 -0
  220. package/templates/layers/network/package.json.fragment.json +5 -0
  221. package/templates/layers/screen-orientation/package.json.fragment.json +5 -0
  222. package/templates/layers/secure-store/package.json.fragment.json +5 -0
  223. package/templates/layers/sensors/package.json.fragment.json +5 -0
  224. package/templates/layers/sharing/package.json.fragment.json +5 -0
  225. package/templates/layers/slider/package.json.fragment.json +5 -0
  226. package/templates/layers/sms/package.json.fragment.json +5 -0
  227. package/templates/layers/splash-screen/native/android/app/src/main/AndroidManifest.xml +28 -0
  228. package/templates/layers/splash-screen/native/android/app/src/main/java/com/canary/MainActivity.kt +29 -0
  229. package/templates/layers/splash-screen/native/android/app/src/main/res/values/styles.xml +12 -0
  230. package/templates/layers/splash-screen/native/ios/Canary/AppDelegate.swift +54 -0
  231. package/templates/layers/splash-screen/package.json.fragment.json +5 -0
  232. package/templates/layers/standard-web-crypto/package.json.fragment.json +5 -0
  233. package/templates/layers/store-review/package.json.fragment.json +5 -0
  234. package/templates/layers/system-ui/package.json.fragment.json +5 -0
  235. package/templates/layers/testing/detox.config.js +42 -0
  236. package/templates/layers/testing/e2e/jest.config.js +21 -0
  237. package/templates/layers/testing/e2e/setup.ts +3 -0
  238. package/templates/layers/testing/e2e/smoke.test.ts +17 -0
  239. package/templates/layers/testing/e2e/tsconfig.json +7 -0
  240. package/templates/layers/testing/fragment/angular/package.json.fragment.json +18 -0
  241. package/templates/layers/testing/fragment/base/package.json.fragment.json +18 -0
  242. package/templates/layers/tracking-transparency/package.json.fragment.json +5 -0
  243. package/templates/layers/web-browser/package.json.fragment.json +5 -0
  244. package/templates/native/Gemfile +17 -0
  245. package/templates/native/README.md +48 -0
  246. package/templates/native/android/app/build.gradle +130 -0
  247. package/templates/native/android/app/debug.keystore +0 -0
  248. package/templates/native/android/app/proguard-rules.pro +10 -0
  249. package/templates/native/android/app/src/androidTest/java/com/canary/DetoxTest.java +29 -0
  250. package/templates/native/android/app/src/main/AndroidManifest.xml +28 -0
  251. package/templates/native/android/app/src/main/java/com/canary/MainActivity.kt +22 -0
  252. package/templates/native/android/app/src/main/java/com/canary/MainApplication.kt +27 -0
  253. package/templates/native/android/app/src/main/res/drawable/rn_edit_text_material.xml +37 -0
  254. package/templates/native/android/app/src/main/res/drawable-hdpi/bootsplash_logo.png +0 -0
  255. package/templates/native/android/app/src/main/res/drawable-mdpi/bootsplash_logo.png +0 -0
  256. package/templates/native/android/app/src/main/res/drawable-xhdpi/bootsplash_logo.png +0 -0
  257. package/templates/native/android/app/src/main/res/drawable-xxhdpi/bootsplash_logo.png +0 -0
  258. package/templates/native/android/app/src/main/res/drawable-xxxhdpi/bootsplash_logo.png +0 -0
  259. package/templates/native/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
  260. package/templates/native/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
  261. package/templates/native/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
  262. package/templates/native/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
  263. package/templates/native/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
  264. package/templates/native/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
  265. package/templates/native/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
  266. package/templates/native/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
  267. package/templates/native/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
  268. package/templates/native/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
  269. package/templates/native/android/app/src/main/res/values/colors.xml +3 -0
  270. package/templates/native/android/app/src/main/res/values/strings.xml +3 -0
  271. package/templates/native/android/app/src/main/res/values/styles.xml +6 -0
  272. package/templates/native/android/build.gradle +33 -0
  273. package/templates/native/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  274. package/templates/native/android/gradle/wrapper/gradle-wrapper.properties +7 -0
  275. package/templates/native/android/gradle.properties +44 -0
  276. package/templates/native/android/gradlew +248 -0
  277. package/templates/native/android/gradlew.bat +98 -0
  278. package/templates/native/android/settings.gradle +10 -0
  279. package/templates/native/bootsplash-logo/angular/android/app/src/main/res/drawable-hdpi/bootsplash_logo.png +0 -0
  280. package/templates/native/bootsplash-logo/angular/android/app/src/main/res/drawable-mdpi/bootsplash_logo.png +0 -0
  281. package/templates/native/bootsplash-logo/angular/android/app/src/main/res/drawable-xhdpi/bootsplash_logo.png +0 -0
  282. package/templates/native/bootsplash-logo/angular/android/app/src/main/res/drawable-xxhdpi/bootsplash_logo.png +0 -0
  283. package/templates/native/bootsplash-logo/angular/android/app/src/main/res/drawable-xxxhdpi/bootsplash_logo.png +0 -0
  284. package/templates/native/bootsplash-logo/angular/ios/Canary/Images.xcassets/BootSplashLogo-498e55.imageset/logo-498e55.png +0 -0
  285. package/templates/native/bootsplash-logo/angular/ios/Canary/Images.xcassets/BootSplashLogo-498e55.imageset/logo-498e55@2x.png +0 -0
  286. package/templates/native/bootsplash-logo/angular/ios/Canary/Images.xcassets/BootSplashLogo-498e55.imageset/logo-498e55@3x.png +0 -0
  287. package/templates/native/bootsplash-logo/solid/android/app/src/main/res/drawable-hdpi/bootsplash_logo.png +0 -0
  288. package/templates/native/bootsplash-logo/solid/android/app/src/main/res/drawable-mdpi/bootsplash_logo.png +0 -0
  289. package/templates/native/bootsplash-logo/solid/android/app/src/main/res/drawable-xhdpi/bootsplash_logo.png +0 -0
  290. package/templates/native/bootsplash-logo/solid/android/app/src/main/res/drawable-xxhdpi/bootsplash_logo.png +0 -0
  291. package/templates/native/bootsplash-logo/solid/android/app/src/main/res/drawable-xxxhdpi/bootsplash_logo.png +0 -0
  292. package/templates/native/bootsplash-logo/solid/ios/Canary/Images.xcassets/BootSplashLogo-498e55.imageset/logo-498e55.png +0 -0
  293. package/templates/native/bootsplash-logo/solid/ios/Canary/Images.xcassets/BootSplashLogo-498e55.imageset/logo-498e55@2x.png +0 -0
  294. package/templates/native/bootsplash-logo/solid/ios/Canary/Images.xcassets/BootSplashLogo-498e55.imageset/logo-498e55@3x.png +0 -0
  295. package/templates/native/bootsplash-logo/svelte/android/app/src/main/res/drawable-hdpi/bootsplash_logo.png +0 -0
  296. package/templates/native/bootsplash-logo/svelte/android/app/src/main/res/drawable-mdpi/bootsplash_logo.png +0 -0
  297. package/templates/native/bootsplash-logo/svelte/android/app/src/main/res/drawable-xhdpi/bootsplash_logo.png +0 -0
  298. package/templates/native/bootsplash-logo/svelte/android/app/src/main/res/drawable-xxhdpi/bootsplash_logo.png +0 -0
  299. package/templates/native/bootsplash-logo/svelte/android/app/src/main/res/drawable-xxxhdpi/bootsplash_logo.png +0 -0
  300. package/templates/native/bootsplash-logo/svelte/ios/Canary/Images.xcassets/BootSplashLogo-498e55.imageset/logo-498e55.png +0 -0
  301. package/templates/native/bootsplash-logo/svelte/ios/Canary/Images.xcassets/BootSplashLogo-498e55.imageset/logo-498e55@2x.png +0 -0
  302. package/templates/native/bootsplash-logo/svelte/ios/Canary/Images.xcassets/BootSplashLogo-498e55.imageset/logo-498e55@3x.png +0 -0
  303. package/templates/native/bootsplash-logo/vue/android/app/src/main/res/drawable-hdpi/bootsplash_logo.png +0 -0
  304. package/templates/native/bootsplash-logo/vue/android/app/src/main/res/drawable-mdpi/bootsplash_logo.png +0 -0
  305. package/templates/native/bootsplash-logo/vue/android/app/src/main/res/drawable-xhdpi/bootsplash_logo.png +0 -0
  306. package/templates/native/bootsplash-logo/vue/android/app/src/main/res/drawable-xxhdpi/bootsplash_logo.png +0 -0
  307. package/templates/native/bootsplash-logo/vue/android/app/src/main/res/drawable-xxxhdpi/bootsplash_logo.png +0 -0
  308. package/templates/native/bootsplash-logo/vue/ios/Canary/Images.xcassets/BootSplashLogo-498e55.imageset/logo-498e55.png +0 -0
  309. package/templates/native/bootsplash-logo/vue/ios/Canary/Images.xcassets/BootSplashLogo-498e55.imageset/logo-498e55@2x.png +0 -0
  310. package/templates/native/bootsplash-logo/vue/ios/Canary/Images.xcassets/BootSplashLogo-498e55.imageset/logo-498e55@3x.png +0 -0
  311. package/templates/native/eslint.config.js +3 -0
  312. package/templates/native/ios/.xcode.env +11 -0
  313. package/templates/native/ios/Canary/AppDelegate.swift +48 -0
  314. package/templates/native/ios/Canary/BootSplash.storyboard +46 -0
  315. package/templates/native/ios/Canary/Colors.xcassets/BootSplashBackground-498e55.colorset/Contents.json +20 -0
  316. package/templates/native/ios/Canary/Images.xcassets/AppIcon.appiconset/Contents.json +53 -0
  317. package/templates/native/ios/Canary/Images.xcassets/BootSplashLogo-498e55.imageset/Contents.json +23 -0
  318. package/templates/native/ios/Canary/Images.xcassets/BootSplashLogo-498e55.imageset/logo-498e55.png +0 -0
  319. package/templates/native/ios/Canary/Images.xcassets/BootSplashLogo-498e55.imageset/logo-498e55@2x.png +0 -0
  320. package/templates/native/ios/Canary/Images.xcassets/BootSplashLogo-498e55.imageset/logo-498e55@3x.png +0 -0
  321. package/templates/native/ios/Canary/Images.xcassets/Contents.json +6 -0
  322. package/templates/native/ios/Canary/Info.plist +60 -0
  323. package/templates/native/ios/Canary/LaunchScreen.storyboard +47 -0
  324. package/templates/native/ios/Canary/PrivacyInfo.xcprivacy +37 -0
  325. package/templates/native/ios/Canary.xcodeproj/project.pbxproj +504 -0
  326. package/templates/native/ios/Canary.xcodeproj/xcshareddata/xcschemes/Canary.xcscheme +88 -0
  327. package/templates/native/ios/Canary.xcworkspace/contents.xcworkspacedata +10 -0
  328. package/templates/native/ios/Podfile +34 -0
  329. package/templates/native/package.json.fragment.json +22 -0
  330. package/templates/native/package.json.fragment.typescript.json +8 -0
  331. package/templates/styling/js/angular/css-modules/src/App.ts +25 -0
  332. package/templates/styling/js/angular/stylesheet/src/App.ts +26 -0
  333. package/templates/styling/js/react/css-modules/App.jsx +15 -0
  334. package/templates/styling/js/react/css-modules/App.tsx +15 -0
  335. package/templates/styling/js/react/stylesheet/App.jsx +19 -0
  336. package/templates/styling/js/react/stylesheet/App.tsx +19 -0
  337. package/templates/styling/js/solid/css-modules/App.jsx +15 -0
  338. package/templates/styling/js/solid/css-modules/App.tsx +15 -0
  339. package/templates/styling/js/solid/stylesheet/App.jsx +19 -0
  340. package/templates/styling/js/solid/stylesheet/App.tsx +19 -0
  341. package/templates/styling/js/svelte/css-modules/App.svelte +12 -0
  342. package/templates/styling/js/svelte/css-modules/App.typescript.svelte +12 -0
  343. package/templates/styling/js/svelte/stylesheet/App.svelte +15 -0
  344. package/templates/styling/js/svelte/stylesheet/App.typescript.svelte +15 -0
  345. package/templates/styling/js/vue-sfc/css-modules/App.typescript.vue +15 -0
  346. package/templates/styling/js/vue-sfc/css-modules/App.vue +15 -0
  347. package/templates/styling/js/vue-sfc/stylesheet/App.typescript.vue +18 -0
  348. package/templates/styling/js/vue-sfc/stylesheet/App.vue +18 -0
  349. package/templates/styling/js/vue-tsx/css-modules/App.jsx +16 -0
  350. package/templates/styling/js/vue-tsx/css-modules/App.tsx +16 -0
  351. package/templates/styling/js/vue-tsx/stylesheet/App.jsx +20 -0
  352. package/templates/styling/js/vue-tsx/stylesheet/App.tsx +20 -0
  353. package/templates/styling/navigation/angular/css-modules/src/DetailsScreen.ts +17 -0
  354. package/templates/styling/navigation/angular/css-modules/src/MenuScreen.ts +22 -0
  355. package/templates/styling/navigation/angular/stylesheet/src/DetailsScreen.ts +18 -0
  356. package/templates/styling/navigation/angular/stylesheet/src/MenuScreen.ts +23 -0
  357. package/templates/styling/navigation/react/css-modules/App.jsx +32 -0
  358. package/templates/styling/navigation/react/css-modules/App.tsx +32 -0
  359. package/templates/styling/navigation/react/stylesheet/App.jsx +36 -0
  360. package/templates/styling/navigation/react/stylesheet/App.tsx +36 -0
  361. package/templates/styling/navigation/solid/css-modules/App.jsx +32 -0
  362. package/templates/styling/navigation/solid/css-modules/App.tsx +32 -0
  363. package/templates/styling/navigation/solid/stylesheet/App.jsx +36 -0
  364. package/templates/styling/navigation/solid/stylesheet/App.tsx +36 -0
  365. package/templates/styling/navigation/svelte/css-modules/DetailsScreen.svelte +7 -0
  366. package/templates/styling/navigation/svelte/css-modules/DetailsScreen.typescript.svelte +7 -0
  367. package/templates/styling/navigation/svelte/css-modules/MenuScreen.svelte +13 -0
  368. package/templates/styling/navigation/svelte/css-modules/MenuScreen.typescript.svelte +13 -0
  369. package/templates/styling/navigation/svelte/stylesheet/DetailsScreen.svelte +11 -0
  370. package/templates/styling/navigation/svelte/stylesheet/DetailsScreen.typescript.svelte +11 -0
  371. package/templates/styling/navigation/svelte/stylesheet/MenuScreen.svelte +16 -0
  372. package/templates/styling/navigation/svelte/stylesheet/MenuScreen.typescript.svelte +16 -0
  373. package/templates/styling/navigation/vue-sfc/css-modules/DetailsScreen.typescript.vue +9 -0
  374. package/templates/styling/navigation/vue-sfc/css-modules/DetailsScreen.vue +9 -0
  375. package/templates/styling/navigation/vue-sfc/css-modules/MenuScreen.typescript.vue +15 -0
  376. package/templates/styling/navigation/vue-sfc/css-modules/MenuScreen.vue +15 -0
  377. package/templates/styling/navigation/vue-sfc/stylesheet/DetailsScreen.typescript.vue +13 -0
  378. package/templates/styling/navigation/vue-sfc/stylesheet/DetailsScreen.vue +13 -0
  379. package/templates/styling/navigation/vue-sfc/stylesheet/MenuScreen.typescript.vue +18 -0
  380. package/templates/styling/navigation/vue-sfc/stylesheet/MenuScreen.vue +18 -0
  381. package/templates/styling/navigation/vue-tsx/css-modules/App.jsx +34 -0
  382. package/templates/styling/navigation/vue-tsx/css-modules/App.tsx +34 -0
  383. package/templates/styling/navigation/vue-tsx/stylesheet/App.jsx +38 -0
  384. package/templates/styling/navigation/vue-tsx/stylesheet/App.tsx +38 -0
@@ -0,0 +1,129 @@
1
+ :root {
2
+ --ink: #0b1622;
3
+ --paper: #13243a;
4
+ --mist: #41506a;
5
+ --chalk: #cbd5e1;
6
+ --chalk-bright: #ffffff;
7
+ --brand: #42b883;
8
+ }
9
+
10
+ .screen {
11
+ flex: 1;
12
+ background-color: var(--ink);
13
+ align-items: center;
14
+ justify-content: center;
15
+ gap: 24px;
16
+ padding: 24px 32px;
17
+ }
18
+
19
+ .brand-row {
20
+ flex-direction: row;
21
+ align-items: center;
22
+ gap: 28px;
23
+ }
24
+
25
+ .brand-logo {
26
+ height: 64px;
27
+ }
28
+
29
+ /* aspect-ratio matches each source PNG's real pixel proportions — a shared square box would
30
+ stretch them off their real shape. */
31
+ .brand-logo-react {
32
+ aspect-ratio: 1.0977;
33
+ }
34
+
35
+ .brand-logo-vue {
36
+ aspect-ratio: 1.1542;
37
+ }
38
+
39
+ .plus-icon {
40
+ width: 48px;
41
+ height: 48px;
42
+ }
43
+
44
+ .title {
45
+ color: var(--chalk-bright);
46
+ font-size: 22px;
47
+ font-weight: bold;
48
+ text-align: center;
49
+ }
50
+
51
+ .subtitle {
52
+ color: var(--chalk);
53
+ font-size: 14px;
54
+ text-align: center;
55
+ }
56
+
57
+ .counter-card {
58
+ align-items: center;
59
+ gap: 4px;
60
+ padding: 20px 28px;
61
+ border-radius: 16px;
62
+ background-color: var(--paper);
63
+ }
64
+
65
+ .counter-label {
66
+ color: var(--mist);
67
+ font-size: 12px;
68
+ letter-spacing: 1px;
69
+ }
70
+
71
+ .counter-value {
72
+ color: var(--brand);
73
+ font-size: 32px;
74
+ font-weight: bold;
75
+ }
76
+
77
+ .button-row {
78
+ flex-direction: row;
79
+ gap: 12px;
80
+ }
81
+
82
+ .button-primary {
83
+ align-items: center;
84
+ justify-content: center;
85
+ border-radius: 12px;
86
+ padding: 14px 22px;
87
+ background-color: var(--brand);
88
+ }
89
+
90
+ .button-secondary {
91
+ align-items: center;
92
+ justify-content: center;
93
+ border-radius: 12px;
94
+ padding: 14px 22px;
95
+ border-width: 1.5px;
96
+ border-color: var(--mist);
97
+ }
98
+
99
+ .button-primary-text {
100
+ color: var(--ink);
101
+ font-size: 15px;
102
+ font-weight: bold;
103
+ }
104
+
105
+ .button-secondary-text {
106
+ color: var(--chalk-bright);
107
+ font-size: 15px;
108
+ font-weight: bold;
109
+ }
110
+
111
+ .details-card {
112
+ align-items: center;
113
+ gap: 10px;
114
+ padding: 24px;
115
+ border-radius: 16px;
116
+ background-color: var(--paper);
117
+ }
118
+
119
+ .details-title {
120
+ color: var(--chalk-bright);
121
+ font-size: 18px;
122
+ font-weight: bold;
123
+ }
124
+
125
+ .details-body {
126
+ color: var(--chalk);
127
+ font-size: 14px;
128
+ text-align: center;
129
+ }
@@ -0,0 +1,36 @@
1
+ <script setup lang="ts">
2
+ import { Screen, Stack } from '@symbiote-native/navigation/vue';
3
+ import './App.css';
4
+
5
+ import MenuScreen from './MenuScreen.vue';
6
+ import DetailsScreen from './DetailsScreen.vue';
7
+ </script>
8
+
9
+ <template>
10
+ <Stack initial-route-name="Menu">
11
+ <Screen
12
+ name="Menu"
13
+ :component="MenuScreen"
14
+ :options="{
15
+ title: 'Home',
16
+ headerTranslucent: true,
17
+ headerTintColor: '#ffffff',
18
+ headerTitleColor: '#ffffff',
19
+ headerStyle: { backgroundColor: '#0b1622' },
20
+ headerUserInterfaceStyle: 'dark',
21
+ }"
22
+ />
23
+ <Screen
24
+ name="Details"
25
+ :component="DetailsScreen"
26
+ :options="{
27
+ title: 'Details',
28
+ headerTranslucent: true,
29
+ headerTintColor: '#ffffff',
30
+ headerTitleColor: '#ffffff',
31
+ headerStyle: { backgroundColor: '#0b1622' },
32
+ headerUserInterfaceStyle: 'dark',
33
+ }"
34
+ />
35
+ </Stack>
36
+ </template>
@@ -0,0 +1,36 @@
1
+ <script setup>
2
+ import { Screen, Stack } from '@symbiote-native/navigation/vue';
3
+ import './App.css';
4
+
5
+ import MenuScreen from './MenuScreen.vue';
6
+ import DetailsScreen from './DetailsScreen.vue';
7
+ </script>
8
+
9
+ <template>
10
+ <Stack initial-route-name="Menu">
11
+ <Screen
12
+ name="Menu"
13
+ :component="MenuScreen"
14
+ :options="{
15
+ title: 'Home',
16
+ headerTranslucent: true,
17
+ headerTintColor: '#ffffff',
18
+ headerTitleColor: '#ffffff',
19
+ headerStyle: { backgroundColor: '#0b1622' },
20
+ headerUserInterfaceStyle: 'dark',
21
+ }"
22
+ />
23
+ <Screen
24
+ name="Details"
25
+ :component="DetailsScreen"
26
+ :options="{
27
+ title: 'Details',
28
+ headerTranslucent: true,
29
+ headerTintColor: '#ffffff',
30
+ headerTitleColor: '#ffffff',
31
+ headerStyle: { backgroundColor: '#0b1622' },
32
+ headerUserInterfaceStyle: 'dark',
33
+ }"
34
+ />
35
+ </Stack>
36
+ </template>
@@ -0,0 +1,20 @@
1
+ <script setup lang="ts">
2
+ import { useStackNavigation } from '@symbiote-native/navigation/vue';
3
+
4
+ const navigation = useStackNavigation();
5
+ </script>
6
+
7
+ <template>
8
+ <safe-area-view class="screen">
9
+ <view class="details-card">
10
+ <text class="details-title">You made it!</text>
11
+ <text class="details-body">This screen was pushed by the Stack navigator — proof navigation actually works.</text>
12
+ </view>
13
+ <pressable
14
+ class="button-secondary"
15
+ @press="() => navigation.pop()"
16
+ >
17
+ <text class="button-secondary-text">Go back</text>
18
+ </pressable>
19
+ </safe-area-view>
20
+ </template>
@@ -0,0 +1,20 @@
1
+ <script setup>
2
+ import { useStackNavigation } from '@symbiote-native/navigation/vue';
3
+
4
+ const navigation = useStackNavigation();
5
+ </script>
6
+
7
+ <template>
8
+ <safe-area-view class="screen">
9
+ <view class="details-card">
10
+ <text class="details-title">You made it!</text>
11
+ <text class="details-body">This screen was pushed by the Stack navigator — proof navigation actually works.</text>
12
+ </view>
13
+ <pressable
14
+ class="button-secondary"
15
+ @press="() => navigation.pop()"
16
+ >
17
+ <text class="button-secondary-text">Go back</text>
18
+ </pressable>
19
+ </safe-area-view>
20
+ </template>
@@ -0,0 +1,52 @@
1
+ <script setup lang="ts">
2
+ import { ref } from 'vue';
3
+ import { useStackNavigation } from '@symbiote-native/navigation/vue';
4
+
5
+ const count = ref<number>(0);
6
+ const navigation = useStackNavigation();
7
+ </script>
8
+
9
+ <template>
10
+ <safe-area-view class="screen">
11
+ <view class="brand-row">
12
+ <image
13
+ class="brand-logo brand-logo-react"
14
+ resize-mode="contain"
15
+ :source="require('./assets/react-native-logo.png')"
16
+ />
17
+ <image
18
+ class="plus-icon"
19
+ resize-mode="contain"
20
+ :source="require('./assets/plus-icon.png')"
21
+ />
22
+ <image
23
+ class="brand-logo brand-logo-vue"
24
+ resize-mode="contain"
25
+ :source="require('./assets/vue-logo.png')"
26
+ />
27
+ </view>
28
+
29
+ <text class="title">Welcome to SymbioteNative!</text>
30
+ <text class="subtitle">Framework-agnostic React Native, driven by Vue.</text>
31
+
32
+ <view class="counter-card">
33
+ <text class="counter-label">TAPS</text>
34
+ <text class="counter-value">{{ count }}</text>
35
+ </view>
36
+
37
+ <view class="button-row">
38
+ <pressable
39
+ class="button-primary"
40
+ @press="count++"
41
+ >
42
+ <text class="button-primary-text">Tap me</text>
43
+ </pressable>
44
+ <pressable
45
+ class="button-secondary"
46
+ @press="() => navigation.push('Details')"
47
+ >
48
+ <text class="button-secondary-text">Go to Details</text>
49
+ </pressable>
50
+ </view>
51
+ </safe-area-view>
52
+ </template>
@@ -0,0 +1,52 @@
1
+ <script setup>
2
+ import { ref } from 'vue';
3
+ import { useStackNavigation } from '@symbiote-native/navigation/vue';
4
+
5
+ const count = ref(0);
6
+ const navigation = useStackNavigation();
7
+ </script>
8
+
9
+ <template>
10
+ <safe-area-view class="screen">
11
+ <view class="brand-row">
12
+ <image
13
+ class="brand-logo brand-logo-react"
14
+ resize-mode="contain"
15
+ :source="require('./assets/react-native-logo.png')"
16
+ />
17
+ <image
18
+ class="plus-icon"
19
+ resize-mode="contain"
20
+ :source="require('./assets/plus-icon.png')"
21
+ />
22
+ <image
23
+ class="brand-logo brand-logo-vue"
24
+ resize-mode="contain"
25
+ :source="require('./assets/vue-logo.png')"
26
+ />
27
+ </view>
28
+
29
+ <text class="title">Welcome to SymbioteNative!</text>
30
+ <text class="subtitle">Framework-agnostic React Native, driven by Vue.</text>
31
+
32
+ <view class="counter-card">
33
+ <text class="counter-label">TAPS</text>
34
+ <text class="counter-value">{{ count }}</text>
35
+ </view>
36
+
37
+ <view class="button-row">
38
+ <pressable
39
+ class="button-primary"
40
+ @press="count++"
41
+ >
42
+ <text class="button-primary-text">Tap me</text>
43
+ </pressable>
44
+ <pressable
45
+ class="button-secondary"
46
+ @press="() => navigation.push('Details')"
47
+ >
48
+ <text class="button-secondary-text">Go to Details</text>
49
+ </pressable>
50
+ </view>
51
+ </safe-area-view>
52
+ </template>
@@ -0,0 +1,129 @@
1
+ :root {
2
+ --ink: #0b1622;
3
+ --paper: #13243a;
4
+ --mist: #41506a;
5
+ --chalk: #cbd5e1;
6
+ --chalk-bright: #ffffff;
7
+ --brand: #42b883;
8
+ }
9
+
10
+ .screen {
11
+ flex: 1;
12
+ background-color: var(--ink);
13
+ align-items: center;
14
+ justify-content: center;
15
+ gap: 24px;
16
+ padding: 24px 32px;
17
+ }
18
+
19
+ .brand-row {
20
+ flex-direction: row;
21
+ align-items: center;
22
+ gap: 28px;
23
+ }
24
+
25
+ .brand-logo {
26
+ height: 64px;
27
+ }
28
+
29
+ /* aspect-ratio matches each source PNG's real pixel proportions — a shared square box would
30
+ stretch them off their real shape. */
31
+ .brand-logo-react {
32
+ aspect-ratio: 1.0977;
33
+ }
34
+
35
+ .brand-logo-vue {
36
+ aspect-ratio: 1.1542;
37
+ }
38
+
39
+ .plus-icon {
40
+ width: 48px;
41
+ height: 48px;
42
+ }
43
+
44
+ .title {
45
+ color: var(--chalk-bright);
46
+ font-size: 22px;
47
+ font-weight: bold;
48
+ text-align: center;
49
+ }
50
+
51
+ .subtitle {
52
+ color: var(--chalk);
53
+ font-size: 14px;
54
+ text-align: center;
55
+ }
56
+
57
+ .counter-card {
58
+ align-items: center;
59
+ gap: 4px;
60
+ padding: 20px 28px;
61
+ border-radius: 16px;
62
+ background-color: var(--paper);
63
+ }
64
+
65
+ .counter-label {
66
+ color: var(--mist);
67
+ font-size: 12px;
68
+ letter-spacing: 1px;
69
+ }
70
+
71
+ .counter-value {
72
+ color: var(--brand);
73
+ font-size: 32px;
74
+ font-weight: bold;
75
+ }
76
+
77
+ .button-row {
78
+ flex-direction: row;
79
+ gap: 12px;
80
+ }
81
+
82
+ .button-primary {
83
+ align-items: center;
84
+ justify-content: center;
85
+ border-radius: 12px;
86
+ padding: 14px 22px;
87
+ background-color: var(--brand);
88
+ }
89
+
90
+ .button-secondary {
91
+ align-items: center;
92
+ justify-content: center;
93
+ border-radius: 12px;
94
+ padding: 14px 22px;
95
+ border-width: 1.5px;
96
+ border-color: var(--mist);
97
+ }
98
+
99
+ .button-primary-text {
100
+ color: var(--ink);
101
+ font-size: 15px;
102
+ font-weight: bold;
103
+ }
104
+
105
+ .button-secondary-text {
106
+ color: var(--chalk-bright);
107
+ font-size: 15px;
108
+ font-weight: bold;
109
+ }
110
+
111
+ .details-card {
112
+ align-items: center;
113
+ gap: 10px;
114
+ padding: 24px;
115
+ border-radius: 16px;
116
+ background-color: var(--paper);
117
+ }
118
+
119
+ .details-title {
120
+ color: var(--chalk-bright);
121
+ font-size: 18px;
122
+ font-weight: bold;
123
+ }
124
+
125
+ .details-body {
126
+ color: var(--chalk);
127
+ font-size: 14px;
128
+ text-align: center;
129
+ }
@@ -0,0 +1,91 @@
1
+ import { Screen, Stack, useStackNavigation } from '@symbiote-native/navigation/vue';
2
+ import { ref } from 'vue';
3
+ import './App.css';
4
+
5
+ const MenuScreen = {
6
+ setup() {
7
+ const navigation = useStackNavigation();
8
+ const count = ref(0);
9
+
10
+ return () => (
11
+ <safe-area-view class="screen">
12
+ <view class="brand-row">
13
+ <image
14
+ class="brand-logo brand-logo-react"
15
+ resizeMode="contain"
16
+ source={require('./assets/react-native-logo.png')}
17
+ />
18
+ <image
19
+ class="plus-icon"
20
+ resizeMode="contain"
21
+ source={require('./assets/plus-icon.png')}
22
+ />
23
+ <image
24
+ class="brand-logo brand-logo-vue"
25
+ resizeMode="contain"
26
+ source={require('./assets/vue-logo.png')}
27
+ />
28
+ </view>
29
+ <text class="title">Welcome to SymbioteNative!</text>
30
+ <text class="subtitle">Framework-agnostic React Native, driven by Vue.</text>
31
+
32
+ <view class="counter-card">
33
+ <text class="counter-label">TAPS</text>
34
+ <text class="counter-value">{count.value}</text>
35
+ </view>
36
+
37
+ <view class="button-row">
38
+ <pressable class="button-primary" onPress={() => count.value++}>
39
+ <text class="button-primary-text">Tap me</text>
40
+ </pressable>
41
+ <pressable class="button-secondary" onPress={() => navigation.value.push('Details')}>
42
+ <text class="button-secondary-text">Go to Details</text>
43
+ </pressable>
44
+ </view>
45
+ </safe-area-view>
46
+ );
47
+ },
48
+ };
49
+
50
+ const DetailsScreen = {
51
+ setup() {
52
+ const navigation = useStackNavigation();
53
+
54
+ return () => (
55
+ <safe-area-view class="screen">
56
+ <view class="details-card">
57
+ <text class="details-title">You made it!</text>
58
+ <text class="details-body">
59
+ This screen was pushed by the Stack navigator — proof navigation actually works.
60
+ </text>
61
+ </view>
62
+ <pressable class="button-secondary" onPress={() => navigation.value.pop()}>
63
+ <text class="button-secondary-text">Go back</text>
64
+ </pressable>
65
+ </safe-area-view>
66
+ );
67
+ },
68
+ };
69
+
70
+ const SCREEN_OPTIONS = {
71
+ headerTranslucent: true,
72
+ headerTintColor: '#ffffff',
73
+ headerTitleColor: '#ffffff',
74
+ headerStyle: { backgroundColor: '#0b1622' },
75
+ headerUserInterfaceStyle: 'dark',
76
+ };
77
+
78
+ export default {
79
+ setup() {
80
+ return () => (
81
+ <Stack initialRouteName="Menu">
82
+ <Screen name="Menu" component={MenuScreen} options={{ title: 'Home', ...SCREEN_OPTIONS }} />
83
+ <Screen
84
+ name="Details"
85
+ component={DetailsScreen}
86
+ options={{ title: 'Details', ...SCREEN_OPTIONS }}
87
+ />
88
+ </Stack>
89
+ );
90
+ },
91
+ };
@@ -0,0 +1,91 @@
1
+ import { Screen, Stack, useStackNavigation } from '@symbiote-native/navigation/vue';
2
+ import { ref } from 'vue';
3
+ import './App.css';
4
+
5
+ const MenuScreen = {
6
+ setup() {
7
+ const navigation = useStackNavigation();
8
+ const count = ref(0);
9
+
10
+ return () => (
11
+ <safe-area-view class="screen">
12
+ <view class="brand-row">
13
+ <image
14
+ class="brand-logo brand-logo-react"
15
+ resizeMode="contain"
16
+ source={require('./assets/react-native-logo.png')}
17
+ />
18
+ <image
19
+ class="plus-icon"
20
+ resizeMode="contain"
21
+ source={require('./assets/plus-icon.png')}
22
+ />
23
+ <image
24
+ class="brand-logo brand-logo-vue"
25
+ resizeMode="contain"
26
+ source={require('./assets/vue-logo.png')}
27
+ />
28
+ </view>
29
+ <text class="title">Welcome to SymbioteNative!</text>
30
+ <text class="subtitle">Framework-agnostic React Native, driven by Vue.</text>
31
+
32
+ <view class="counter-card">
33
+ <text class="counter-label">TAPS</text>
34
+ <text class="counter-value">{count.value}</text>
35
+ </view>
36
+
37
+ <view class="button-row">
38
+ <pressable class="button-primary" onPress={() => count.value++}>
39
+ <text class="button-primary-text">Tap me</text>
40
+ </pressable>
41
+ <pressable class="button-secondary" onPress={() => navigation.value.push('Details')}>
42
+ <text class="button-secondary-text">Go to Details</text>
43
+ </pressable>
44
+ </view>
45
+ </safe-area-view>
46
+ );
47
+ },
48
+ };
49
+
50
+ const DetailsScreen = {
51
+ setup() {
52
+ const navigation = useStackNavigation();
53
+
54
+ return () => (
55
+ <safe-area-view class="screen">
56
+ <view class="details-card">
57
+ <text class="details-title">You made it!</text>
58
+ <text class="details-body">
59
+ This screen was pushed by the Stack navigator — proof navigation actually works.
60
+ </text>
61
+ </view>
62
+ <pressable class="button-secondary" onPress={() => navigation.value.pop()}>
63
+ <text class="button-secondary-text">Go back</text>
64
+ </pressable>
65
+ </safe-area-view>
66
+ );
67
+ },
68
+ };
69
+
70
+ const SCREEN_OPTIONS = {
71
+ headerTranslucent: true,
72
+ headerTintColor: '#ffffff',
73
+ headerTitleColor: '#ffffff',
74
+ headerStyle: { backgroundColor: '#0b1622' },
75
+ headerUserInterfaceStyle: 'dark' as const,
76
+ };
77
+
78
+ export default {
79
+ setup() {
80
+ return () => (
81
+ <Stack initialRouteName="Menu">
82
+ <Screen name="Menu" component={MenuScreen} options={{ title: 'Home', ...SCREEN_OPTIONS }} />
83
+ <Screen
84
+ name="Details"
85
+ component={DetailsScreen}
86
+ options={{ title: 'Details', ...SCREEN_OPTIONS }}
87
+ />
88
+ </Stack>
89
+ );
90
+ },
91
+ };