@shopify/shop-minis-cli 0.0.37 → 0.0.82

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 (362) hide show
  1. package/.eslintrc.cjs +78 -0
  2. package/.vscode/extensions.json +3 -0
  3. package/.vscode/launch.json +29 -0
  4. package/.vscode/settings.json +8 -0
  5. package/.vscode/shop-minis-cli.code-workspace +8 -0
  6. package/build/commands/cancel-submission/cancel-submission.d.ts +1 -0
  7. package/build/commands/cancel-submission/cancel-submission.js +57 -0
  8. package/build/commands/cancel-submission/cancel-submission.js.map +1 -0
  9. package/build/commands/cancel-submission/index.d.ts +2 -0
  10. package/build/commands/cancel-submission/index.js +18 -0
  11. package/build/commands/cancel-submission/index.js.map +1 -0
  12. package/build/commands/cancel-submission/types.d.ts +3 -0
  13. package/build/commands/cancel-submission/types.js +2 -0
  14. package/build/commands/cancel-submission/types.js.map +1 -0
  15. package/build/commands/check-submission/index.d.ts +2 -0
  16. package/build/commands/check-submission/index.js +55 -0
  17. package/build/commands/check-submission/index.js.map +1 -0
  18. package/build/commands/check-submission/types.d.ts +3 -0
  19. package/build/commands/check-submission/types.js +2 -0
  20. package/build/commands/check-submission/types.js.map +1 -0
  21. package/build/commands/codemod/index.d.ts +3 -0
  22. package/build/commands/codemod/index.js +47 -0
  23. package/build/commands/codemod/index.js.map +1 -0
  24. package/build/commands/codemod/releases/index.d.ts +7 -0
  25. package/build/commands/codemod/releases/index.js +58 -0
  26. package/build/commands/codemod/releases/index.js.map +1 -0
  27. package/build/commands/codemod/releases/types.d.ts +9 -0
  28. package/build/commands/codemod/releases/types.js +2 -0
  29. package/build/commands/codemod/releases/types.js.map +1 -0
  30. package/build/commands/codemod/releases/v0-0-42/index.d.ts +3 -0
  31. package/build/commands/codemod/releases/v0-0-42/index.js +46 -0
  32. package/build/commands/codemod/releases/v0-0-42/index.js.map +1 -0
  33. package/build/commands/codemod/releases/v0-0-42/reset-files.d.ts +7 -0
  34. package/build/commands/codemod/releases/v0-0-42/reset-files.js +83 -0
  35. package/build/commands/codemod/releases/v0-0-42/reset-files.js.map +1 -0
  36. package/build/commands/codemod/releases/v0-0-43.d.ts +3 -0
  37. package/build/commands/codemod/releases/v0-0-43.js +32 -0
  38. package/build/commands/codemod/releases/v0-0-43.js.map +1 -0
  39. package/build/commands/codemod/releases/v0-0-44.d.ts +3 -0
  40. package/build/commands/codemod/releases/v0-0-44.js +214 -0
  41. package/build/commands/codemod/releases/v0-0-44.js.map +1 -0
  42. package/build/commands/codemod/releases/v0-0-45.d.ts +3 -0
  43. package/build/commands/codemod/releases/v0-0-45.js +23 -0
  44. package/build/commands/codemod/releases/v0-0-45.js.map +1 -0
  45. package/build/commands/codemod/releases/v0-0-50.d.ts +3 -0
  46. package/build/commands/codemod/releases/v0-0-50.js +34 -0
  47. package/build/commands/codemod/releases/v0-0-50.js.map +1 -0
  48. package/build/commands/codemod/releases/v0-0-54.d.ts +3 -0
  49. package/build/commands/codemod/releases/v0-0-54.js +70 -0
  50. package/build/commands/codemod/releases/v0-0-54.js.map +1 -0
  51. package/build/commands/codemod/releases/v0-0-56.d.ts +3 -0
  52. package/build/commands/codemod/releases/v0-0-56.js +48 -0
  53. package/build/commands/codemod/releases/v0-0-56.js.map +1 -0
  54. package/build/commands/codemod/releases/v0-0-57.d.ts +3 -0
  55. package/build/commands/codemod/releases/v0-0-57.js +41 -0
  56. package/build/commands/codemod/releases/v0-0-57.js.map +1 -0
  57. package/build/commands/codemod/releases/v0-0-58.d.ts +3 -0
  58. package/build/commands/codemod/releases/v0-0-58.js +68 -0
  59. package/build/commands/codemod/releases/v0-0-58.js.map +1 -0
  60. package/build/commands/codemod/releases/v0-0-61.d.ts +3 -0
  61. package/build/commands/codemod/releases/v0-0-61.js +30 -0
  62. package/build/commands/codemod/releases/v0-0-61.js.map +1 -0
  63. package/build/commands/codemod/releases/v0-0-63.d.ts +3 -0
  64. package/build/commands/codemod/releases/v0-0-63.js +42 -0
  65. package/build/commands/codemod/releases/v0-0-63.js.map +1 -0
  66. package/build/commands/codemod/releases/v0-0-64.d.ts +3 -0
  67. package/build/commands/codemod/releases/v0-0-64.js +47 -0
  68. package/build/commands/codemod/releases/v0-0-64.js.map +1 -0
  69. package/build/commands/codemod/releases/v0-0-75.d.ts +3 -0
  70. package/build/commands/codemod/releases/v0-0-75.js +30 -0
  71. package/build/commands/codemod/releases/v0-0-75.js.map +1 -0
  72. package/build/commands/codemod/releases/v0-0-76.d.ts +3 -0
  73. package/build/commands/codemod/releases/v0-0-76.js +32 -0
  74. package/build/commands/codemod/releases/v0-0-76.js.map +1 -0
  75. package/build/commands/codemod/releases/v0-0-77.d.ts +3 -0
  76. package/build/commands/codemod/releases/v0-0-77.js +39 -0
  77. package/build/commands/codemod/releases/v0-0-77.js.map +1 -0
  78. package/build/commands/codemod/releases/v0-0-79.d.ts +3 -0
  79. package/build/commands/codemod/releases/v0-0-79.js +35 -0
  80. package/build/commands/codemod/releases/v0-0-79.js.map +1 -0
  81. package/build/commands/config.d.ts +14 -0
  82. package/build/commands/config.js +42 -0
  83. package/build/commands/config.js.map +1 -0
  84. package/build/commands/create-mini/index.js +84 -68
  85. package/build/commands/create-mini/index.js.map +1 -1
  86. package/build/commands/create-mini/utils/template-app.d.ts +1 -1
  87. package/build/commands/create-mini/utils/template-app.js +38 -38
  88. package/build/commands/create-mini/utils/template-app.js.map +1 -1
  89. package/build/commands/dev/index.d.ts +3 -0
  90. package/build/commands/dev/index.js +51 -22
  91. package/build/commands/dev/index.js.map +1 -1
  92. package/build/commands/dev/utils/android.d.ts +6 -4
  93. package/build/commands/dev/utils/android.js +55 -67
  94. package/build/commands/dev/utils/android.js.map +1 -1
  95. package/build/commands/dev/utils/binaries.d.ts +2 -80
  96. package/build/commands/dev/utils/binaries.js +10 -166
  97. package/build/commands/dev/utils/binaries.js.map +1 -1
  98. package/build/commands/dev/utils/build-type.d.ts +2 -0
  99. package/build/commands/dev/utils/build-type.js +14 -0
  100. package/build/commands/dev/utils/build-type.js.map +1 -0
  101. package/build/commands/dev/utils/deeplink.d.ts +3 -3
  102. package/build/commands/dev/utils/deeplink.js +13 -18
  103. package/build/commands/dev/utils/deeplink.js.map +1 -1
  104. package/build/commands/dev/utils/interactive-terminal.d.ts +4 -2
  105. package/build/commands/dev/utils/interactive-terminal.js +66 -107
  106. package/build/commands/dev/utils/interactive-terminal.js.map +1 -1
  107. package/build/commands/dev/utils/metro/metro-config.js +17 -20
  108. package/build/commands/dev/utils/metro/metro-config.js.map +1 -1
  109. package/build/commands/dev/utils/metro/metro-reporter.d.ts +3 -4
  110. package/build/commands/dev/utils/metro/metro-reporter.js +6 -13
  111. package/build/commands/dev/utils/metro/metro-reporter.js.map +1 -1
  112. package/build/commands/dev/utils/metro/metro-server-middleware.d.ts +1 -0
  113. package/build/commands/dev/utils/metro/metro-server-middleware.js +11 -12
  114. package/build/commands/dev/utils/metro/metro-server-middleware.js.map +1 -1
  115. package/build/commands/dev/utils/metro/metro-server.d.ts +2 -2
  116. package/build/commands/dev/utils/metro/metro-server.js +7 -14
  117. package/build/commands/dev/utils/metro/metro-server.js.map +1 -1
  118. package/build/commands/dev/utils/network.d.ts +20 -0
  119. package/build/commands/dev/utils/network.js +122 -0
  120. package/build/commands/dev/utils/network.js.map +1 -0
  121. package/build/commands/dev/utils/platform.d.ts +18 -0
  122. package/build/commands/dev/utils/platform.js +41 -0
  123. package/build/commands/dev/utils/platform.js.map +1 -0
  124. package/build/commands/dev/utils/prompt-binary-upgrade.d.ts +1 -0
  125. package/build/commands/dev/utils/prompt-binary-upgrade.js +12 -0
  126. package/build/commands/dev/utils/prompt-binary-upgrade.js.map +1 -0
  127. package/build/commands/dev/utils/qr-code.js +3 -10
  128. package/build/commands/dev/utils/qr-code.js.map +1 -1
  129. package/build/commands/dev/utils/simulator.d.ts +5 -2
  130. package/build/commands/dev/utils/simulator.js +43 -37
  131. package/build/commands/dev/utils/simulator.js.map +1 -1
  132. package/build/commands/dev/utils/start-app/config.d.ts +5 -0
  133. package/build/commands/dev/utils/start-app/config.js +25 -0
  134. package/build/commands/dev/utils/start-app/config.js.map +1 -0
  135. package/build/commands/dev/utils/start-app/start-app-with-options.d.ts +2 -0
  136. package/build/commands/dev/utils/start-app/start-app-with-options.js +94 -0
  137. package/build/commands/dev/utils/start-app/start-app-with-options.js.map +1 -0
  138. package/build/commands/dev/utils/start-app/start-app.d.ts +2 -0
  139. package/build/commands/dev/utils/start-app/start-app.js +10 -0
  140. package/build/commands/dev/utils/start-app/start-app.js.map +1 -0
  141. package/build/commands/dev/utils/start-app/types.d.ts +20 -0
  142. package/build/commands/dev/utils/start-app/types.js +2 -0
  143. package/build/commands/dev/utils/start-app/types.js.map +1 -0
  144. package/build/commands/dev/utils/types.d.ts +24 -0
  145. package/build/commands/dev/utils/types.js +7 -0
  146. package/build/commands/dev/utils/types.js.map +1 -0
  147. package/build/commands/dev/utils/version.d.ts +64 -0
  148. package/build/commands/dev/utils/version.js +101 -0
  149. package/build/commands/dev/utils/version.js.map +1 -0
  150. package/build/commands/dev/utils/with-retries.js +1 -5
  151. package/build/commands/dev/utils/with-retries.js.map +1 -1
  152. package/build/commands/doctor/index.d.ts +6 -0
  153. package/build/commands/doctor/index.js +21 -0
  154. package/build/commands/doctor/index.js.map +1 -0
  155. package/build/commands/doctor/utils/diagnose-dependencies.d.ts +7 -0
  156. package/build/commands/doctor/utils/diagnose-dependencies.js +108 -0
  157. package/build/commands/doctor/utils/diagnose-dependencies.js.map +1 -0
  158. package/build/commands/generate-graphql-types/index.d.ts +1 -0
  159. package/build/commands/generate-graphql-types/index.js +43 -27
  160. package/build/commands/generate-graphql-types/index.js.map +1 -1
  161. package/build/commands/info/index.d.ts +3 -0
  162. package/build/commands/info/index.js +42 -0
  163. package/build/commands/info/index.js.map +1 -0
  164. package/build/commands/setup/index.d.ts +2 -0
  165. package/build/commands/setup/index.js +81 -0
  166. package/build/commands/setup/index.js.map +1 -0
  167. package/build/commands/submit/config.d.ts +9 -0
  168. package/build/commands/submit/config.js +18 -0
  169. package/build/commands/submit/config.js.map +1 -0
  170. package/build/commands/submit/errors.d.ts +19 -0
  171. package/build/commands/submit/errors.js +87 -0
  172. package/build/commands/submit/errors.js.map +1 -0
  173. package/build/commands/submit/gcs.d.ts +6 -0
  174. package/build/commands/submit/gcs.js +10 -0
  175. package/build/commands/submit/gcs.js.map +1 -0
  176. package/build/commands/submit/index.d.ts +2 -0
  177. package/build/commands/submit/index.js +25 -0
  178. package/build/commands/submit/index.js.map +1 -0
  179. package/build/commands/submit/submit.d.ts +5 -0
  180. package/build/commands/submit/submit.js +222 -0
  181. package/build/commands/submit/submit.js.map +1 -0
  182. package/build/commands/submit/tasks.d.ts +37 -0
  183. package/build/commands/submit/tasks.js +91 -0
  184. package/build/commands/submit/tasks.js.map +1 -0
  185. package/build/commands/submit/types.d.ts +14 -0
  186. package/build/commands/submit/types.js +2 -0
  187. package/build/commands/submit/types.js.map +1 -0
  188. package/build/commands/submit/utils/assert-core-dependencies-version.d.ts +1 -0
  189. package/build/commands/submit/utils/assert-core-dependencies-version.js +58 -0
  190. package/build/commands/submit/utils/assert-core-dependencies-version.js.map +1 -0
  191. package/build/commands/submit/utils/request-entry-point-params.d.ts +1 -0
  192. package/build/commands/submit/utils/request-entry-point-params.js +41 -0
  193. package/build/commands/submit/utils/request-entry-point-params.js.map +1 -0
  194. package/build/commands/submit/validation.d.ts +1 -0
  195. package/build/commands/submit/validation.js +11 -0
  196. package/build/commands/submit/validation.js.map +1 -0
  197. package/build/commands/upgrade/index.d.ts +13 -0
  198. package/build/commands/upgrade/index.js +53 -0
  199. package/build/commands/upgrade/index.js.map +1 -0
  200. package/build/commands/upgrade/utils/cli.d.ts +1 -0
  201. package/build/commands/upgrade/utils/cli.js +15 -0
  202. package/build/commands/upgrade/utils/cli.js.map +1 -0
  203. package/build/commands/validate-manifest/index.d.ts +3 -0
  204. package/build/commands/validate-manifest/index.js +29 -0
  205. package/build/commands/validate-manifest/index.js.map +1 -0
  206. package/build/data/accept-invitation.d.ts +4 -0
  207. package/build/data/accept-invitation.js +16 -0
  208. package/build/data/accept-invitation.js.map +1 -0
  209. package/build/data/cancel-submission.d.ts +22 -0
  210. package/build/data/cancel-submission.js +26 -0
  211. package/build/data/cancel-submission.js.map +1 -0
  212. package/build/data/create-submission.d.ts +20 -0
  213. package/build/data/create-submission.js +27 -0
  214. package/build/data/create-submission.js.map +1 -0
  215. package/build/data/create-upload.d.ts +21 -0
  216. package/build/data/create-upload.js +40 -0
  217. package/build/data/create-upload.js.map +1 -0
  218. package/build/data/get-submissions.d.ts +27 -0
  219. package/build/data/get-submissions.js +33 -0
  220. package/build/data/get-submissions.js.map +1 -0
  221. package/build/data/gql-client.d.ts +8 -0
  222. package/build/data/gql-client.js +9 -0
  223. package/build/data/gql-client.js.map +1 -0
  224. package/build/data/mini.d.ts +5 -0
  225. package/build/data/mini.js +14 -0
  226. package/build/data/mini.js.map +1 -0
  227. package/build/data/types/autogenerated/shop-minis-admin-api/fragment-masking.d.ts +13 -0
  228. package/build/data/types/autogenerated/shop-minis-admin-api/fragment-masking.js +7 -0
  229. package/build/data/types/autogenerated/shop-minis-admin-api/fragment-masking.js.map +1 -0
  230. package/build/data/types/autogenerated/shop-minis-admin-api/gql.d.ts +75 -0
  231. package/build/data/types/autogenerated/shop-minis-admin-api/gql.js +24 -0
  232. package/build/data/types/autogenerated/shop-minis-admin-api/gql.js.map +1 -0
  233. package/build/data/types/autogenerated/shop-minis-admin-api/graphql.d.ts +1570 -0
  234. package/build/data/types/autogenerated/shop-minis-admin-api/graphql.js +1062 -0
  235. package/build/data/types/autogenerated/shop-minis-admin-api/graphql.js.map +1 -0
  236. package/build/data/types/autogenerated/shop-minis-admin-api/index.d.ts +2 -0
  237. package/build/data/types/autogenerated/shop-minis-admin-api/index.js +3 -0
  238. package/build/data/types/autogenerated/shop-minis-admin-api/index.js.map +1 -0
  239. package/build/dev-panel/asset-manifest.json +6 -9
  240. package/build/dev-panel/index.html +1 -1
  241. package/build/dev-panel/static/css/{main.31436fe3.css → main.7f1ee407.css} +2 -2
  242. package/build/dev-panel/static/css/main.7f1ee407.css.map +1 -0
  243. package/build/dev-panel/static/js/{main.27f47095.js → main.6625699c.js} +3 -3
  244. package/build/dev-panel/static/js/main.6625699c.js.map +1 -0
  245. package/build/index.d.ts +1 -1
  246. package/build/index.js +30 -15
  247. package/build/index.js.map +1 -1
  248. package/build/schemas/manifest.schema.json +198 -0
  249. package/build/utils/archive.d.ts +30 -0
  250. package/build/utils/archive.js +38 -0
  251. package/build/utils/archive.js.map +1 -0
  252. package/build/utils/common-tasks.d.ts +1 -0
  253. package/build/utils/common-tasks.js +49 -0
  254. package/build/utils/common-tasks.js.map +1 -0
  255. package/build/utils/development-params.d.ts +13 -0
  256. package/build/utils/development-params.js +42 -0
  257. package/build/utils/development-params.js.map +1 -0
  258. package/build/{commands/utils → utils}/exec-async-child-process.d.ts +1 -1
  259. package/build/{commands/utils → utils}/exec-async-child-process.js +6 -13
  260. package/build/utils/exec-async-child-process.js.map +1 -0
  261. package/build/utils/file.d.ts +1 -0
  262. package/build/utils/file.js +7 -0
  263. package/build/utils/file.js.map +1 -0
  264. package/build/utils/minis-manifest.d.ts +6 -0
  265. package/build/utils/minis-manifest.js +56 -0
  266. package/build/utils/minis-manifest.js.map +1 -0
  267. package/build/utils/package-manager.d.ts +38 -0
  268. package/build/utils/package-manager.js +98 -0
  269. package/build/utils/package-manager.js.map +1 -0
  270. package/build/utils/patch-package.d.ts +5 -0
  271. package/build/utils/patch-package.js +76 -0
  272. package/build/utils/patch-package.js.map +1 -0
  273. package/build/utils/replace-strings-in-template.d.ts +1 -0
  274. package/build/utils/replace-strings-in-template.js +15 -0
  275. package/build/utils/replace-strings-in-template.js.map +1 -0
  276. package/build/utils/semver.d.ts +1 -0
  277. package/build/utils/semver.js +19 -0
  278. package/build/utils/semver.js.map +1 -0
  279. package/build/{commands/utils → utils}/wrap-with-loading-indicator.d.ts +1 -1
  280. package/build/utils/wrap-with-loading-indicator.js +16 -0
  281. package/build/utils/wrap-with-loading-indicator.js.map +1 -0
  282. package/package.json +35 -28
  283. package/scripts/graphql-codegen.ts +23 -0
  284. package/scripts/test-template.ts +63 -0
  285. package/shipit.alpha.yml +3 -0
  286. package/templates/__template_blank/src/index.tsx +5 -4
  287. package/templates/__template_blank/src/types.ts +1 -1
  288. package/templates/__template_common/.eslintrc.js +16 -0
  289. package/templates/__template_common/assets.d.ts +14 -0
  290. package/templates/__template_common/babel.config.js +3 -17
  291. package/templates/__template_common/gitignore +2 -0
  292. package/templates/__template_common/index.tsx +3 -6
  293. package/templates/__template_common/metro.config.js +4 -30
  294. package/templates/__template_common/package.json +17 -47
  295. package/templates/__template_common/src/manifest.json +1 -27
  296. package/templates/__template_hello_world/src/components/ComponentLink.ts +31 -19
  297. package/templates/__template_hello_world/src/components/ComponentListItem.tsx +1 -0
  298. package/templates/__template_hello_world/src/components/FeaturedComponents.tsx +4 -2
  299. package/templates/__template_hello_world/src/components/quiz/ImageCarouselSlide.tsx +54 -0
  300. package/templates/__template_hello_world/src/components/quiz/MultipleChoiceSlide.tsx +77 -0
  301. package/templates/__template_hello_world/src/components/quiz/QuizProvider.tsx +64 -0
  302. package/templates/__template_hello_world/src/components/quiz/QuizSlide.tsx +79 -0
  303. package/templates/__template_hello_world/src/components/quiz/QuizSlideCommander.tsx +35 -0
  304. package/templates/__template_hello_world/src/components/quiz/TextFieldSlide.tsx +84 -0
  305. package/templates/__template_hello_world/src/components/quiz/TextSlide.tsx +6 -0
  306. package/templates/__template_hello_world/src/components/quiz/types.ts +72 -0
  307. package/templates/__template_hello_world/src/data/Test.graphql.d.ts +69 -76
  308. package/templates/__template_hello_world/src/data/TestProducts.graphql +30 -0
  309. package/templates/__template_hello_world/src/data/TestProducts.graphql.d.ts +159 -81
  310. package/templates/__template_hello_world/src/fixtures/mocked-products-with-variants.ts +274 -0
  311. package/templates/__template_hello_world/src/hooks/useQuizData.ts +26 -0
  312. package/templates/__template_hello_world/src/hooks/useQuizState.ts +27 -0
  313. package/templates/__template_hello_world/src/index.tsx +6 -5
  314. package/templates/__template_hello_world/src/routes.tsx +46 -22
  315. package/templates/__template_hello_world/src/screens/AccordionScreen.tsx +73 -0
  316. package/templates/__template_hello_world/src/screens/BottomSheetScreen.tsx +6 -5
  317. package/templates/__template_hello_world/src/screens/HomeScreen.tsx +14 -3
  318. package/templates/__template_hello_world/src/screens/{ImageCarouselScreen.tsx → ImageMultipleChoiceScreen.tsx} +4 -6
  319. package/templates/__template_hello_world/src/screens/InputScreen.tsx +13 -70
  320. package/templates/__template_hello_world/src/screens/QuizResultScreen.tsx +82 -0
  321. package/templates/__template_hello_world/src/screens/QuizScreen.tsx +40 -0
  322. package/templates/__template_hello_world/src/screens/QuizSlideScreen.tsx +150 -0
  323. package/templates/__template_hello_world/src/screens/ShopActionsScreen.tsx +48 -0
  324. package/templates/__template_hello_world/src/screens/VariantPickerScreen.tsx +120 -0
  325. package/templates/__template_hello_world/src/types.ts +27 -24
  326. package/templates/__template_hello_world/src/utils/mockQuizData.ts +330 -0
  327. package/templates/__template_hello_world/src/utils/quizUtils.ts +75 -0
  328. package/templates/__template_snowboardz/src/components/SkillLevelIcon.tsx +1 -4
  329. package/templates/__template_snowboardz/src/components/SkillLevelPicker.tsx +7 -1
  330. package/templates/__template_snowboardz/src/data/TestProducts.graphql +1 -1
  331. package/templates/__template_snowboardz/src/data/TestProducts.graphql.d.ts +84 -74
  332. package/templates/__template_snowboardz/src/index.tsx +6 -5
  333. package/templates/__template_snowboardz/src/routes.tsx +2 -2
  334. package/templates/__template_snowboardz/src/types.ts +3 -3
  335. package/build/commands/check/index.d.ts +0 -5
  336. package/build/commands/check/index.js +0 -77
  337. package/build/commands/check/index.js.map +0 -1
  338. package/build/commands/check/utils/versions.d.ts +0 -1
  339. package/build/commands/check/utils/versions.js +0 -14
  340. package/build/commands/check/utils/versions.js.map +0 -1
  341. package/build/commands/dev/utils/binaries.test.d.ts +0 -1
  342. package/build/commands/dev/utils/binaries.test.js +0 -275
  343. package/build/commands/dev/utils/binaries.test.js.map +0 -1
  344. package/build/commands/dev/utils/minis-manifest.d.ts +0 -1
  345. package/build/commands/dev/utils/minis-manifest.js +0 -24
  346. package/build/commands/dev/utils/minis-manifest.js.map +0 -1
  347. package/build/commands/utils/exec-async-child-process.js.map +0 -1
  348. package/build/commands/utils/wrap-with-loading-indicator.js +0 -23
  349. package/build/commands/utils/wrap-with-loading-indicator.js.map +0 -1
  350. package/build/dev-panel/middleware.d.ts +0 -4
  351. package/build/dev-panel/middleware.js +0 -11
  352. package/build/dev-panel/middleware.js.map +0 -1
  353. package/build/dev-panel/static/css/main.31436fe3.css.map +0 -1
  354. package/build/dev-panel/static/js/main.27f47095.js.map +0 -1
  355. package/build/dev-panel/static/media/bottomsheet.fe525b8722f6d504a185.png +0 -0
  356. package/build/dev-panel/static/media/navigation.597434370a97c328a970.png +0 -0
  357. package/build/dev-panel/static/media/stories.a425b6972a5338fabdad.png +0 -0
  358. package/templates/__template_blank/src/custom.d.ts +0 -4
  359. package/templates/__template_common/.eslintrc.json +0 -132
  360. package/templates/__template_common/patches/react-native+0.68.5.patch +0 -173
  361. package/templates/__template_hello_world/src/utils/getFlagEmoji.spec.tsx +0 -19
  362. /package/build/dev-panel/static/js/{main.27f47095.js.LICENSE.txt → main.6625699c.js.LICENSE.txt} +0 -0
@@ -1,31 +1,5 @@
1
- const {getDefaultConfig} = require('metro-config') // eslint-disable-line import/no-extraneous-dependencies
1
+ const {
2
+ getMinisMetroConfig,
3
+ } = require('@shopify/shop-minis-runtime/metro-config')
2
4
 
3
- module.exports = (async () => {
4
- const {
5
- resolver: {sourceExts, assetExts},
6
- } = await getDefaultConfig()
7
-
8
- return {
9
- // We need to explicitly tell metro/haste/watchman to register the root directory
10
- // otherwise imports fail when running minis directly.
11
- // https://github.com/facebook/react-native/issues/24432#issuecomment-482798850
12
- watchFolders: [__dirname],
13
- server: {
14
- port: parseInt(process.env.RCT_METRO_PORT, 10) || 8082,
15
- },
16
- transformer: {
17
- // eslint-disable-next-line require-await
18
- getTransformOptions: async () => ({
19
- transform: {
20
- experimentalImportSupport: false,
21
- inlineRequires: true,
22
- },
23
- }),
24
- babelTransformerPath: require.resolve('react-native-svg-transformer'),
25
- },
26
- resolver: {
27
- assetExts: assetExts.filter(ext => ext !== 'svg'),
28
- sourceExts: [...sourceExts, 'svg'],
29
- },
30
- }
31
- })()
5
+ module.exports = getMinisMetroConfig(__dirname)
@@ -1,65 +1,35 @@
1
1
  {
2
- "name": "__MINI_APP_HANDLE_KEBAB_CASE__",
2
+ "name": "__MINI_APP_NAME_KEBAB_CASE__",
3
3
  "version": "0.0.1",
4
4
  "private": true,
5
5
  "scripts": {
6
6
  "start": "shop-minis dev",
7
- "presubmit": "shop-minis check && yarn lint",
7
+ "submit": "shop-minis submit",
8
+ "cancel-submission": "shop-minis cancel-submission",
9
+ "check-submission": "shop-minis check-submission",
8
10
  "test": "jest",
9
11
  "lint": "eslint .",
10
- "postinstall": "patch-package",
11
12
  "generate-graphql-types": "shop-minis generate-graphql-types"
12
13
  },
14
+ "dependencies": {
15
+ "@shopify/shop-minis-runtime": "__SHOP_MINIS_RUNTIME_VERSION__"
16
+ },
13
17
  "devDependencies": {
14
- "@babel/core": "^7.12.9",
15
- "@babel/plugin-transform-named-capturing-groups-regex": "^7.20.5",
16
- "@babel/plugin-transform-react-jsx": "^7.20.7",
17
- "@babel/runtime": "^7.12.5",
18
- "@graphql-eslint/eslint-plugin": "^3.15.0",
19
- "@react-native-community/blur": "4.3.0",
20
- "@react-native-community/eslint-config": "^3.2.0",
21
- "@react-navigation/native": "6.1.2",
22
- "@react-navigation/native-stack": "6.9.8",
23
- "@react-native-community/datetimepicker": "^6.7.5",
24
- "@react-native-community/picker": "1.6.1",
25
- "@shopify/eslint-plugin": "^42.0.3",
26
- "@shopify/react-graphql": "0.0.0-snapshot-20230110221326",
27
- "@shopify/restyle": "^2.1.0",
28
18
  "@shopify/shop-minis-cli": "__SHOP_MINIS_CLI_VERSION__",
29
- "@shopify/shop-minis-platform-sdk": "^0.1.11",
30
- "@types/color": "^3.0.3",
31
- "@types/react": "^17.0.39",
32
- "@types/react-native": "^0.68.1",
33
- "apollo-link-timeout": "^4.0.0",
19
+ "@types/jest": "^29.2.6",
34
20
  "babel-jest": "^26.6.3",
35
- "babel-plugin-import-graphql": "^2.8.1",
36
- "color": "^4.2.3",
37
21
  "eslint": "^8.32.0",
38
- "eslint-plugin-react-native": "^4.0.0",
39
- "eslint-plugin-reanimated": "^2.0.0",
40
- "graphql": "^15.0.0",
41
- "intl": "^1.2.5",
42
- "jest": "^26.6.3",
43
- "metro-react-native-babel-preset": "^0.67.0",
44
- "patch-package": "^6.4.7",
45
- "postinstall-postinstall": "^2.1.0",
46
- "prettier": "^2.8.2",
47
- "react": "17.0.2",
48
- "react-native": "0.68.5",
49
- "react-native-fast-image": "8.6.3",
50
- "react-native-gesture-handler": "2.6.1",
51
- "react-native-localize": "2.2.4",
52
- "react-native-progress": "5.0.0",
53
- "react-native-reanimated": "2.13.0",
54
- "react-native-safe-area-context": "4.4.1",
55
- "react-native-screens": "3.18.2",
56
- "react-native-svg": "13.6.0",
57
- "react-native-svg-transformer": "^1.0.0",
58
- "react-native-webview": "11.23.1",
59
- "react-test-renderer": "17.0.2",
60
- "typescript": "~4.7.4"
22
+ "jest": "^29.3.1",
23
+ "prettier": "^2.8.2"
61
24
  },
62
25
  "jest": {
63
26
  "preset": "react-native"
27
+ },
28
+ "overrides": {
29
+ "graphql": "15.8.0",
30
+ "react": "18.2.0"
31
+ },
32
+ "resolutions": {
33
+ "@apollo/federation": "0.38.1"
64
34
  }
65
35
  }
@@ -1,29 +1,3 @@
1
1
  {
2
- "name": "__MINI_APP_NAME__",
3
- "handle": "__MINI_APP_HANDLE_KEBAB_CASE__",
4
- "icon_url": "https://cdn.shopify.com/shop-assets/static_uploads/mini_apps/mini-placeholder-icon.png",
5
- "shopify_app_ids": [],
6
- "description": "Mini App Description",
7
- "entry_points": [
8
- {
9
- "type": "ACTION_BUTTON",
10
- "location": "PRODUCT_PAGE",
11
- "images": {
12
- "default_value": []
13
- },
14
- "call_to_action_text": {
15
- "default_value": "Open __MINI_APP_NAME__"
16
- },
17
- "visibility": {
18
- "owner_type": "PRODUCT",
19
- "namespace": "__MINI_APP_HANDLE_KEBAB_CASE__",
20
- "key": "available"
21
- },
22
- "visibility_rule": {
23
- "owner_type": "SHOP",
24
- "namespace": "__MINI_APP_HANDLE_KEBAB_CASE__",
25
- "key": "product_entry_point_rule"
26
- }
27
- }
28
- ]
2
+ "name": "__MINI_APP_NAME__"
29
3
  }
@@ -7,76 +7,88 @@ export interface ComponentLink {
7
7
  }
8
8
 
9
9
  export const componentLinks: ComponentLink[] = [
10
+ {
11
+ name: 'Accordion',
12
+ screen: '__MINI_APP_NAME_PASCAL_CASE__.Accordion',
13
+ },
10
14
  {
11
15
  name: 'Avatar',
12
- screen: '__MINI_APP_HANDLE_PASCAL_CASE__.Avatar',
16
+ screen: '__MINI_APP_NAME_PASCAL_CASE__.Avatar',
13
17
  },
14
18
  {
15
19
  name: 'BottomSheet',
16
- screen: '__MINI_APP_HANDLE_PASCAL_CASE__.BottomSheet',
20
+ screen: '__MINI_APP_NAME_PASCAL_CASE__.BottomSheet',
17
21
  },
18
22
  {
19
23
  name: 'Buttons',
20
- screen: '__MINI_APP_HANDLE_PASCAL_CASE__.Buttons',
24
+ screen: '__MINI_APP_NAME_PASCAL_CASE__.Buttons',
21
25
  },
22
26
  {
23
27
  name: 'Grid',
24
- screen: '__MINI_APP_HANDLE_PASCAL_CASE__.Grid',
28
+ screen: '__MINI_APP_NAME_PASCAL_CASE__.Grid',
25
29
  },
26
30
  {
27
31
  name: 'Icon',
28
- screen: '__MINI_APP_HANDLE_PASCAL_CASE__.Icons',
32
+ screen: '__MINI_APP_NAME_PASCAL_CASE__.Icons',
29
33
  },
30
34
  {
31
- name: 'ImageCarousel',
32
- screen: '__MINI_APP_HANDLE_PASCAL_CASE__.ImageCarousel',
35
+ name: 'ImageMultipleChoice',
36
+ screen: '__MINI_APP_NAME_PASCAL_CASE__.ImageMultipleChoice',
33
37
  },
34
38
  {
35
39
  name: 'Inputs',
36
- screen: '__MINI_APP_HANDLE_PASCAL_CASE__.Inputs',
40
+ screen: '__MINI_APP_NAME_PASCAL_CASE__.Inputs',
37
41
  },
38
42
  {
39
43
  name: 'Media',
40
- screen: '__MINI_APP_HANDLE_PASCAL_CASE__.Media',
44
+ screen: '__MINI_APP_NAME_PASCAL_CASE__.Media',
41
45
  },
42
46
  {
43
47
  name: 'Modal',
44
- screen: '__MINI_APP_HANDLE_PASCAL_CASE__.Modal',
48
+ screen: '__MINI_APP_NAME_PASCAL_CASE__.Modal',
45
49
  },
46
50
  {
47
51
  name: 'MultipleChoice',
48
- screen: '__MINI_APP_HANDLE_PASCAL_CASE__.MultipleChoice',
52
+ screen: '__MINI_APP_NAME_PASCAL_CASE__.MultipleChoice',
49
53
  },
50
54
  {
51
55
  name: 'ProductCard',
52
- screen: '__MINI_APP_HANDLE_PASCAL_CASE__.ProductCard',
56
+ screen: '__MINI_APP_NAME_PASCAL_CASE__.ProductCard',
53
57
  },
54
58
  {
55
59
  name: 'ProductCardGrid',
56
- screen: '__MINI_APP_HANDLE_PASCAL_CASE__.ProductCardGrid',
60
+ screen: '__MINI_APP_NAME_PASCAL_CASE__.ProductCardGrid',
57
61
  },
58
62
  {
59
63
  name: 'ProductLink',
60
- screen: '__MINI_APP_HANDLE_PASCAL_CASE__.ProductLink',
64
+ screen: '__MINI_APP_NAME_PASCAL_CASE__.ProductLink',
61
65
  },
62
66
  {
63
67
  name: 'ProgressIndicator',
64
- screen: '__MINI_APP_HANDLE_PASCAL_CASE__.ProgressIndicator',
68
+ screen: '__MINI_APP_NAME_PASCAL_CASE__.ProgressIndicator',
65
69
  },
66
70
  {
67
71
  name: 'Spinner',
68
- screen: '__MINI_APP_HANDLE_PASCAL_CASE__.Spinner',
72
+ screen: '__MINI_APP_NAME_PASCAL_CASE__.Spinner',
69
73
  },
70
74
  {
71
75
  name: 'Typography',
72
- screen: '__MINI_APP_HANDLE_PASCAL_CASE__.Typography',
76
+ screen: '__MINI_APP_NAME_PASCAL_CASE__.Typography',
73
77
  },
74
78
  {
75
79
  name: 'QuantityPicker',
76
- screen: '__MINI_APP_HANDLE_PASCAL_CASE__.QuantityPicker',
80
+ screen: '__MINI_APP_NAME_PASCAL_CASE__.QuantityPicker',
81
+ },
82
+ {
83
+ name: 'VariantPicker',
84
+ screen: '__MINI_APP_NAME_PASCAL_CASE__.VariantPicker',
85
+ },
86
+ {
87
+ name: 'Quiz Example',
88
+ screen: '__MINI_APP_NAME_PASCAL_CASE__.Quiz',
77
89
  },
78
90
  {
79
91
  name: 'WebView',
80
- screen: '__MINI_APP_HANDLE_PASCAL_CASE__.WebView',
92
+ screen: '__MINI_APP_NAME_PASCAL_CASE__.WebView',
81
93
  },
82
94
  ]
@@ -21,6 +21,7 @@ export const ComponentListItem = ({
21
21
  borderBottomColor="borders-regular"
22
22
  borderBottomWidth={1}
23
23
  >
24
+ {/* @ts-expect-error - when the stack param list contains too many routes... typescript throws random errors */}
24
25
  <TouchableOpacity onPress={() => navigation.navigate(screen)}>
25
26
  <Box
26
27
  justifyContent="space-between"
@@ -39,8 +39,10 @@ export const FeaturedComponents = ({
39
39
  componentLinks[
40
40
  Math.floor(Math.random() * componentLinks.length)
41
41
  ]
42
+ // @ts-expect-error - when the stack param list contains too many routes... typescript throws random errors
42
43
  navigation.navigate(randomComponentLink.screen)
43
44
  } else {
45
+ // @ts-expect-error - when the stack param list contains too many routes... typescript throws random errors
44
46
  navigation.navigate(item.screen)
45
47
  }
46
48
  }}
@@ -54,7 +56,7 @@ export const FeaturedComponents = ({
54
56
  marginRight={isLast ? 's' : 'none'}
55
57
  flexDirection="column"
56
58
  >
57
- {item.thumbnail && !isLast && (
59
+ {item.thumbnail && !isLast ? (
58
60
  <Image
59
61
  style={{
60
62
  width: cardWidth,
@@ -62,7 +64,7 @@ export const FeaturedComponents = ({
62
64
  }}
63
65
  source={item.thumbnail}
64
66
  />
65
- )}
67
+ ) : null}
66
68
 
67
69
  {isLast ? (
68
70
  <Box
@@ -0,0 +1,54 @@
1
+ import {
2
+ ImageCarousel,
3
+ ImageCarouselProps,
4
+ } from '@shopify/shop-minis-platform-sdk'
5
+ import {useCallback, useEffect, useState} from 'react'
6
+
7
+ import {QuizSlide, QuizSlideProps} from './QuizSlide'
8
+ import {SlideLogic} from './types'
9
+
10
+ export interface ImageCarouselSlideProps extends SlideLogic<number[]> {
11
+ quizSlideProps: QuizSlideProps
12
+ imageCarouselProps: ImageCarouselProps
13
+ }
14
+
15
+ export const ImageCarouselSlide = ({
16
+ quizSlideProps,
17
+ imageCarouselProps,
18
+ determineCtaDisabled,
19
+ handleAnswerSelection,
20
+ }: ImageCarouselSlideProps) => {
21
+ const [selectedIndex, setSelectedIndex] = useState<number>()
22
+
23
+ const [isCtaDisabled, setCtaDisabled] = useState(
24
+ quizSlideProps.ctaDisabled ?? false
25
+ )
26
+
27
+ const handleOnChoiceSelected = useCallback((index: number) => {
28
+ setSelectedIndex(index)
29
+ }, [])
30
+
31
+ useEffect(() => {
32
+ if (handleAnswerSelection === undefined) return
33
+
34
+ handleAnswerSelection(selectedIndex === undefined ? [] : [selectedIndex])
35
+ }, [handleAnswerSelection, selectedIndex])
36
+
37
+ useEffect(() => {
38
+ if (determineCtaDisabled === undefined) return
39
+
40
+ setCtaDisabled(
41
+ determineCtaDisabled(selectedIndex === undefined ? [] : [selectedIndex])
42
+ )
43
+ }, [determineCtaDisabled, selectedIndex])
44
+
45
+ return (
46
+ <QuizSlide {...quizSlideProps} ctaDisabled={isCtaDisabled}>
47
+ <ImageCarousel
48
+ {...imageCarouselProps}
49
+ selectedIndexes={selectedIndex === undefined ? [] : [selectedIndex]}
50
+ onChoiceSelected={handleOnChoiceSelected}
51
+ />
52
+ </QuizSlide>
53
+ )
54
+ }
@@ -0,0 +1,77 @@
1
+ import {
2
+ Box,
3
+ MultipleChoice,
4
+ MultipleChoiceProps,
5
+ useMultiSelect,
6
+ } from '@shopify/shop-minis-platform-sdk'
7
+ import {useCallback, useEffect, useMemo, useState} from 'react'
8
+
9
+ import {QuizSlide, QuizSlideProps} from './QuizSlide'
10
+ import {SlideLogic} from './types'
11
+
12
+ export interface MultipleChoiceSlideProps extends SlideLogic<number[]> {
13
+ quizSlideProps: QuizSlideProps
14
+ multipleChoiceProps: MultipleChoiceProps
15
+ isMultiSelect?: boolean
16
+ }
17
+
18
+ export const MultipleChoiceSlide = ({
19
+ quizSlideProps,
20
+ multipleChoiceProps,
21
+ isMultiSelect,
22
+ determineCtaDisabled,
23
+ handleAnswerSelection,
24
+ }: MultipleChoiceSlideProps) => {
25
+ const [multiSelectedIndexes, toggleIndex] = useMultiSelect()
26
+ const [selectedIndex, setSelectedIndex] = useState<number>()
27
+
28
+ const [isCtaDisabled, setCtaDisabled] = useState(
29
+ quizSlideProps.ctaDisabled ?? false
30
+ )
31
+
32
+ const singleSelectIndex = useMemo(
33
+ () => (selectedIndex === undefined ? [] : [selectedIndex]),
34
+ [selectedIndex]
35
+ )
36
+
37
+ const selectedIndexes = useMemo(
38
+ () => (isMultiSelect ? multiSelectedIndexes : singleSelectIndex),
39
+ [isMultiSelect, multiSelectedIndexes, singleSelectIndex]
40
+ )
41
+
42
+ const handleOnChoiceSelected = useCallback(
43
+ (index: number) => {
44
+ if (isMultiSelect) {
45
+ toggleIndex(index)
46
+ } else {
47
+ setSelectedIndex(index)
48
+ }
49
+ },
50
+ [isMultiSelect, toggleIndex]
51
+ )
52
+
53
+ useEffect(() => {
54
+ if (selectedIndexes.length < 1 || handleAnswerSelection === undefined)
55
+ return
56
+
57
+ handleAnswerSelection(selectedIndexes)
58
+ }, [handleAnswerSelection, selectedIndexes])
59
+
60
+ useEffect(() => {
61
+ if (determineCtaDisabled === undefined) return
62
+
63
+ setCtaDisabled(determineCtaDisabled(selectedIndexes))
64
+ }, [determineCtaDisabled, selectedIndexes])
65
+
66
+ return (
67
+ <QuizSlide {...quizSlideProps} ctaDisabled={isCtaDisabled}>
68
+ <Box marginBottom="xl">
69
+ <MultipleChoice
70
+ {...multipleChoiceProps}
71
+ selectedIndexes={selectedIndexes}
72
+ onChoiceSelected={handleOnChoiceSelected}
73
+ />
74
+ </Box>
75
+ </QuizSlide>
76
+ )
77
+ }
@@ -0,0 +1,64 @@
1
+ import {createContext, useContext, useMemo} from 'react'
2
+
3
+ import {useQuizData} from '../../hooks/useQuizData'
4
+ import {useQuizState} from '../../hooks/useQuizState'
5
+
6
+ import {QuizData, QuizDataState, QuizResult, QuizResultEntry} from './types'
7
+
8
+ interface QuizContext {
9
+ recordQuestionResult: (id: string, answer: QuizResultEntry) => void
10
+ quizResult: QuizResult | undefined
11
+ quizDataState: QuizDataState | 'Loading'
12
+ quizData: QuizData | undefined
13
+ setUserName: (name: string) => void
14
+ userName: string | undefined
15
+ }
16
+
17
+ export const QuizContext = createContext<QuizContext>({
18
+ recordQuestionResult: () => undefined,
19
+ quizResult: undefined,
20
+ quizDataState: 'Loading',
21
+ quizData: undefined,
22
+ setUserName: (_name: string) => undefined,
23
+ userName: undefined,
24
+ })
25
+
26
+ export interface QuizProviderProps {
27
+ children: React.ReactElement
28
+ }
29
+
30
+ export const QuizContextProvider = ({children}: QuizProviderProps) => {
31
+ const {quizDataState, quizData} = useQuizData()
32
+ const {recordQuestionResult, quizResult, setUserName, userName} =
33
+ useQuizState()
34
+
35
+ const value = useMemo(
36
+ () => ({
37
+ recordQuestionResult,
38
+ quizResult,
39
+ quizDataState,
40
+ quizData,
41
+ setUserName,
42
+ userName,
43
+ }),
44
+ [
45
+ quizData,
46
+ quizDataState,
47
+ quizResult,
48
+ recordQuestionResult,
49
+ setUserName,
50
+ userName,
51
+ ]
52
+ )
53
+ return <QuizContext.Provider value={value}>{children}</QuizContext.Provider>
54
+ }
55
+
56
+ export const useQuizContext = () => {
57
+ const context = useContext(QuizContext)
58
+
59
+ if (!context) {
60
+ throw new Error('Make sure to wrap your component with QuizProvider')
61
+ }
62
+
63
+ return context
64
+ }
@@ -0,0 +1,79 @@
1
+ import {Box, Button, Text, useTheme} from '@shopify/shop-minis-platform-sdk'
2
+ import {ReactNode} from 'react'
3
+ import {StyleSheet, useWindowDimensions} from 'react-native'
4
+
5
+ import {QuizSlideType} from './types'
6
+
7
+ export interface QuizSlideProps extends QuizSlideType {
8
+ children?: ReactNode
9
+ }
10
+
11
+ export const QuizSlide = (props: QuizSlideProps) => {
12
+ const {
13
+ mainText,
14
+ subText,
15
+ ctaText,
16
+ ctaOnPressHandler,
17
+ ctaDisabled,
18
+ children,
19
+ isTallSlide,
20
+ } = props
21
+
22
+ const theme = useTheme()
23
+ const gutter = theme.spacing.gutter
24
+
25
+ const {height: windowHeight, width} = useWindowDimensions()
26
+
27
+ const containerWidth = width - gutter * 2
28
+ const containerHeight = windowHeight - 255
29
+
30
+ return (
31
+ <Box
32
+ height={containerHeight}
33
+ flex={1}
34
+ paddingTop={isTallSlide ? 'xxxl' : 'auto'}
35
+ position="relative"
36
+ justifyContent="center"
37
+ >
38
+ <Box marginBottom="m" width={containerWidth}>
39
+ <Text variant="subtitle">{mainText}</Text>
40
+ {subText ? (
41
+ <Text marginTop="xxs" variant="bodySmall">
42
+ {subText}
43
+ </Text>
44
+ ) : null}
45
+ </Box>
46
+ <Box
47
+ marginBottom="xxxl"
48
+ paddingBottom={isTallSlide ? 'l' : 'none'}
49
+ paddingHorizontal="gutter"
50
+ >
51
+ {children}
52
+ </Box>
53
+ <Box style={styles.ctaContainer} paddingBottom="s" width={containerWidth}>
54
+ <Button
55
+ size="l"
56
+ style={{width: containerWidth}}
57
+ onPress={
58
+ ctaOnPressHandler
59
+ ? ctaOnPressHandler
60
+ : () => console.log('Next Press')
61
+ }
62
+ variant="secondary"
63
+ text={ctaText ?? 'Next'}
64
+ disabled={ctaDisabled ?? false}
65
+ />
66
+ </Box>
67
+ </Box>
68
+ )
69
+ }
70
+
71
+ const styles = StyleSheet.create({
72
+ ctaContainer: {
73
+ alignItems: 'center',
74
+ position: 'absolute',
75
+ bottom: 0,
76
+ left: 0,
77
+ right: 0,
78
+ },
79
+ })
@@ -0,0 +1,35 @@
1
+ import {ImageCarouselSlide, ImageCarouselSlideProps} from './ImageCarouselSlide'
2
+ import {
3
+ MultipleChoiceSlide,
4
+ MultipleChoiceSlideProps,
5
+ } from './MultipleChoiceSlide'
6
+ import {QuizSlide} from './QuizSlide'
7
+ import {TextFieldSlide, TextFieldSlideProps} from './TextFieldSlide'
8
+ import {TextSlide} from './TextSlide'
9
+ import {QuizSlideScreenType, TextSlideProps} from './types'
10
+
11
+ export interface QuizSlideCommanderProps {
12
+ type: QuizSlideScreenType
13
+ props: TextSlideProps | MultipleChoiceSlideProps | ImageCarouselSlideProps
14
+ }
15
+
16
+ export const QuizSlideCommander = ({type, props}: QuizSlideCommanderProps) => {
17
+ switch (type) {
18
+ case 'TextSlide':
19
+ return <TextSlide {...(props as TextSlideProps)} />
20
+ case 'TextFieldSlide':
21
+ return <TextFieldSlide {...(props as TextFieldSlideProps)} />
22
+ case 'ImageCarouselSlide':
23
+ return <ImageCarouselSlide {...(props as ImageCarouselSlideProps)} />
24
+ case 'MultipleChoiceSlide':
25
+ return <MultipleChoiceSlide {...(props as MultipleChoiceSlideProps)} />
26
+ default:
27
+ return (
28
+ <QuizSlide
29
+ mainText="error"
30
+ subText={`slide type ${type} is unknown`}
31
+ ctaText="oh no!"
32
+ />
33
+ )
34
+ }
35
+ }