nx-react-native-cli 1.0.7 → 1.0.8

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 (113) hide show
  1. package/README.md +1 -1
  2. package/contents/.eslintrc.json +293 -0
  3. package/contents/.husky/pre-commit +5 -0
  4. package/contents/.husky/pre-push +15 -0
  5. package/contents/.nvmrc +1 -0
  6. package/contents/.prettierignore +8 -0
  7. package/contents/.prettierrc +13 -0
  8. package/contents/.ruby-version +1 -0
  9. package/contents/.vscode/extensions.json +10 -0
  10. package/contents/.vscode/settings.json +18 -0
  11. package/contents/apps/mobile/.env.template +3 -0
  12. package/contents/apps/mobile/.eslintrc.json +34 -0
  13. package/contents/apps/mobile/Gemfile +11 -0
  14. package/contents/apps/mobile/android/app/build.gradle +164 -0
  15. package/contents/apps/mobile/android/app/src/dev/res/values/strings.xml +3 -0
  16. package/contents/apps/mobile/android/app/src/production/res/values/strings.xml +3 -0
  17. package/contents/apps/mobile/android/build.gradle +34 -0
  18. package/contents/apps/mobile/babel.config.json +14 -0
  19. package/contents/apps/mobile/fastlane/.env.template +24 -0
  20. package/contents/apps/mobile/fastlane/Fastfile +303 -0
  21. package/contents/apps/mobile/fastlane/Matchfile +5 -0
  22. package/contents/apps/mobile/fastlane/Pluginfile +6 -0
  23. package/contents/apps/mobile/fastlane/README.md +65 -0
  24. package/contents/apps/mobile/package.json +77 -0
  25. package/contents/apps/mobile/project.json +102 -0
  26. package/contents/apps/mobile/src/app/index.tsx +68 -0
  27. package/contents/apps/mobile/src/components/atoms/BottomSheet/bottom-sheet.component.tsx +145 -0
  28. package/contents/apps/mobile/src/components/atoms/BottomSheet/index.ts +1 -0
  29. package/contents/apps/mobile/src/components/atoms/Button/button.component.tsx +55 -0
  30. package/contents/apps/mobile/src/components/atoms/Button/index.ts +2 -0
  31. package/contents/apps/mobile/src/components/atoms/Button/outlined-button.component.tsx +59 -0
  32. package/contents/apps/mobile/src/components/atoms/Divider/divider-component.tsx +13 -0
  33. package/contents/apps/mobile/src/components/atoms/Divider/index.ts +1 -0
  34. package/contents/apps/mobile/src/components/atoms/InputLayout/index.ts +1 -0
  35. package/contents/apps/mobile/src/components/atoms/InputLayout/input-layout.component.tsx +34 -0
  36. package/contents/apps/mobile/src/components/atoms/ListLoadingItem/index.ts +1 -0
  37. package/contents/apps/mobile/src/components/atoms/ListLoadingItem/list-loading-item.component.tsx +56 -0
  38. package/contents/apps/mobile/src/components/atoms/Modal/index.ts +1 -0
  39. package/contents/apps/mobile/src/components/atoms/Modal/modal.component.tsx +58 -0
  40. package/contents/apps/mobile/src/components/atoms/ScreenLoader/index.ts +1 -0
  41. package/contents/apps/mobile/src/components/atoms/ScreenLoader/screen-loader.component.tsx +17 -0
  42. package/contents/apps/mobile/src/components/atoms/Skeleton/index.ts +1 -0
  43. package/contents/apps/mobile/src/components/atoms/Skeleton/skeleton.component.tsx +42 -0
  44. package/contents/apps/mobile/src/components/atoms/Text/index.ts +1 -0
  45. package/contents/apps/mobile/src/components/atoms/Text/text.component.tsx +23 -0
  46. package/contents/apps/mobile/src/components/atoms/TextInput/constants.ts +43 -0
  47. package/contents/apps/mobile/src/components/atoms/TextInput/index.ts +2 -0
  48. package/contents/apps/mobile/src/components/atoms/TextInput/text-input.component.tsx +137 -0
  49. package/contents/apps/mobile/src/components/atoms/index.ts +10 -0
  50. package/contents/apps/mobile/src/components/index.ts +3 -0
  51. package/contents/apps/mobile/src/components/molecules/BackButton/back-button.component.tsx +58 -0
  52. package/contents/apps/mobile/src/components/molecules/BackButton/index.ts +1 -0
  53. package/contents/apps/mobile/src/components/molecules/BottomActionsContainer/BottomActionsContainer.component.tsx +28 -0
  54. package/contents/apps/mobile/src/components/molecules/BottomActionsContainer/index.ts +1 -0
  55. package/contents/apps/mobile/src/components/molecules/ScreenContainer/index.ts +1 -0
  56. package/contents/apps/mobile/src/components/molecules/ScreenContainer/screen-container.component.tsx +100 -0
  57. package/contents/apps/mobile/src/components/molecules/ScreenHeader/index.ts +1 -0
  58. package/contents/apps/mobile/src/components/molecules/ScreenHeader/screen-header.component.tsx +71 -0
  59. package/contents/apps/mobile/src/components/molecules/StorageManager/StorageManager.component.tsx +18 -0
  60. package/contents/apps/mobile/src/components/molecules/StorageManager/index.ts +1 -0
  61. package/contents/apps/mobile/src/components/molecules/index.ts +5 -0
  62. package/contents/apps/mobile/src/components/organisms/index.ts +1 -0
  63. package/contents/apps/mobile/src/config/index.ts +13 -0
  64. package/contents/apps/mobile/src/dimens/index.ts +1 -0
  65. package/contents/apps/mobile/src/env.d.ts +17 -0
  66. package/contents/apps/mobile/src/hooks/index.ts +9 -0
  67. package/contents/apps/mobile/src/hooks/useAppState.hook.tsx +20 -0
  68. package/contents/apps/mobile/src/hooks/useApplicationDimensions.hook.tsx +10 -0
  69. package/contents/apps/mobile/src/hooks/useDebounce.hook.ts +11 -0
  70. package/contents/apps/mobile/src/hooks/useGetLayoutHeight.hook.tsx +27 -0
  71. package/contents/apps/mobile/src/hooks/useGetLayoutWidth.hook.tsx +27 -0
  72. package/contents/apps/mobile/src/hooks/useNavigation.hook.tsx +8 -0
  73. package/contents/apps/mobile/src/hooks/useShakeAnimation.hook.tsx +32 -0
  74. package/contents/apps/mobile/src/hooks/useTextInputChangeFocus.hook.tsx +12 -0
  75. package/contents/apps/mobile/src/hooks/useThrottle.hook.ts +11 -0
  76. package/contents/apps/mobile/src/icons/arrow-left.svg +3 -0
  77. package/contents/apps/mobile/src/icons/checkbox-active.svg +4 -0
  78. package/contents/apps/mobile/src/icons/checkbox-unactive.svg +4 -0
  79. package/contents/apps/mobile/src/icons/close.svg +3 -0
  80. package/contents/apps/mobile/src/icons/download.svg +4 -0
  81. package/contents/apps/mobile/src/icons/email.svg +10 -0
  82. package/contents/apps/mobile/src/icons/eye-slash.svg +11 -0
  83. package/contents/apps/mobile/src/icons/eye.svg +4 -0
  84. package/contents/apps/mobile/src/icons/gear.svg +4 -0
  85. package/contents/apps/mobile/src/icons/home.svg +3 -0
  86. package/contents/apps/mobile/src/icons/index.ts +33 -0
  87. package/contents/apps/mobile/src/icons/pencil.svg +3 -0
  88. package/contents/apps/mobile/src/icons/phone.svg +3 -0
  89. package/contents/apps/mobile/src/icons/user-circle.svg +3 -0
  90. package/contents/apps/mobile/src/icons/user.svg +4 -0
  91. package/contents/apps/mobile/src/icons/warning.svg +3 -0
  92. package/contents/apps/mobile/src/main.tsx +5 -0
  93. package/contents/apps/mobile/src/routes/index.tsx +65 -0
  94. package/contents/apps/mobile/src/routes/privateRoutes.tsx +32 -0
  95. package/contents/apps/mobile/src/routes/publicRoutes.tsx +26 -0
  96. package/contents/apps/mobile/src/routes/routes.enum.ts +5 -0
  97. package/contents/apps/mobile/src/routes/screen-options.ts +9 -0
  98. package/contents/apps/mobile/src/routes/screens.enum.ts +4 -0
  99. package/contents/apps/mobile/src/screens/HomeScreen/home.screen.tsx +12 -0
  100. package/contents/apps/mobile/src/screens/LoginScreen/login.screen.tsx +13 -0
  101. package/contents/apps/mobile/src/stores/index.ts +1 -0
  102. package/contents/apps/mobile/src/stores/local-storage.store.ts +60 -0
  103. package/contents/apps/mobile/src/stores/mmkvStorage.ts +19 -0
  104. package/contents/apps/mobile/src/tailwind/index.ts +24 -0
  105. package/contents/apps/mobile/src/types/component.type.ts +13 -0
  106. package/contents/apps/mobile/src/types/index.ts +1 -0
  107. package/contents/apps/mobile/tailwind.config.js +80 -0
  108. package/contents/apps/mobile/tsconfig.app.json +11 -0
  109. package/contents/check-env.sh +44 -0
  110. package/contents/clean-generated-outputs.sh +32 -0
  111. package/lib/index.cjs +39 -39
  112. package/package.json +3 -2
  113. package/lib/index.js +0 -75
@@ -0,0 +1,3 @@
1
+ <svg width="18" height="16" viewBox="0 0 18 16" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M17.7812 7.99981C17.7812 8.49686 17.3783 8.89981 16.8812 8.89981L4.11575 8.89981L9.10505 13.6511C9.46334 13.9956 9.47451 14.5653 9.13 14.9236C8.78549 15.2819 8.21575 15.2931 7.85745 14.9486L1.25745 8.64855C1.08098 8.47887 0.981251 8.24462 0.981251 7.99981C0.981251 7.75499 1.08098 7.52074 1.25745 7.35106L7.85745 1.05106C8.21575 0.706542 8.78549 0.717713 9.13 1.07601C9.47451 1.4343 9.46334 2.00404 9.10505 2.34856L4.11575 7.09981L16.8812 7.09981C17.3783 7.09981 17.7812 7.50275 17.7812 7.99981Z" fill="currentColor"/>
3
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <rect width="18" height="18" rx="4.5" fill="currentColor"/>
3
+ <path d="M5.0625 9.5625L7.3125 11.8125L12.9375 6.1875" stroke="white" stroke-width="1.6875" stroke-linecap="round" stroke-linejoin="round"/>
4
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <rect width="18" height="18" fill="none"/>
3
+ <rect x="0.5625" y="0.5625" width="16.875" height="16.875" rx="3.9375" stroke="currentColor" stroke-width="1.125"/>
4
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M6.66101 5.21985C6.51884 5.08737 6.33079 5.01524 6.13649 5.01867C5.94219 5.0221 5.7568 5.10081 5.61939 5.23822C5.48198 5.37564 5.40327 5.56102 5.39984 5.75532C5.39641 5.94963 5.46853 6.13767 5.60101 6.27985L9.32101 9.99985L5.60101 13.7198C5.52733 13.7885 5.46822 13.8713 5.42723 13.9633C5.38624 14.0553 5.3642 14.1546 5.36242 14.2553C5.36064 14.356 5.37917 14.4561 5.41689 14.5494C5.45461 14.6428 5.51076 14.7277 5.58197 14.7989C5.65319 14.8701 5.73803 14.9262 5.83142 14.964C5.9248 15.0017 6.02483 15.0202 6.12554 15.0184C6.22624 15.0167 6.32555 14.9946 6.41755 14.9536C6.50955 14.9126 6.59235 14.8535 6.66101 14.7798L10.381 11.0598L14.101 14.7798C14.1697 14.8535 14.2525 14.9126 14.3445 14.9536C14.4365 14.9946 14.5358 15.0167 14.6365 15.0184C14.7372 15.0202 14.8372 15.0017 14.9306 14.964C15.024 14.9262 15.1088 14.8701 15.1801 14.7989C15.2513 14.7277 15.3074 14.6428 15.3451 14.5494C15.3829 14.4561 15.4014 14.356 15.3996 14.2553C15.3978 14.1546 15.3758 14.0553 15.3348 13.9633C15.2938 13.8713 15.2347 13.7885 15.161 13.7198L11.441 9.99985L15.161 6.27985C15.2935 6.13767 15.3656 5.94963 15.3622 5.75532C15.3588 5.56102 15.28 5.37564 15.1426 5.23822C15.0052 5.10081 14.8198 5.0221 14.6255 5.01867C14.4312 5.01524 14.2432 5.08737 14.101 5.21985L10.381 8.93985L6.66101 5.21985Z" fill="currentColor"/>
3
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M12.9004 3.2999C12.9004 2.80285 12.4974 2.3999 12.0004 2.3999C11.5033 2.3999 11.1004 2.80285 11.1004 3.2999V13.6362L7.55471 9.88194C7.21341 9.52058 6.6438 9.5043 6.28243 9.84559C5.92107 10.1869 5.90479 10.7565 6.24608 11.1179L11.3461 16.5179C11.5161 16.6979 11.7528 16.7999 12.0004 16.7999C12.248 16.7999 12.4847 16.6979 12.6547 16.5179L17.7547 11.1179C18.096 10.7565 18.0797 10.1869 17.7184 9.84559C17.357 9.5043 16.7874 9.52058 16.4461 9.88194L12.9004 13.6362V3.2999Z" fill="currentColor"/>
3
+ <path d="M4.20039 15.2999C4.20039 14.8028 3.79745 14.3999 3.30039 14.3999C2.80333 14.3999 2.40039 14.8028 2.40039 15.2999V18.2999C2.40039 20.1224 3.87785 21.5999 5.70039 21.5999H18.3004C20.1229 21.5999 21.6004 20.1224 21.6004 18.2999V15.2999C21.6004 14.8028 21.1974 14.3999 20.7004 14.3999C20.2033 14.3999 19.8004 14.8028 19.8004 15.2999V18.2999C19.8004 19.1283 19.1288 19.7999 18.3004 19.7999H5.70039C4.87196 19.7999 4.20039 19.1283 4.20039 18.2999V15.2999Z" fill="currentColor"/>
4
+ </svg>
@@ -0,0 +1,10 @@
1
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g clip-path="url(#clip0_17463_17612)">
3
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M3.404 12.5957C2.6481 11.8399 2.09028 10.9093 1.77995 9.88637C1.46961 8.86345 1.41635 7.77978 1.62488 6.73135C1.8334 5.68293 2.29728 4.70212 2.97542 3.8758C3.65355 3.04948 4.52502 2.40316 5.51261 1.99409C6.50021 1.58503 7.57344 1.42585 8.63725 1.53065C9.70106 1.63544 10.7226 2.00099 11.6114 2.5949C12.5002 3.18882 13.2288 3.99276 13.7326 4.93552C14.2365 5.87829 14.5001 6.93076 14.5 7.99972C14.5 8.33124 14.3683 8.64918 14.1339 8.88361C13.8995 9.11803 13.5815 9.24972 13.25 9.24972C12.9185 9.24972 12.6005 9.11803 12.3661 8.88361C12.1317 8.64918 12 8.33124 12 7.99972C11.9999 7.03228 11.6492 6.09766 11.0128 5.36898C10.3765 4.6403 9.49757 4.16694 8.53895 4.03659C7.58033 3.90624 6.60696 4.12773 5.79913 4.66004C4.9913 5.19234 4.40376 5.99938 4.14534 6.93167C3.88693 7.86395 3.97515 8.85831 4.39366 9.73053C4.81218 10.6028 5.53263 11.2938 6.42156 11.6755C7.31049 12.0573 8.30766 12.1039 9.22835 11.8068C10.149 11.5098 10.9309 10.8891 11.429 10.0597C11.8257 10.4103 12.3152 10.6389 12.8386 10.7181C13.3621 10.7973 13.8972 10.7237 14.3799 10.5062C14.8626 10.2887 15.2722 9.93646 15.5595 9.49185C15.8469 9.04724 15.9999 8.52913 16 7.99972C15.9999 6.14888 15.3581 4.35533 14.1839 2.92465C13.0097 1.49397 11.3757 0.514697 9.56046 0.153678C7.74517 -0.207342 5.86086 0.0722327 4.2286 0.944765C2.59633 1.8173 1.3171 3.2288 0.608871 4.93878C-0.0993615 6.64875 -0.192774 8.55139 0.344549 10.3225C0.881871 12.0936 2.01668 13.6237 3.55563 14.6519C5.09457 15.6801 6.94243 16.1429 8.78436 15.9615C10.6263 15.78 12.3483 14.9655 13.657 13.6567C13.7895 13.5145 13.8616 13.3265 13.8582 13.1322C13.8547 12.9379 13.776 12.7525 13.6386 12.6151C13.5012 12.4777 13.3158 12.399 13.1215 12.3955C12.9272 12.3921 12.7392 12.4642 12.597 12.5967C11.9934 13.2004 11.2768 13.6793 10.4881 14.006C9.69947 14.3327 8.85417 14.5008 8.0005 14.5008C7.14684 14.5008 6.30153 14.3327 5.51286 14.006C4.72419 13.6793 4.00759 13.2004 3.404 12.5967M8 5.49972C7.33696 5.49972 6.70108 5.76311 6.23223 6.23195C5.76339 6.7008 5.5 7.33668 5.5 7.99972C5.5 8.66276 5.76339 9.29865 6.23223 9.76749C6.70108 10.2363 7.33696 10.4997 8 10.4997C8.66304 10.4997 9.29893 10.2363 9.76777 9.76749C10.2366 9.29865 10.5 8.66276 10.5 7.99972C10.5 7.33668 10.2366 6.7008 9.76777 6.23195C9.29893 5.76311 8.66304 5.49972 8 5.49972Z" fill="currentColor"/>
4
+ </g>
5
+ <defs>
6
+ <clipPath id="clip0_17463_17612">
7
+ <rect width="16" height="16" fill="white"/>
8
+ </clipPath>
9
+ </defs>
10
+ </svg>
@@ -0,0 +1,11 @@
1
+ <svg width="17" height="16" viewBox="0 0 17 16" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g clip-path="url(#clip0_17391_14338)">
3
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M3.12426 1.77583C2.88995 1.54152 2.51005 1.54152 2.27574 1.77583C2.04142 2.01015 2.04142 2.39005 2.27574 2.62436L13.8757 14.2244C14.11 14.4587 14.4899 14.4587 14.7243 14.2244C14.9586 13.99 14.9586 13.6101 14.7243 13.3758L13.3281 11.9797C14.5051 11.0876 15.4276 9.87728 15.9675 8.47684C16.0852 8.17159 16.0853 7.83311 15.9678 7.5278C14.8136 4.5285 11.9048 2.4001 8.49887 2.4001C7.12566 2.4001 5.83325 2.74609 4.70408 3.35565L3.12426 1.77583ZM6.70155 5.35312L7.57494 6.22651C7.85161 6.08188 8.16633 6.0001 8.50015 6.0001C9.60472 6.0001 10.5001 6.89553 10.5001 8.0001C10.5001 8.33392 10.4184 8.64863 10.2737 8.92531L11.1473 9.79885C11.4963 9.28625 11.7003 8.667 11.7003 8.0001C11.7003 6.23279 10.2676 4.8001 8.5003 4.8001C7.8334 4.8001 7.21415 5.00411 6.70155 5.35312Z" fill="#939FA3"/>
4
+ <path d="M9.09871 11.1442L11.1169 13.1624C10.297 13.446 9.41664 13.6001 8.5003 13.6001C5.09438 13.6001 2.18558 11.4717 1.0314 8.4724C0.913913 8.16708 0.914015 7.82861 1.03169 7.52336C1.42483 6.50355 2.02086 5.58456 2.77033 4.81585L5.35616 7.40168C5.31948 7.59554 5.3003 7.79558 5.3003 8.0001C5.3003 9.76741 6.73299 11.2001 8.5003 11.2001C8.70482 11.2001 8.90486 11.1809 9.09871 11.1442Z" fill="#939FA3"/>
5
+ </g>
6
+ <defs>
7
+ <clipPath id="clip0_17391_14338">
8
+ <rect width="16" height="16" fill="white" transform="translate(0.5)"/>
9
+ </clipPath>
10
+ </defs>
11
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M10 12.5C11.3807 12.5 12.5 11.3807 12.5 10C12.5 8.61929 11.3807 7.5 10 7.5C8.61929 7.5 7.5 8.61929 7.5 10C7.5 11.3807 8.61929 12.5 10 12.5Z" fill="currentColor"/>
3
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M0.664255 10.5904C0.517392 10.2087 0.517518 9.78563 0.66461 9.40408C2.10878 5.65788 5.7433 3 9.99859 3C14.256 3 17.892 5.66051 19.3347 9.40962C19.4816 9.79127 19.4814 10.2144 19.3344 10.5959C17.8902 14.3421 14.2557 17 10.0004 17C5.74298 17 2.10698 14.3395 0.664255 10.5904ZM14.0004 10C14.0004 12.2091 12.2095 14 10.0004 14C7.79123 14 6.00037 12.2091 6.00037 10C6.00037 7.79086 7.79123 6 10.0004 6C12.2095 6 14.0004 7.79086 14.0004 10Z" fill="currentColor"/>
4
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M8.49461 3.28344C8.56995 2.83139 8.96106 2.50006 9.41935 2.50006H11.581C12.0393 2.50006 12.4304 2.83139 12.5057 3.28344L12.6837 4.35098C12.7356 4.66268 12.9439 4.92232 13.2204 5.07536C13.2822 5.10958 13.3433 5.14492 13.4037 5.18137C13.6745 5.34493 14.004 5.39578 14.3003 5.28478L15.3143 4.90487C15.7435 4.7441 16.226 4.91715 16.4551 5.31404L17.5359 7.18607C17.7651 7.58296 17.6737 8.08734 17.3199 8.37861L16.4829 9.06762C16.2392 9.26829 16.1183 9.57816 16.1242 9.89383C16.1248 9.92916 16.1252 9.96457 16.1252 10.0001C16.1252 10.0355 16.1248 10.0709 16.1242 10.1063C16.1183 10.422 16.2392 10.7318 16.4829 10.9325L17.3199 11.6215C17.6737 11.9128 17.7651 12.4172 17.5359 12.814L16.4551 14.6861C16.226 15.083 15.7435 15.256 15.3143 15.0952L14.3003 14.7153C14.004 14.6043 13.6745 14.6552 13.4037 14.8187C13.3433 14.8552 13.2822 14.8905 13.2204 14.9248C12.9439 15.0778 12.7356 15.3374 12.6837 15.6491L12.5057 16.7167C12.4304 17.1687 12.0393 17.5001 11.581 17.5001H9.41935C8.96106 17.5001 8.56995 17.1687 8.49461 16.7167L8.31668 15.6491C8.26473 15.3374 8.05642 15.0778 7.77995 14.9248C7.71814 14.8905 7.65704 14.8552 7.59668 14.8188C7.32581 14.6552 6.99637 14.6043 6.70007 14.7153L5.68601 15.0952C5.25685 15.256 4.77436 15.083 4.54522 14.6861L3.4644 12.8141C3.23526 12.4172 3.32663 11.9128 3.68045 11.6215L4.51741 10.9325C4.76117 10.7318 4.882 10.422 4.87615 10.1063C4.8755 10.071 4.87517 10.0355 4.87517 10.0001C4.87517 9.96458 4.8755 9.92917 4.87615 9.89385C4.882 9.57817 4.76117 9.2683 4.51741 9.06764L3.68045 8.37862C3.32663 8.08735 3.23525 7.58297 3.4644 7.18608L4.54522 5.31405C4.77436 4.91716 5.25685 4.74411 5.68601 4.90489L6.70006 5.28478C6.99636 5.39579 7.3258 5.34494 7.59667 5.18138C7.65703 5.14493 7.71813 5.10958 7.77995 5.07536C8.05642 4.92232 8.26473 4.66268 8.31668 4.35098L8.49461 3.28344Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
3
+ <path d="M13 9.99999C13 11.3807 11.8807 12.5 10.5 12.5C9.11926 12.5 7.99998 11.3807 7.99998 9.99999C7.99998 8.61928 9.11926 7.49999 10.5 7.49999C11.8807 7.49999 13 8.61928 13 9.99999Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
4
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M7.43395 1.83441C7.74637 1.52199 8.2529 1.52199 8.56532 1.83441L14.1653 7.43441C14.3941 7.66321 14.4626 8.0073 14.3387 8.30624C14.2149 8.60518 13.9232 8.8001 13.5996 8.8001H12.7996V13.6001C12.7996 14.0419 12.4415 14.4001 11.9996 14.4001H10.3996C9.9578 14.4001 9.59963 14.0419 9.59963 13.6001V11.2001C9.59963 10.7583 9.24146 10.4001 8.79963 10.4001H7.19963C6.7578 10.4001 6.39963 10.7583 6.39963 11.2001V13.6001C6.39963 14.0419 6.04146 14.4001 5.59963 14.4001H3.99963C3.5578 14.4001 3.19963 14.0419 3.19963 13.6001V8.8001H2.39963C2.07606 8.8001 1.78435 8.60518 1.66053 8.30624C1.5367 8.0073 1.60515 7.66321 1.83395 7.43441L7.43395 1.83441Z" fill="currentColor"/>
3
+ </svg>
@@ -0,0 +1,33 @@
1
+ import ArrowLeftIcon from './arrow-left.svg';
2
+ import ActiveCheckboxIcon from './checkbox-active.svg';
3
+ import UnActiveCheckboxIcon from './checkbox-unactive.svg';
4
+ import CloseIcon from './close.svg';
5
+ import DownloadIcon from './download.svg';
6
+ import EmailIcon from './email.svg';
7
+ import EyeSlashIcon from './eye-slash.svg';
8
+ import EyeIcon from './eye.svg';
9
+ import GearIcon from './gear.svg';
10
+ import HomeIcon from './home.svg';
11
+ import PencilIcon from './pencil.svg';
12
+ import PhoneIcon from './phone.svg';
13
+ import UserCircleIcon from './user-circle.svg';
14
+ import UserIcon from './user.svg';
15
+ import WarningIcon from './warning.svg';
16
+
17
+ export {
18
+ ActiveCheckboxIcon,
19
+ ArrowLeftIcon,
20
+ CloseIcon,
21
+ DownloadIcon,
22
+ EmailIcon,
23
+ EyeIcon,
24
+ EyeSlashIcon,
25
+ GearIcon,
26
+ HomeIcon,
27
+ PencilIcon,
28
+ PhoneIcon,
29
+ UnActiveCheckboxIcon,
30
+ UserCircleIcon,
31
+ UserIcon,
32
+ WarningIcon,
33
+ };
@@ -0,0 +1,3 @@
1
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M16.8617 4.48667L18.5492 2.79917C19.2814 2.06694 20.4686 2.06694 21.2008 2.79917C21.9331 3.53141 21.9331 4.71859 21.2008 5.45083L6.83219 19.8195C6.30351 20.3481 5.65144 20.7368 4.93489 20.9502L2.25 21.75L3.04978 19.0651C3.26323 18.3486 3.65185 17.6965 4.18052 17.1678L16.8617 4.48667ZM16.8617 4.48667L19.5 7.12499" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M1.59961 2.8001C1.59961 2.13736 2.13687 1.6001 2.79961 1.6001H3.71831C4.28074 1.6001 4.76772 1.99074 4.88973 2.53978L5.4627 5.11815C5.60045 5.738 5.23148 6.35786 4.62094 6.5323L3.87471 6.74551C3.54609 6.8394 3.36047 7.18942 3.49078 7.50537C4.42362 9.76709 6.23262 11.5761 8.49434 12.5089C8.81029 12.6392 9.16031 12.4536 9.2542 12.125L9.46741 11.3788C9.64185 10.7682 10.2617 10.3993 10.8816 10.537L13.4599 11.11C14.009 11.232 14.3996 11.719 14.3996 12.2814V13.2001C14.3996 13.8628 13.8623 14.4001 13.1996 14.4001H11.9996C11.0808 14.4001 10.1889 14.2808 9.339 14.0565C5.73292 13.1048 2.89487 10.2668 1.9432 6.66071C1.71891 5.81083 1.59961 4.91894 1.59961 4.0001V2.8001Z" fill="currentColor"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M12.6004 7.00039C12.6004 10.0932 10.0932 12.6004 7.00039 12.6004C3.9076 12.6004 1.40039 10.0932 1.40039 7.00039C1.40039 3.9076 3.9076 1.40039 7.00039 1.40039C10.0932 1.40039 12.6004 3.9076 12.6004 7.00039ZM8.75039 5.25039C8.75039 6.21689 7.96689 7.00039 7.00039 7.00039C6.03389 7.00039 5.25039 6.21689 5.25039 5.25039C5.25039 4.28389 6.03389 3.50039 7.00039 3.50039C7.96689 3.50039 8.75039 4.28389 8.75039 5.25039ZM7.00039 8.40039C5.62932 8.40039 4.4117 9.05736 3.64514 10.0737C4.47695 10.9813 5.67221 11.5504 7.00039 11.5504C8.32857 11.5504 9.52383 10.9813 10.3556 10.0737C9.58908 9.05736 8.37146 8.40039 7.00039 8.40039Z" fill="currentColor"/>
3
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M8.00039 6.4001C9.32587 6.4001 10.4004 5.32558 10.4004 4.0001C10.4004 2.67461 9.32587 1.6001 8.00039 1.6001C6.67491 1.6001 5.60039 2.67461 5.60039 4.0001C5.60039 5.32558 6.67491 6.4001 8.00039 6.4001Z" fill="currentColor"/>
3
+ <path d="M2.77253 11.5949C2.61662 12.0013 2.75587 12.4569 3.09975 12.7238C4.45364 13.7745 6.154 14.4001 8.00048 14.4001C9.84884 14.4001 11.5508 13.7733 12.9054 12.7206C13.2491 12.4534 13.388 11.9978 13.2318 11.5915C12.4244 9.49093 10.3877 8.0001 8.00284 8.0001C5.61664 8.0001 3.57902 9.49256 2.77253 11.5949Z" fill="currentColor"/>
4
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M6.99987 5.25001V7.43751M1.57297 9.40662C1.06817 10.2816 1.69967 11.375 2.70984 11.375H11.2899C12.3001 11.375 12.9316 10.2816 12.4268 9.40662L8.13673 1.97058C7.63165 1.09509 6.36809 1.09509 5.863 1.97058L1.57297 9.40662ZM6.99987 9.18751H7.00424V9.19188H6.99987V9.18751Z" stroke="currentColor" stroke-width="1.05" stroke-linecap="round" stroke-linejoin="round"/>
3
+ </svg>
@@ -0,0 +1,5 @@
1
+ import { AppRegistry } from 'react-native';
2
+
3
+ import App from './app';
4
+
5
+ AppRegistry.registerComponent('AppsMobile', () => App);
@@ -0,0 +1,65 @@
1
+ import { DefaultTheme, NavigationContainer, Theme } from '@react-navigation/native';
2
+ import { createStackNavigator } from '@react-navigation/stack';
3
+ import React, { useEffect } from 'react';
4
+ import { StatusBar } from 'react-native';
5
+
6
+ import CONFIG from '../config';
7
+ import { colors } from '../tailwind';
8
+
9
+ import PrivateRoutes from './privateRoutes';
10
+ import PublicRoutes from './publicRoutes';
11
+ import { Routes } from './routes.enum';
12
+ import { screenOptions } from './screen-options';
13
+
14
+ const RootStack = createStackNavigator();
15
+
16
+ export const noAnimation = {
17
+ animationEnabled: false,
18
+ };
19
+
20
+ const navigationTheme: Theme = {
21
+ ...DefaultTheme,
22
+ colors: {
23
+ ...DefaultTheme.colors,
24
+ background: colors.gray[50],
25
+ },
26
+ };
27
+
28
+ export default function ApplicationRoutes(): JSX.Element {
29
+ // const { isLoading } = useAuth();
30
+ // const isUserAuthenticated = useLocalStorageState((state) => !!state.accessToken);
31
+ const isUserAuthenticated = false;
32
+ const initialRouteName = isUserAuthenticated ? Routes.PRIVATE : Routes.PUBLIC;
33
+
34
+ useEffect(() => {
35
+ StatusBar.setHidden(false);
36
+ if (CONFIG.IS_ANDROID) {
37
+ StatusBar.setBackgroundColor('transparent');
38
+ StatusBar.setTranslucent(true);
39
+ }
40
+ }, []);
41
+
42
+ // if (isLoading) {
43
+ // return <ScreenLoader />;
44
+ // }
45
+
46
+ const screens = isUserAuthenticated ? (
47
+ <RootStack.Screen component={PrivateRoutes} name={Routes.PRIVATE} />
48
+ ) : (
49
+ <RootStack.Screen component={PublicRoutes} name={Routes.PUBLIC} />
50
+ );
51
+
52
+ return (
53
+ <NavigationContainer theme={navigationTheme}>
54
+ <RootStack.Navigator initialRouteName={initialRouteName} screenOptions={screenOptions}>
55
+ {screens}
56
+ </RootStack.Navigator>
57
+ </NavigationContainer>
58
+ );
59
+ }
60
+
61
+ export type { PrivateScreenProps, PrivateStackParams } from './privateRoutes';
62
+ export type { PublicScreenProps, PublicStackParams } from './publicRoutes';
63
+ export * from './routes.enum';
64
+ export * from './screen-options';
65
+ export * from './screens.enum';
@@ -0,0 +1,32 @@
1
+ import { MaterialTopTabScreenProps } from '@react-navigation/material-top-tabs';
2
+ import { createStackNavigator, StackScreenProps } from '@react-navigation/stack';
3
+ import React from 'react';
4
+
5
+ import { HomeScreen } from '../screens/HomeScreen/home.screen';
6
+
7
+ import { screenOptions } from './screen-options';
8
+ import { Screens } from './screens.enum';
9
+
10
+ const PrivateStack = createStackNavigator<PrivateStackParams>();
11
+
12
+ export type PrivateStackParams = {
13
+ [Screens.HOME]: undefined;
14
+ };
15
+
16
+ export type PrivateScreenProps<T extends keyof PrivateStackParams> = StackScreenProps<
17
+ PrivateStackParams,
18
+ T
19
+ >;
20
+
21
+ export type PrivateTabScreenProps<T extends keyof PrivateStackParams> = MaterialTopTabScreenProps<
22
+ PrivateStackParams,
23
+ T
24
+ >;
25
+
26
+ export default function PrivateRoutes(): JSX.Element {
27
+ return (
28
+ <PrivateStack.Navigator initialRouteName={Screens.HOME} screenOptions={screenOptions}>
29
+ <PrivateStack.Screen component={HomeScreen} name={Screens.HOME} />
30
+ </PrivateStack.Navigator>
31
+ );
32
+ }
@@ -0,0 +1,26 @@
1
+ import { createStackNavigator, StackScreenProps } from '@react-navigation/stack';
2
+ import React from 'react';
3
+
4
+ import { LoginScreen } from '../screens/LoginScreen/login.screen';
5
+
6
+ import { screenOptions } from './screen-options';
7
+ import { Screens } from './screens.enum';
8
+
9
+ const PublicStack = createStackNavigator<PublicStackParams>();
10
+
11
+ export type PublicStackParams = {
12
+ [Screens.LOGIN]: undefined;
13
+ };
14
+
15
+ export type PublicScreenProps<T extends keyof PublicStackParams> = StackScreenProps<
16
+ PublicStackParams,
17
+ T
18
+ >;
19
+
20
+ export default function PublicRoutes(): JSX.Element {
21
+ return (
22
+ <PublicStack.Navigator initialRouteName={Screens.LOGIN} screenOptions={screenOptions}>
23
+ <PublicStack.Screen component={LoginScreen} name={Screens.LOGIN} />
24
+ </PublicStack.Navigator>
25
+ );
26
+ }
@@ -0,0 +1,5 @@
1
+ export enum Routes {
2
+ PRIVATE = 'PrivateRoute',
3
+ PUBLIC = 'PublicRoute',
4
+ SPLASH = 'Splash',
5
+ }
@@ -0,0 +1,9 @@
1
+ import CONFIG from '../config';
2
+
3
+ const areGesturesEnabled = CONFIG.IS_IOS;
4
+
5
+ export const screenOptions = {
6
+ gestureEnabled: areGesturesEnabled,
7
+ gestureResponseDistance: 350,
8
+ headerShown: false,
9
+ };
@@ -0,0 +1,4 @@
1
+ export enum Screens {
2
+ HOME = '/home',
3
+ LOGIN = '/login',
4
+ }
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+
3
+ import { ScreenContainer, Text } from '../../components';
4
+ import { PrivateScreenProps, Screens } from '../../routes';
5
+
6
+ export function HomeScreen(props: PrivateScreenProps<Screens.HOME>) {
7
+ return (
8
+ <ScreenContainer>
9
+ <Text>Home</Text>
10
+ </ScreenContainer>
11
+ );
12
+ }
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+
3
+ import { ScreenContainer, Text } from '../../components';
4
+ import { PublicScreenProps, Screens } from '../../routes';
5
+ import { tw } from '../../tailwind';
6
+
7
+ export function LoginScreen(props: PublicScreenProps<Screens.LOGIN>) {
8
+ return (
9
+ <ScreenContainer style={tw`bg-gray-50`}>
10
+ <Text>Login</Text>
11
+ </ScreenContainer>
12
+ );
13
+ }
@@ -0,0 +1 @@
1
+ export * from './local-storage.store';
@@ -0,0 +1,60 @@
1
+ import { StateCreator, create } from 'zustand';
2
+ import { PersistOptions, createJSONStorage, persist } from 'zustand/middleware';
3
+
4
+ import { MmkvStorage } from './mmkvStorage';
5
+
6
+ const initialState = {
7
+ _hasHydrated: false,
8
+ user: null,
9
+ };
10
+
11
+ // TODO: Replace this with actual user type from api-lib
12
+ type User = {
13
+ id: string;
14
+ email: string;
15
+ firstName: string;
16
+ lastName: string;
17
+ role: string;
18
+ };
19
+
20
+ export type LocalStorageState = {
21
+ _hasHydrated: boolean;
22
+ setHasHydrated: (hasHydrated: boolean) => void;
23
+ setUser: (user: User | null) => void;
24
+ signOut: () => void;
25
+ user: User | null;
26
+ };
27
+
28
+ type MyPersist = (
29
+ config: StateCreator<LocalStorageState>,
30
+ options: PersistOptions<LocalStorageState>,
31
+ ) => StateCreator<LocalStorageState>;
32
+
33
+ export const useLocalStorageState = create<LocalStorageState, []>(
34
+ (persist as unknown as MyPersist)(
35
+ (set, get) => ({
36
+ _hasHydrated: initialState._hasHydrated,
37
+ setHasHydrated: (hasHydrated) =>
38
+ set({
39
+ _hasHydrated: hasHydrated,
40
+ }),
41
+ setUser: (user) =>
42
+ set({
43
+ user,
44
+ }),
45
+ signOut: () => {
46
+ set({
47
+ user: initialState.user,
48
+ });
49
+ },
50
+ user: initialState.user,
51
+ }),
52
+ {
53
+ name: 'local-storage',
54
+ onRehydrateStorage: () => (state) => {
55
+ state?.setHasHydrated(true);
56
+ },
57
+ storage: createJSONStorage(() => MmkvStorage),
58
+ },
59
+ ),
60
+ );
@@ -0,0 +1,19 @@
1
+ import { MMKV } from 'react-native-mmkv';
2
+ import { StateStorage } from 'zustand/middleware';
3
+
4
+ import CONFIG from '../config';
5
+
6
+ const storage = new MMKV({
7
+ encryptionKey: CONFIG.STORAGE_KEY,
8
+ id: 'mmkv',
9
+ });
10
+
11
+ export const MmkvStorage: StateStorage = {
12
+ getItem: (name) => {
13
+ const value = storage.getString(name);
14
+
15
+ return value ?? null;
16
+ },
17
+ removeItem: (name) => storage.delete(name),
18
+ setItem: (name, value) => storage.set(name, value),
19
+ };
@@ -0,0 +1,24 @@
1
+ import resolveConfig from 'tailwindcss/resolveConfig';
2
+ import { create } from 'twrnc';
3
+
4
+ import tailwindConfig from '../../tailwind.config';
5
+
6
+ const theme = resolveConfig(tailwindConfig);
7
+
8
+ export const tw = create(tailwindConfig);
9
+
10
+ export const errorContainerStyle = (err: boolean) => err && tw`border-red-600`;
11
+
12
+ export const disabledInputStyle = (isDisabled: boolean) => isDisabled && tw`opacity-20`;
13
+
14
+ export const focusedInputStyle = (isFocused: boolean) => isFocused && tw`border-primary-400`;
15
+
16
+ export const errorTextStyle = (err: boolean) => err && tw`text-red-600`;
17
+
18
+ export const defaultInputContainerStyle = tw`rounded-xl border border-gray-900 px-3`;
19
+ export const defaultInputTextStyle = tw`py-2 font-normal text-gray-950`;
20
+
21
+ export const colors = {
22
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
23
+ ...((theme.theme as any).colors as any),
24
+ };
@@ -0,0 +1,13 @@
1
+ import { Atom, SetStateAction, WritableAtom } from 'jotai';
2
+ import { StyleProp, ViewStyle } from 'react-native';
3
+
4
+ export type DefaultComponentProps = {
5
+ error?: string;
6
+ isDisabled?: boolean;
7
+ style?: StyleProp<ViewStyle>;
8
+ };
9
+
10
+ export type DefaultInputComponentProps<T> = DefaultComponentProps & {
11
+ atom?: WritableAtom<T, [SetStateAction<T>], void> | Atom<T>;
12
+ isLoading?: boolean;
13
+ };
@@ -0,0 +1 @@
1
+ export * from './component.type';
@@ -0,0 +1,80 @@
1
+ /* eslint-disable sort-keys */
2
+
3
+ /** @type {import('tailwindcss').Config} */
4
+ const plugin = require('tailwindcss/plugin');
5
+
6
+ module.exports = {
7
+ content: ['./App.{js,jsx,ts,tsx}', './src/**/*.{js,jsx,ts,tsx}'],
8
+ plugins: [
9
+ plugin(({ addUtilities }) => {
10
+ addUtilities({
11
+ '.box': `border border-[#000]`,
12
+ });
13
+ }),
14
+ ],
15
+ theme: {
16
+ fontFamily: {
17
+ sans: ['Roboto'],
18
+ },
19
+ extend: {
20
+ flex: {
21
+ 2: '2 2 0%',
22
+ },
23
+ colors: {
24
+ // https://uicolors.app/create
25
+ black: {
26
+ 50: '#f6f6f6',
27
+ 100: '#e7e7e7',
28
+ 200: '#d1d1d1',
29
+ 300: '#b0b0b0',
30
+ 400: '#888888',
31
+ 500: '#6d6d6d',
32
+ 600: '#5d5d5d',
33
+ 700: '#4f4f4f',
34
+ 800: '#454545',
35
+ 900: '#3d3d3d',
36
+ 950: '#000000',
37
+ },
38
+ gray: {
39
+ 50: '#f7f8f8',
40
+ 100: '#ebedee',
41
+ 200: '#d9dade',
42
+ 300: '#b8bac1',
43
+ 400: '#91949f',
44
+ 500: '#737784',
45
+ 600: '#5d606c',
46
+ 700: '#4c4e58',
47
+ 800: '#41424b',
48
+ 900: '#36373d',
49
+ 950: '#26272b',
50
+ },
51
+ primary: {
52
+ 50: '#f0f7ff',
53
+ 100: '#e8f2f8',
54
+ 200: '#bbddfc',
55
+ 300: '#7fc0fa',
56
+ 400: '#3ba1f5',
57
+ 500: '#1185e6',
58
+ 600: '#0567c4',
59
+ 700: '#054f99',
60
+ 800: '#094683',
61
+ 900: '#0d3c6d',
62
+ 950: '#092648',
63
+ },
64
+ secondary: {
65
+ 50: '#f1fafe',
66
+ 100: '#e3f3fb',
67
+ 200: '#bde8f7',
68
+ 300: '#88d8f1',
69
+ 400: '#48c5e8',
70
+ 500: '#21add6',
71
+ 600: '#138db6',
72
+ 700: '#107094',
73
+ 800: '#125f7a',
74
+ 900: '#144f66',
75
+ 950: '#0e3243',
76
+ },
77
+ },
78
+ },
79
+ },
80
+ };
@@ -0,0 +1,11 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "compilerOptions": {
4
+ "outDir": "../../dist/out-tsc",
5
+ "strict": true,
6
+ "types": ["node"]
7
+ },
8
+ "files": ["../../node_modules/@nx/react-native/typings/svg.d.ts"],
9
+ "exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.spec.tsx", "test-setup.ts"],
10
+ "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.js", "src/**/*.jsx"]
11
+ }
@@ -0,0 +1,44 @@
1
+ #!/bin/bash
2
+
3
+ # Define the file names
4
+ envFile=$1
5
+ templateFile=$2
6
+ bitwardenLink=""
7
+
8
+ # Function to echo error messages in red
9
+ echoError() {
10
+ # $1 is the first argument to the function: the error message to echo in red
11
+ echo -e "\033[31m ERROR: $1\033[0m"
12
+ }
13
+
14
+ # Check if both files exist
15
+ if [ ! -f "$envFile" ]; then
16
+ echoError "No .env file found. Get the latest .env in $bitwardenLink"
17
+ exit 1
18
+ fi
19
+
20
+ # Initialize a flag to indicate a mismatch
21
+ mismatchFound=0
22
+
23
+ # Read each line from .env.template
24
+ while IFS= read -r line || [[ -n "$line" ]]; do
25
+ # Skip empty lines and comments
26
+ [[ -z "$line" || "$line" =~ ^# ]] && continue
27
+
28
+ # Extract the key name (assuming the format KEY=value)
29
+ key="${line%%=*}"
30
+
31
+ # Check if the key exists in .env
32
+ if ! grep -q "^$key=" "$envFile"; then
33
+ echo "Missing $key in $envFile"
34
+ mismatchFound=1
35
+ fi
36
+ done < "$templateFile"
37
+
38
+ # Check the mismatch flag to determine the script exit status
39
+ if [ $mismatchFound -ne 0 ]; then
40
+ echoError "Mismatch found. Get the latest .env in $bitwardenLink"
41
+ exit 1
42
+ else
43
+ echo "All keys from .env.template are present in .env."
44
+ fi
@@ -0,0 +1,32 @@
1
+ #!/bin/bash
2
+
3
+ # Clean generated outputs
4
+ echo "Cleaning generated outputs..."
5
+
6
+
7
+ root_node_modules_path="node_modules"
8
+ app_rn_name="mobile"
9
+ app_rn_android_path="apps/$app_rn_name/android"
10
+ app_rn_android_gradle_path="$app_rn_android_path/.gradle"
11
+ app_rn_node_modules_path="apps/$app_rn_name/node_modules"
12
+ app_rn_ios_pods_path="apps/$app_rn_name/ios/Pods"
13
+ app_rn_ios_build_path="apps/$app_rn_name/ios/build"
14
+
15
+ echo "Deleting root $root_node_modules_path..."
16
+ rm -rf "$root_node_modules_path"
17
+
18
+ echo "Deleting $app_rn_node_modules_path..."
19
+ rm -rf "$app_rn_node_modules_path"
20
+
21
+ echo "Deleting $app_rn_ios_pods_path..."
22
+ rm -rf "$app_rn_ios_pods_path"
23
+
24
+ echo "Deleting $app_rn_ios_build_path..."
25
+ rm -rf "$app_rn_ios_build_path"
26
+
27
+ echo "Deleting $app_rn_android_gradle_path..."
28
+ rm -rf "$app_rn_android_gradle_path"
29
+
30
+ npm install
31
+
32
+ echo "Done!"