@use-voltra/ios-client 1.4.0 → 2.0.0-rc.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 (559) hide show
  1. package/README.md +113 -0
  2. package/Voltra.podspec +28 -0
  3. package/build/commonjs/VoltraModule.js +13 -0
  4. package/build/commonjs/VoltraModule.js.map +1 -0
  5. package/build/commonjs/components/VoltraLiveActivityPreview.js +30 -0
  6. package/build/commonjs/components/VoltraLiveActivityPreview.js.map +1 -0
  7. package/build/commonjs/components/VoltraView.js +50 -0
  8. package/build/commonjs/components/VoltraView.js.map +1 -0
  9. package/build/commonjs/components/VoltraWidgetPreview.js +58 -0
  10. package/build/commonjs/components/VoltraWidgetPreview.js.map +1 -0
  11. package/build/commonjs/events.js +32 -0
  12. package/build/commonjs/events.js.map +1 -0
  13. package/build/commonjs/helpers.js +26 -0
  14. package/build/commonjs/helpers.js.map +1 -0
  15. package/build/commonjs/index.js +226 -0
  16. package/build/commonjs/index.js.map +1 -0
  17. package/build/commonjs/live-activity/api.js +168 -0
  18. package/build/commonjs/live-activity/api.js.map +1 -0
  19. package/build/commonjs/logger.js +39 -0
  20. package/build/commonjs/logger.js.map +1 -0
  21. package/build/commonjs/native/NativeVoltra.js +15 -0
  22. package/build/commonjs/native/NativeVoltra.js.map +1 -0
  23. package/build/commonjs/native/VoltraRNNativeComponent.ts +9 -0
  24. package/build/commonjs/package.json +1 -0
  25. package/build/commonjs/preload.js +54 -0
  26. package/build/commonjs/preload.js.map +1 -0
  27. package/build/commonjs/types.js +2 -0
  28. package/build/commonjs/types.js.map +1 -0
  29. package/build/commonjs/utils/assertRunningOnApple.js +16 -0
  30. package/build/commonjs/utils/assertRunningOnApple.js.map +1 -0
  31. package/build/commonjs/utils/helpers.js +19 -0
  32. package/build/commonjs/utils/helpers.js.map +1 -0
  33. package/build/commonjs/utils/index.js +28 -0
  34. package/build/commonjs/utils/index.js.map +1 -0
  35. package/build/commonjs/utils/useUpdateOnHMR.js +25 -0
  36. package/build/commonjs/utils/useUpdateOnHMR.js.map +1 -0
  37. package/build/commonjs/widgets/server-credentials.js +18 -0
  38. package/build/commonjs/widgets/server-credentials.js.map +1 -0
  39. package/build/commonjs/widgets/widget-api.js +55 -0
  40. package/build/commonjs/widgets/widget-api.js.map +1 -0
  41. package/build/module/VoltraModule.js +4 -0
  42. package/build/module/VoltraModule.js.map +1 -0
  43. package/build/module/components/VoltraLiveActivityPreview.js +25 -0
  44. package/build/module/components/VoltraLiveActivityPreview.js.map +1 -0
  45. package/build/module/components/VoltraView.js +44 -0
  46. package/build/module/components/VoltraView.js.map +1 -0
  47. package/build/module/components/VoltraWidgetPreview.js +53 -0
  48. package/build/module/components/VoltraWidgetPreview.js.map +1 -0
  49. package/build/module/events.js +28 -0
  50. package/build/module/events.js.map +1 -0
  51. package/build/module/helpers.js +21 -0
  52. package/build/module/helpers.js.map +1 -0
  53. package/build/module/index.js +17 -0
  54. package/build/module/index.js.map +1 -0
  55. package/build/module/live-activity/api.js +158 -0
  56. package/build/module/live-activity/api.js.map +1 -0
  57. package/build/module/logger.js +35 -0
  58. package/build/module/logger.js.map +1 -0
  59. package/build/module/native/NativeVoltra.js +11 -0
  60. package/build/module/native/NativeVoltra.js.map +1 -0
  61. package/build/module/native/VoltraRNNativeComponent.ts +9 -0
  62. package/build/module/package.json +1 -0
  63. package/build/module/preload.js +48 -0
  64. package/build/module/preload.js.map +1 -0
  65. package/build/module/types.js +2 -0
  66. package/build/module/types.js.map +1 -0
  67. package/build/module/utils/assertRunningOnApple.js +11 -0
  68. package/build/module/utils/assertRunningOnApple.js.map +1 -0
  69. package/build/module/utils/helpers.js +4 -0
  70. package/build/module/utils/helpers.js.map +1 -0
  71. package/build/module/utils/index.js +5 -0
  72. package/build/module/utils/index.js.map +1 -0
  73. package/build/module/utils/useUpdateOnHMR.js +20 -0
  74. package/build/module/utils/useUpdateOnHMR.js.map +1 -0
  75. package/build/module/widgets/server-credentials.js +13 -0
  76. package/build/module/widgets/server-credentials.js.map +1 -0
  77. package/build/module/widgets/widget-api.js +45 -0
  78. package/build/module/widgets/widget-api.js.map +1 -0
  79. package/build/typescript/commonjs/VoltraModule.d.ts +3 -0
  80. package/build/typescript/commonjs/VoltraModule.d.ts.map +1 -0
  81. package/build/typescript/commonjs/components/VoltraLiveActivityPreview.d.ts.map +1 -0
  82. package/build/typescript/commonjs/components/VoltraView.d.ts.map +1 -0
  83. package/build/typescript/commonjs/components/VoltraWidgetPreview.d.ts.map +1 -0
  84. package/build/typescript/commonjs/events.d.ts.map +1 -0
  85. package/build/typescript/commonjs/helpers.d.ts.map +1 -0
  86. package/build/{types → typescript/commonjs}/index.d.ts +5 -0
  87. package/build/typescript/commonjs/index.d.ts.map +1 -0
  88. package/build/typescript/commonjs/live-activity/api.d.ts.map +1 -0
  89. package/build/typescript/commonjs/logger.d.ts.map +1 -0
  90. package/build/typescript/commonjs/native/NativeVoltra.d.ts +100 -0
  91. package/build/typescript/commonjs/native/NativeVoltra.d.ts.map +1 -0
  92. package/build/typescript/commonjs/native/VoltraRNNativeComponent.d.ts +8 -0
  93. package/build/typescript/commonjs/native/VoltraRNNativeComponent.d.ts.map +1 -0
  94. package/build/typescript/commonjs/package.json +1 -0
  95. package/build/typescript/commonjs/preload.d.ts.map +1 -0
  96. package/build/typescript/commonjs/types.d.ts.map +1 -0
  97. package/build/typescript/commonjs/utils/assertRunningOnApple.d.ts.map +1 -0
  98. package/build/typescript/commonjs/utils/helpers.d.ts.map +1 -0
  99. package/build/typescript/commonjs/utils/index.d.ts.map +1 -0
  100. package/build/typescript/commonjs/utils/useUpdateOnHMR.d.ts.map +1 -0
  101. package/build/typescript/commonjs/widgets/server-credentials.d.ts.map +1 -0
  102. package/build/typescript/commonjs/widgets/widget-api.d.ts.map +1 -0
  103. package/build/typescript/module/VoltraModule.d.ts +3 -0
  104. package/build/typescript/module/VoltraModule.d.ts.map +1 -0
  105. package/build/typescript/module/components/VoltraLiveActivityPreview.d.ts +7 -0
  106. package/build/typescript/module/components/VoltraLiveActivityPreview.d.ts.map +1 -0
  107. package/build/typescript/module/components/VoltraView.d.ts +12 -0
  108. package/build/typescript/module/components/VoltraView.d.ts.map +1 -0
  109. package/build/typescript/module/components/VoltraWidgetPreview.d.ts +9 -0
  110. package/build/typescript/module/components/VoltraWidgetPreview.d.ts.map +1 -0
  111. package/build/typescript/module/events.d.ts +33 -0
  112. package/build/typescript/module/events.d.ts.map +1 -0
  113. package/build/typescript/module/helpers.d.ts +3 -0
  114. package/build/typescript/module/helpers.d.ts.map +1 -0
  115. package/build/typescript/module/index.d.ts +18 -0
  116. package/build/typescript/module/index.d.ts.map +1 -0
  117. package/build/typescript/module/live-activity/api.d.ts +35 -0
  118. package/build/typescript/module/live-activity/api.d.ts.map +1 -0
  119. package/build/typescript/module/logger.d.ts +16 -0
  120. package/build/typescript/module/logger.d.ts.map +1 -0
  121. package/build/typescript/module/native/NativeVoltra.d.ts +100 -0
  122. package/build/typescript/module/native/NativeVoltra.d.ts.map +1 -0
  123. package/build/typescript/module/native/VoltraRNNativeComponent.d.ts +8 -0
  124. package/build/typescript/module/native/VoltraRNNativeComponent.d.ts.map +1 -0
  125. package/build/typescript/module/package.json +1 -0
  126. package/build/typescript/module/preload.d.ts +6 -0
  127. package/build/typescript/module/preload.d.ts.map +1 -0
  128. package/build/typescript/module/types.d.ts +2 -0
  129. package/build/typescript/module/types.d.ts.map +1 -0
  130. package/build/typescript/module/utils/assertRunningOnApple.d.ts +2 -0
  131. package/build/typescript/module/utils/assertRunningOnApple.d.ts.map +1 -0
  132. package/build/{esm/utils/helpers.js → typescript/module/utils/helpers.d.ts} +1 -1
  133. package/build/typescript/module/utils/helpers.d.ts.map +1 -0
  134. package/build/{esm/utils/index.js → typescript/module/utils/index.d.ts} +1 -1
  135. package/build/typescript/module/utils/index.d.ts.map +1 -0
  136. package/build/typescript/module/utils/useUpdateOnHMR.d.ts +5 -0
  137. package/build/typescript/module/utils/useUpdateOnHMR.d.ts.map +1 -0
  138. package/build/typescript/module/widgets/server-credentials.d.ts +5 -0
  139. package/build/typescript/module/widgets/server-credentials.d.ts.map +1 -0
  140. package/build/typescript/module/widgets/widget-api.d.ts +11 -0
  141. package/build/typescript/module/widgets/widget-api.d.ts.map +1 -0
  142. package/expo-plugin/app.plugin.js +3 -0
  143. package/expo-plugin/build/cjs/constants.js +23 -0
  144. package/expo-plugin/build/cjs/constants.js.map +1 -0
  145. package/expo-plugin/build/cjs/index.js +51 -0
  146. package/expo-plugin/build/cjs/index.js.map +1 -0
  147. package/expo-plugin/build/cjs/ios/eas.js +28 -0
  148. package/expo-plugin/build/cjs/ios/eas.js.map +1 -0
  149. package/expo-plugin/build/cjs/ios/entitlements.js +46 -0
  150. package/expo-plugin/build/cjs/ios/entitlements.js.map +1 -0
  151. package/expo-plugin/build/cjs/ios/index.js +39 -0
  152. package/expo-plugin/build/cjs/ios/index.js.map +1 -0
  153. package/expo-plugin/build/cjs/ios/infoPlist.js +51 -0
  154. package/expo-plugin/build/cjs/ios/infoPlist.js.map +1 -0
  155. package/expo-plugin/build/cjs/ios/pushNotifications.js +22 -0
  156. package/expo-plugin/build/cjs/ios/pushNotifications.js.map +1 -0
  157. package/expo-plugin/build/cjs/ios-widget/eas.js +66 -0
  158. package/expo-plugin/build/cjs/ios-widget/eas.js.map +1 -0
  159. package/expo-plugin/build/cjs/ios-widget/files/assets.js +199 -0
  160. package/expo-plugin/build/cjs/ios-widget/files/assets.js.map +1 -0
  161. package/expo-plugin/build/cjs/ios-widget/files/entitlements.js +77 -0
  162. package/expo-plugin/build/cjs/ios-widget/files/entitlements.js.map +1 -0
  163. package/expo-plugin/build/cjs/ios-widget/files/index.js +92 -0
  164. package/expo-plugin/build/cjs/ios-widget/files/index.js.map +1 -0
  165. package/expo-plugin/build/cjs/ios-widget/files/infoPlist.js +91 -0
  166. package/expo-plugin/build/cjs/ios-widget/files/infoPlist.js.map +1 -0
  167. package/expo-plugin/build/cjs/ios-widget/files/swift.js +443 -0
  168. package/expo-plugin/build/cjs/ios-widget/files/swift.js.map +1 -0
  169. package/expo-plugin/build/cjs/ios-widget/fonts.js +151 -0
  170. package/expo-plugin/build/cjs/ios-widget/fonts.js.map +1 -0
  171. package/expo-plugin/build/cjs/ios-widget/index.js +46 -0
  172. package/expo-plugin/build/cjs/ios-widget/index.js.map +1 -0
  173. package/expo-plugin/build/cjs/ios-widget/podfile.js +41 -0
  174. package/expo-plugin/build/cjs/ios-widget/podfile.js.map +1 -0
  175. package/expo-plugin/build/cjs/ios-widget/widgetPlist.js +99 -0
  176. package/expo-plugin/build/cjs/ios-widget/widgetPlist.js.map +1 -0
  177. package/expo-plugin/build/cjs/ios-widget/xcode/buildPhases.js +247 -0
  178. package/expo-plugin/build/cjs/ios-widget/xcode/buildPhases.js.map +1 -0
  179. package/expo-plugin/build/cjs/ios-widget/xcode/configurationList.js +91 -0
  180. package/expo-plugin/build/cjs/ios-widget/xcode/configurationList.js.map +1 -0
  181. package/expo-plugin/build/cjs/ios-widget/xcode/groups.js +79 -0
  182. package/expo-plugin/build/cjs/ios-widget/xcode/groups.js.map +1 -0
  183. package/expo-plugin/build/cjs/ios-widget/xcode/index.js +155 -0
  184. package/expo-plugin/build/cjs/ios-widget/xcode/index.js.map +1 -0
  185. package/expo-plugin/build/cjs/ios-widget/xcode/mainAppSettings.js +71 -0
  186. package/expo-plugin/build/cjs/ios-widget/xcode/mainAppSettings.js.map +1 -0
  187. package/expo-plugin/build/cjs/ios-widget/xcode/productFile.js +74 -0
  188. package/expo-plugin/build/cjs/ios-widget/xcode/productFile.js.map +1 -0
  189. package/expo-plugin/build/cjs/ios-widget/xcode/target.js +113 -0
  190. package/expo-plugin/build/cjs/ios-widget/xcode/target.js.map +1 -0
  191. package/expo-plugin/build/cjs/utils/fileDiscovery.js +120 -0
  192. package/expo-plugin/build/cjs/utils/fileDiscovery.js.map +1 -0
  193. package/expo-plugin/build/cjs/utils/urlScheme.js +40 -0
  194. package/expo-plugin/build/cjs/utils/urlScheme.js.map +1 -0
  195. package/expo-plugin/build/cjs/validation.js +55 -0
  196. package/expo-plugin/build/cjs/validation.js.map +1 -0
  197. package/expo-plugin/build/esm/constants.js +20 -0
  198. package/expo-plugin/build/esm/constants.js.map +1 -0
  199. package/expo-plugin/build/esm/index.js +49 -0
  200. package/expo-plugin/build/esm/index.js.map +1 -0
  201. package/expo-plugin/build/esm/ios/eas.js +24 -0
  202. package/expo-plugin/build/esm/ios/eas.js.map +1 -0
  203. package/expo-plugin/build/esm/ios/entitlements.js +42 -0
  204. package/expo-plugin/build/esm/ios/entitlements.js.map +1 -0
  205. package/expo-plugin/build/esm/ios/index.js +34 -0
  206. package/expo-plugin/build/esm/ios/index.js.map +1 -0
  207. package/expo-plugin/build/esm/ios/infoPlist.js +47 -0
  208. package/expo-plugin/build/esm/ios/infoPlist.js.map +1 -0
  209. package/expo-plugin/build/esm/ios/pushNotifications.js +18 -0
  210. package/expo-plugin/build/esm/ios/pushNotifications.js.map +1 -0
  211. package/expo-plugin/build/esm/ios-widget/eas.js +62 -0
  212. package/expo-plugin/build/esm/ios-widget/eas.js.map +1 -0
  213. package/expo-plugin/build/esm/ios-widget/files/assets.js +163 -0
  214. package/expo-plugin/build/esm/ios-widget/files/assets.js.map +1 -0
  215. package/expo-plugin/build/esm/ios-widget/files/entitlements.js +37 -0
  216. package/expo-plugin/build/esm/ios-widget/files/entitlements.js.map +1 -0
  217. package/expo-plugin/build/esm/ios-widget/files/index.js +55 -0
  218. package/expo-plugin/build/esm/ios-widget/files/index.js.map +1 -0
  219. package/expo-plugin/build/esm/ios-widget/files/infoPlist.js +55 -0
  220. package/expo-plugin/build/esm/ios-widget/files/infoPlist.js.map +1 -0
  221. package/expo-plugin/build/esm/ios-widget/files/swift.js +403 -0
  222. package/expo-plugin/build/esm/ios-widget/files/swift.js.map +1 -0
  223. package/expo-plugin/build/esm/ios-widget/fonts.js +111 -0
  224. package/expo-plugin/build/esm/ios-widget/fonts.js.map +1 -0
  225. package/expo-plugin/build/esm/ios-widget/index.js +42 -0
  226. package/expo-plugin/build/esm/ios-widget/index.js.map +1 -0
  227. package/expo-plugin/build/esm/ios-widget/podfile.js +37 -0
  228. package/expo-plugin/build/esm/ios-widget/podfile.js.map +1 -0
  229. package/expo-plugin/build/esm/ios-widget/widgetPlist.js +92 -0
  230. package/expo-plugin/build/esm/ios-widget/widgetPlist.js.map +1 -0
  231. package/expo-plugin/build/esm/ios-widget/xcode/buildPhases.js +210 -0
  232. package/expo-plugin/build/esm/ios-widget/xcode/buildPhases.js.map +1 -0
  233. package/expo-plugin/build/esm/ios-widget/xcode/configurationList.js +87 -0
  234. package/expo-plugin/build/esm/ios-widget/xcode/configurationList.js.map +1 -0
  235. package/expo-plugin/build/esm/ios-widget/xcode/groups.js +75 -0
  236. package/expo-plugin/build/esm/ios-widget/xcode/groups.js.map +1 -0
  237. package/expo-plugin/build/esm/ios-widget/xcode/index.js +118 -0
  238. package/expo-plugin/build/esm/ios-widget/xcode/index.js.map +1 -0
  239. package/expo-plugin/build/esm/ios-widget/xcode/mainAppSettings.js +68 -0
  240. package/expo-plugin/build/esm/ios-widget/xcode/mainAppSettings.js.map +1 -0
  241. package/expo-plugin/build/esm/ios-widget/xcode/productFile.js +70 -0
  242. package/expo-plugin/build/esm/ios-widget/xcode/productFile.js.map +1 -0
  243. package/expo-plugin/build/esm/ios-widget/xcode/target.js +108 -0
  244. package/expo-plugin/build/esm/ios-widget/xcode/target.js.map +1 -0
  245. package/expo-plugin/build/esm/utils/fileDiscovery.js +83 -0
  246. package/expo-plugin/build/esm/utils/fileDiscovery.js.map +1 -0
  247. package/expo-plugin/build/esm/utils/urlScheme.js +37 -0
  248. package/expo-plugin/build/esm/utils/urlScheme.js.map +1 -0
  249. package/expo-plugin/build/esm/validation.js +51 -0
  250. package/expo-plugin/build/esm/validation.js.map +1 -0
  251. package/expo-plugin/build/types/constants.d.ts +13 -0
  252. package/expo-plugin/build/types/constants.d.ts.map +1 -0
  253. package/expo-plugin/build/types/index.d.ts +10 -0
  254. package/expo-plugin/build/types/index.d.ts.map +1 -0
  255. package/expo-plugin/build/types/ios/eas.d.ts +12 -0
  256. package/expo-plugin/build/types/ios/eas.d.ts.map +1 -0
  257. package/expo-plugin/build/types/ios/entitlements.d.ts +14 -0
  258. package/expo-plugin/build/types/ios/entitlements.d.ts.map +1 -0
  259. package/expo-plugin/build/types/ios/index.d.ts +19 -0
  260. package/expo-plugin/build/types/ios/index.d.ts.map +1 -0
  261. package/expo-plugin/build/types/ios/infoPlist.d.ts +21 -0
  262. package/expo-plugin/build/types/ios/infoPlist.d.ts.map +1 -0
  263. package/expo-plugin/build/types/ios/pushNotifications.d.ts +10 -0
  264. package/expo-plugin/build/types/ios/pushNotifications.d.ts.map +1 -0
  265. package/expo-plugin/build/types/ios-widget/eas.d.ts +15 -0
  266. package/expo-plugin/build/types/ios-widget/eas.d.ts.map +1 -0
  267. package/expo-plugin/build/types/ios-widget/files/assets.d.ts +13 -0
  268. package/expo-plugin/build/types/ios-widget/files/assets.d.ts.map +1 -0
  269. package/expo-plugin/build/types/ios-widget/files/entitlements.d.ts +17 -0
  270. package/expo-plugin/build/types/ios-widget/files/entitlements.d.ts.map +1 -0
  271. package/expo-plugin/build/types/ios-widget/files/index.d.ts +24 -0
  272. package/expo-plugin/build/types/ios-widget/files/index.d.ts.map +1 -0
  273. package/expo-plugin/build/types/ios-widget/files/infoPlist.d.ts +10 -0
  274. package/expo-plugin/build/types/ios-widget/files/infoPlist.d.ts.map +1 -0
  275. package/expo-plugin/build/types/ios-widget/files/swift.d.ts +24 -0
  276. package/expo-plugin/build/types/ios-widget/files/swift.d.ts.map +1 -0
  277. package/expo-plugin/build/types/ios-widget/fonts.d.ts +22 -0
  278. package/expo-plugin/build/types/ios-widget/fonts.d.ts.map +1 -0
  279. package/expo-plugin/build/types/ios-widget/index.d.ts +31 -0
  280. package/expo-plugin/build/types/ios-widget/index.d.ts.map +1 -0
  281. package/expo-plugin/build/types/ios-widget/podfile.d.ts +9 -0
  282. package/expo-plugin/build/types/ios-widget/podfile.d.ts.map +1 -0
  283. package/expo-plugin/build/types/ios-widget/widgetPlist.d.ts +20 -0
  284. package/expo-plugin/build/types/ios-widget/widgetPlist.d.ts.map +1 -0
  285. package/expo-plugin/build/types/ios-widget/xcode/buildPhases.d.ts +25 -0
  286. package/expo-plugin/build/types/ios-widget/xcode/buildPhases.d.ts.map +1 -0
  287. package/expo-plugin/build/types/ios-widget/xcode/configurationList.d.ts +20 -0
  288. package/expo-plugin/build/types/ios-widget/xcode/configurationList.d.ts.map +1 -0
  289. package/expo-plugin/build/types/ios-widget/xcode/groups.d.ts +15 -0
  290. package/expo-plugin/build/types/ios-widget/xcode/groups.d.ts.map +1 -0
  291. package/expo-plugin/build/types/ios-widget/xcode/index.d.ts +20 -0
  292. package/expo-plugin/build/types/ios-widget/xcode/index.d.ts.map +1 -0
  293. package/expo-plugin/build/types/ios-widget/xcode/mainAppSettings.d.ts +15 -0
  294. package/expo-plugin/build/types/ios-widget/xcode/mainAppSettings.d.ts.map +1 -0
  295. package/expo-plugin/build/types/ios-widget/xcode/productFile.d.ts +14 -0
  296. package/expo-plugin/build/types/ios-widget/xcode/productFile.d.ts.map +1 -0
  297. package/expo-plugin/build/types/ios-widget/xcode/target.d.ts +42 -0
  298. package/expo-plugin/build/types/ios-widget/xcode/target.d.ts.map +1 -0
  299. package/expo-plugin/build/types/types.d.ts +74 -0
  300. package/expo-plugin/build/types/types.d.ts.map +1 -0
  301. package/expo-plugin/build/types/utils/fileDiscovery.d.ts +15 -0
  302. package/expo-plugin/build/types/utils/fileDiscovery.d.ts.map +1 -0
  303. package/expo-plugin/build/types/utils/urlScheme.d.ts +10 -0
  304. package/expo-plugin/build/types/utils/urlScheme.d.ts.map +1 -0
  305. package/expo-plugin/build/types/validation.d.ts +4 -0
  306. package/expo-plugin/build/types/validation.d.ts.map +1 -0
  307. package/expo-plugin/jest.config.js +18 -0
  308. package/expo-plugin/src/constants.ts +25 -0
  309. package/expo-plugin/src/index.ts +72 -0
  310. package/expo-plugin/src/ios/eas.ts +33 -0
  311. package/expo-plugin/src/ios/entitlements.ts +59 -0
  312. package/expo-plugin/src/ios/index.ts +47 -0
  313. package/expo-plugin/src/ios/infoPlist.ts +63 -0
  314. package/expo-plugin/src/ios/pushNotifications.ts +22 -0
  315. package/expo-plugin/src/ios-widget/eas.ts +79 -0
  316. package/expo-plugin/src/ios-widget/files/assets.ts +201 -0
  317. package/expo-plugin/src/ios-widget/files/entitlements.ts +48 -0
  318. package/expo-plugin/src/ios-widget/files/index.ts +74 -0
  319. package/expo-plugin/src/ios-widget/files/infoPlist.ts +57 -0
  320. package/expo-plugin/src/ios-widget/files/swift.node.test.ts +22 -0
  321. package/expo-plugin/src/ios-widget/files/swift.ts +476 -0
  322. package/expo-plugin/src/ios-widget/fonts.ts +132 -0
  323. package/expo-plugin/src/ios-widget/index.ts +73 -0
  324. package/expo-plugin/src/ios-widget/podfile.ts +44 -0
  325. package/expo-plugin/src/ios-widget/widgetPlist.ts +115 -0
  326. package/expo-plugin/src/ios-widget/xcode/buildPhases.ts +301 -0
  327. package/expo-plugin/src/ios-widget/xcode/configurationList.ts +127 -0
  328. package/expo-plugin/src/ios-widget/xcode/groups.ts +101 -0
  329. package/expo-plugin/src/ios-widget/xcode/index.ts +149 -0
  330. package/expo-plugin/src/ios-widget/xcode/mainAppSettings.ts +95 -0
  331. package/expo-plugin/src/ios-widget/xcode/productFile.ts +91 -0
  332. package/expo-plugin/src/ios-widget/xcode/target.ts +148 -0
  333. package/expo-plugin/src/types.ts +89 -0
  334. package/expo-plugin/src/utils/fileDiscovery.ts +96 -0
  335. package/expo-plugin/src/utils/urlScheme.ts +45 -0
  336. package/expo-plugin/src/validation.node.test.ts +19 -0
  337. package/expo-plugin/src/validation.ts +63 -0
  338. package/expo-plugin/tsconfig.base.json +17 -0
  339. package/expo-plugin/tsconfig.cjs.json +9 -0
  340. package/expo-plugin/tsconfig.esm.json +9 -0
  341. package/expo-plugin/tsconfig.jest.json +8 -0
  342. package/expo-plugin/tsconfig.typecheck.json +12 -0
  343. package/expo-plugin/tsconfig.types.json +10 -0
  344. package/ios/Package.swift +68 -0
  345. package/ios/Tests/JSGradientParserTests.swift +201 -0
  346. package/ios/Tests/VoltraSharedTests/SmokeTests.swift +8 -0
  347. package/ios/VoltraWidget.podspec +30 -0
  348. package/ios/app/NativeVoltra.h +5 -0
  349. package/ios/app/NativeVoltra.mm +211 -0
  350. package/ios/app/VoltraActivity.swift +5 -0
  351. package/ios/app/VoltraImagePreload.swift +154 -0
  352. package/ios/app/VoltraLiveActivityManager.swift +228 -0
  353. package/ios/app/VoltraLiveActivityService.swift +306 -0
  354. package/ios/app/VoltraModule.swift +215 -0
  355. package/ios/app/VoltraModuleImpl.swift +331 -0
  356. package/ios/app/VoltraOptions.swift +27 -0
  357. package/ios/app/VoltraViewComponentView.h +10 -0
  358. package/ios/app/VoltraViewComponentView.mm +67 -0
  359. package/ios/app/VoltraViewRoot.swift +63 -0
  360. package/ios/app/VoltraWidgetService.swift +154 -0
  361. package/ios/shared/BrotliCompression.swift +81 -0
  362. package/ios/shared/ComponentTypeID.swift +117 -0
  363. package/ios/shared/Data+hexString.swift +8 -0
  364. package/ios/shared/Date+toTimerInterval.swift +25 -0
  365. package/ios/shared/JSONValue.swift +128 -0
  366. package/ios/shared/ShortNames.swift +180 -0
  367. package/ios/shared/VoltraAttributes.swift +58 -0
  368. package/ios/shared/VoltraConfig.swift +18 -0
  369. package/ios/shared/VoltraConstants.swift +45 -0
  370. package/ios/shared/VoltraElement.swift +153 -0
  371. package/ios/shared/VoltraEvent.swift +72 -0
  372. package/ios/shared/VoltraEventBus.swift +80 -0
  373. package/ios/shared/VoltraImageStore.swift +119 -0
  374. package/ios/shared/VoltraInitialStateLocale.swift +54 -0
  375. package/ios/shared/VoltraInteractionIntent.swift +39 -0
  376. package/ios/shared/VoltraKeychainHelper.swift +178 -0
  377. package/ios/shared/VoltraLiveActivityPayload.swift +113 -0
  378. package/ios/shared/VoltraLogger.swift +30 -0
  379. package/ios/shared/VoltraNode.swift +194 -0
  380. package/ios/shared/VoltraPayloadMigrator.swift +63 -0
  381. package/ios/shared/VoltraPersistentEventQueue.swift +67 -0
  382. package/ios/shared/VoltraRefreshIntent.swift +29 -0
  383. package/ios/shared/VoltraRegion.swift +37 -0
  384. package/ios/shared/VoltraWidgetDefaults.swift +114 -0
  385. package/ios/shared/VoltraWidgetServerFetcher.swift +166 -0
  386. package/ios/target/VoltraHomeWidget.swift +508 -0
  387. package/ios/target/VoltraWidget.swift +158 -0
  388. package/ios/ui/Extensions/View.modifiers.swift +28 -0
  389. package/ios/ui/Extensions/VoltraNode+Parameters.swift +18 -0
  390. package/ios/ui/Generated/Parameters/.generated +8 -0
  391. package/ios/ui/Generated/Parameters/ButtonParameters.swift +15 -0
  392. package/ios/ui/Generated/Parameters/ChartParameters.swift +33 -0
  393. package/ios/ui/Generated/Parameters/CircularProgressViewParameters.swift +59 -0
  394. package/ios/ui/Generated/Parameters/ComponentParameters.swift +12 -0
  395. package/ios/ui/Generated/Parameters/DividerParameters.swift +12 -0
  396. package/ios/ui/Generated/Parameters/GaugeParameters.swift +54 -0
  397. package/ios/ui/Generated/Parameters/GlassContainerParameters.swift +15 -0
  398. package/ios/ui/Generated/Parameters/GroupBoxParameters.swift +12 -0
  399. package/ios/ui/Generated/Parameters/HStackParameters.swift +34 -0
  400. package/ios/ui/Generated/Parameters/ImageParameters.swift +29 -0
  401. package/ios/ui/Generated/Parameters/LabelParameters.swift +18 -0
  402. package/ios/ui/Generated/Parameters/LinearGradientParameters.swift +27 -0
  403. package/ios/ui/Generated/Parameters/LinearProgressViewParameters.swift +64 -0
  404. package/ios/ui/Generated/Parameters/LinkParameters.swift +15 -0
  405. package/ios/ui/Generated/Parameters/MaskParameters.swift +12 -0
  406. package/ios/ui/Generated/Parameters/SpacerParameters.swift +15 -0
  407. package/ios/ui/Generated/Parameters/SymbolParameters.swift +59 -0
  408. package/ios/ui/Generated/Parameters/TextParameters.swift +18 -0
  409. package/ios/ui/Generated/Parameters/TimerParameters.swift +54 -0
  410. package/ios/ui/Generated/Parameters/ToggleParameters.swift +24 -0
  411. package/ios/ui/Generated/Parameters/VStackParameters.swift +34 -0
  412. package/ios/ui/Generated/Parameters/ViewParameters.swift +12 -0
  413. package/ios/ui/Generated/Parameters/ZStackParameters.swift +15 -0
  414. package/ios/ui/Helpers/VoltraDeepLinkResolver.swift +43 -0
  415. package/ios/ui/Helpers/VoltraProgressDriver.swift +52 -0
  416. package/ios/ui/Layout/FlexContainerHelper.swift +114 -0
  417. package/ios/ui/Layout/VoltraFlexStackLayout.swift +417 -0
  418. package/ios/ui/Protocols/VoltraView.swift +29 -0
  419. package/ios/ui/Style/BackgroundValue.swift +27 -0
  420. package/ios/ui/Style/CompositeStyle.swift +81 -0
  421. package/ios/ui/Style/DecorationStyle.swift +207 -0
  422. package/ios/ui/Style/FlexEnvironment.swift +35 -0
  423. package/ios/ui/Style/FontVariant.swift +4 -0
  424. package/ios/ui/Style/GlassEffect.swift +6 -0
  425. package/ios/ui/Style/JSColorParser.swift +517 -0
  426. package/ios/ui/Style/JSGradientParser.swift +674 -0
  427. package/ios/ui/Style/JSStyleParser.swift +223 -0
  428. package/ios/ui/Style/LayoutStyle.swift +184 -0
  429. package/ios/ui/Style/Overflow.swift +4 -0
  430. package/ios/ui/Style/RenderingStyle.swift +33 -0
  431. package/ios/ui/Style/StyleConverter.swift +202 -0
  432. package/ios/ui/Style/TextDecoration.swift +6 -0
  433. package/ios/ui/Style/TextStyle.swift +50 -0
  434. package/ios/ui/Style/View+applyStyle.swift +38 -0
  435. package/ios/ui/Views/VoltraButton.swift +57 -0
  436. package/ios/ui/Views/VoltraChart.swift +840 -0
  437. package/ios/ui/Views/VoltraCircularProgressView.swift +103 -0
  438. package/ios/ui/Views/VoltraDivider.swift +16 -0
  439. package/ios/ui/Views/VoltraFlexView.swift +33 -0
  440. package/ios/ui/Views/VoltraGauge.swift +65 -0
  441. package/ios/ui/Views/VoltraGlassContainer.swift +29 -0
  442. package/ios/ui/Views/VoltraGroupBox.swift +26 -0
  443. package/ios/ui/Views/VoltraHStack.swift +70 -0
  444. package/ios/ui/Views/VoltraImage.swift +109 -0
  445. package/ios/ui/Views/VoltraLabel.swift +24 -0
  446. package/ios/ui/Views/VoltraLinearGradient.swift +115 -0
  447. package/ios/ui/Views/VoltraLinearProgressView.swift +118 -0
  448. package/ios/ui/Views/VoltraLink.swift +25 -0
  449. package/ios/ui/Views/VoltraMask.swift +23 -0
  450. package/ios/ui/Views/VoltraSpacer.swift +16 -0
  451. package/ios/ui/Views/VoltraSymbol.swift +160 -0
  452. package/ios/ui/Views/VoltraText.swift +87 -0
  453. package/ios/ui/Views/VoltraTimer.swift +131 -0
  454. package/ios/ui/Views/VoltraToggle.swift +39 -0
  455. package/ios/ui/Views/VoltraVStack.swift +68 -0
  456. package/ios/ui/Views/VoltraZStack.swift +33 -0
  457. package/ios/ui/Voltra.swift +86 -0
  458. package/package.json +91 -18
  459. package/build/cjs/VoltraModule.js +0 -6
  460. package/build/cjs/VoltraModule.js.map +0 -1
  461. package/build/cjs/components/VoltraLiveActivityPreview.js +0 -20
  462. package/build/cjs/components/VoltraLiveActivityPreview.js.map +0 -1
  463. package/build/cjs/components/VoltraView.js +0 -37
  464. package/build/cjs/components/VoltraView.js.map +0 -1
  465. package/build/cjs/components/VoltraWidgetPreview.js +0 -26
  466. package/build/cjs/components/VoltraWidgetPreview.js.map +0 -1
  467. package/build/cjs/events.js +0 -19
  468. package/build/cjs/events.js.map +0 -1
  469. package/build/cjs/helpers.js +0 -30
  470. package/build/cjs/helpers.js.map +0 -1
  471. package/build/cjs/index.js +0 -49
  472. package/build/cjs/index.js.map +0 -1
  473. package/build/cjs/live-activity/api.js +0 -158
  474. package/build/cjs/live-activity/api.js.map +0 -1
  475. package/build/cjs/logger.js +0 -36
  476. package/build/cjs/logger.js.map +0 -1
  477. package/build/cjs/preload.js +0 -54
  478. package/build/cjs/preload.js.map +0 -1
  479. package/build/cjs/utils/assertRunningOnApple.js +0 -13
  480. package/build/cjs/utils/assertRunningOnApple.js.map +0 -1
  481. package/build/cjs/utils/helpers.js +0 -7
  482. package/build/cjs/utils/helpers.js.map +0 -1
  483. package/build/cjs/utils/index.js +0 -19
  484. package/build/cjs/utils/index.js.map +0 -1
  485. package/build/cjs/utils/useUpdateOnHMR.js +0 -22
  486. package/build/cjs/utils/useUpdateOnHMR.js.map +0 -1
  487. package/build/cjs/widgets/server-credentials.js +0 -18
  488. package/build/cjs/widgets/server-credentials.js.map +0 -1
  489. package/build/cjs/widgets/widget-api.js +0 -59
  490. package/build/cjs/widgets/widget-api.js.map +0 -1
  491. package/build/esm/VoltraModule.js +0 -4
  492. package/build/esm/VoltraModule.js.map +0 -1
  493. package/build/esm/components/VoltraLiveActivityPreview.js +0 -17
  494. package/build/esm/components/VoltraLiveActivityPreview.js.map +0 -1
  495. package/build/esm/components/VoltraView.js +0 -34
  496. package/build/esm/components/VoltraView.js.map +0 -1
  497. package/build/esm/components/VoltraWidgetPreview.js +0 -23
  498. package/build/esm/components/VoltraWidgetPreview.js.map +0 -1
  499. package/build/esm/events.js +0 -13
  500. package/build/esm/events.js.map +0 -1
  501. package/build/esm/helpers.js +0 -23
  502. package/build/esm/helpers.js.map +0 -1
  503. package/build/esm/index.js +0 -10
  504. package/build/esm/index.js.map +0 -1
  505. package/build/esm/live-activity/api.js +0 -146
  506. package/build/esm/live-activity/api.js.map +0 -1
  507. package/build/esm/logger.js +0 -33
  508. package/build/esm/logger.js.map +0 -1
  509. package/build/esm/preload.js +0 -46
  510. package/build/esm/preload.js.map +0 -1
  511. package/build/esm/utils/assertRunningOnApple.js +0 -9
  512. package/build/esm/utils/assertRunningOnApple.js.map +0 -1
  513. package/build/esm/utils/helpers.js.map +0 -1
  514. package/build/esm/utils/index.js.map +0 -1
  515. package/build/esm/utils/useUpdateOnHMR.js +0 -18
  516. package/build/esm/utils/useUpdateOnHMR.js.map +0 -1
  517. package/build/esm/widgets/server-credentials.js +0 -11
  518. package/build/esm/widgets/server-credentials.js.map +0 -1
  519. package/build/esm/widgets/widget-api.js +0 -47
  520. package/build/esm/widgets/widget-api.js.map +0 -1
  521. package/build/types/VoltraModule.d.ts +0 -44
  522. package/build/types/VoltraModule.d.ts.map +0 -1
  523. package/build/types/components/VoltraLiveActivityPreview.d.ts.map +0 -1
  524. package/build/types/components/VoltraView.d.ts.map +0 -1
  525. package/build/types/components/VoltraWidgetPreview.d.ts.map +0 -1
  526. package/build/types/events.d.ts.map +0 -1
  527. package/build/types/helpers.d.ts.map +0 -1
  528. package/build/types/index.d.ts.map +0 -1
  529. package/build/types/live-activity/api.d.ts.map +0 -1
  530. package/build/types/logger.d.ts.map +0 -1
  531. package/build/types/preload.d.ts.map +0 -1
  532. package/build/types/types.d.ts.map +0 -1
  533. package/build/types/utils/assertRunningOnApple.d.ts.map +0 -1
  534. package/build/types/utils/helpers.d.ts.map +0 -1
  535. package/build/types/utils/index.d.ts.map +0 -1
  536. package/build/types/utils/useUpdateOnHMR.d.ts.map +0 -1
  537. package/build/types/widgets/server-credentials.d.ts.map +0 -1
  538. package/build/types/widgets/widget-api.d.ts.map +0 -1
  539. /package/build/{types → typescript/commonjs}/components/VoltraLiveActivityPreview.d.ts +0 -0
  540. /package/build/{types → typescript/commonjs}/components/VoltraView.d.ts +0 -0
  541. /package/build/{types → typescript/commonjs}/components/VoltraWidgetPreview.d.ts +0 -0
  542. /package/build/{types → typescript/commonjs}/events.d.ts +0 -0
  543. /package/build/{types → typescript/commonjs}/helpers.d.ts +0 -0
  544. /package/build/{types → typescript/commonjs}/live-activity/api.d.ts +0 -0
  545. /package/build/{types → typescript/commonjs}/logger.d.ts +0 -0
  546. /package/build/{types → typescript/commonjs}/preload.d.ts +0 -0
  547. /package/build/{types → typescript/commonjs}/types.d.ts +0 -0
  548. /package/build/{types → typescript/commonjs}/utils/assertRunningOnApple.d.ts +0 -0
  549. /package/build/{types → typescript/commonjs}/utils/helpers.d.ts +0 -0
  550. /package/build/{types → typescript/commonjs}/utils/index.d.ts +0 -0
  551. /package/build/{types → typescript/commonjs}/utils/useUpdateOnHMR.d.ts +0 -0
  552. /package/build/{types → typescript/commonjs}/widgets/server-credentials.d.ts +0 -0
  553. /package/build/{types → typescript/commonjs}/widgets/widget-api.d.ts +0 -0
  554. /package/{build → expo-plugin/build}/cjs/package.json +0 -0
  555. /package/{build → expo-plugin/build}/cjs/types.js +0 -0
  556. /package/{build → expo-plugin/build}/cjs/types.js.map +0 -0
  557. /package/{build → expo-plugin/build}/esm/package.json +0 -0
  558. /package/{build → expo-plugin/build}/esm/types.js +0 -0
  559. /package/{build → expo-plugin/build}/esm/types.js.map +0 -0
@@ -0,0 +1,158 @@
1
+ import ActivityKit
2
+ import Foundation
3
+ import SwiftUI
4
+ import WidgetKit
5
+
6
+ public struct VoltraWidget: Widget {
7
+ public init() {}
8
+
9
+ /// Convert an array of nodes to a single root node for rendering
10
+ private func rootNode(for region: VoltraRegion, from state: VoltraAttributes.ContentState) -> VoltraNode {
11
+ let nodes = state.regions[region] ?? []
12
+ if nodes.isEmpty { return .empty }
13
+ return nodes.count == 1 ? nodes[0] : .array(nodes)
14
+ }
15
+
16
+ public var body: some WidgetConfiguration {
17
+ if #available(iOS 18.0, *) {
18
+ return adaptiveConfig()
19
+ } else {
20
+ return defaultConfig()
21
+ }
22
+ }
23
+
24
+ // MARK: - iOS 18+ Configuration (with supplemental activity families)
25
+
26
+ @available(iOS 18.0, *)
27
+ private func adaptiveConfig() -> some WidgetConfiguration {
28
+ ActivityConfiguration(for: VoltraAttributes.self) { context in
29
+ adaptiveLocksScreenView(context: context)
30
+ .widgetURL(VoltraDeepLinkResolver.resolve(context.attributes))
31
+ .voltraIfLet(context.state.activityBackgroundTint) { view, tint in
32
+ let color = JSColorParser.parse(tint)
33
+ view.activityBackgroundTint(color)
34
+ }
35
+ } dynamicIsland: { context in
36
+ dynamicIslandContent(context: context)
37
+ }
38
+ .supplementalActivityFamilies([.small, .medium])
39
+ }
40
+
41
+ // MARK: - Default Configuration (iOS 16.2 - 17.x)
42
+
43
+ private func defaultConfig() -> some WidgetConfiguration {
44
+ ActivityConfiguration(for: VoltraAttributes.self) { context in
45
+ Voltra(root: rootNode(for: .lockScreen, from: context.state), activityId: context.activityID)
46
+ .widgetURL(VoltraDeepLinkResolver.resolve(context.attributes))
47
+ .voltraIfLet(context.state.activityBackgroundTint) { view, tint in
48
+ let color = JSColorParser.parse(tint)
49
+ view.activityBackgroundTint(color)
50
+ }
51
+ } dynamicIsland: { context in
52
+ dynamicIslandContent(context: context)
53
+ }
54
+ }
55
+
56
+ // MARK: - Adaptive Lock Screen View (iOS 18+)
57
+
58
+ @available(iOS 18.0, *)
59
+ private func adaptiveLocksScreenView(context: ActivityViewContext<VoltraAttributes>) -> some View {
60
+ VoltraAdaptiveLockScreenView(context: context, rootNodeProvider: rootNode)
61
+ }
62
+
63
+ // MARK: - Dynamic Island (shared between iOS versions)
64
+
65
+ private func dynamicIslandContent(context: ActivityViewContext<VoltraAttributes>) -> DynamicIsland {
66
+ let dynamicIsland = DynamicIsland {
67
+ DynamicIslandExpandedRegion(.leading) {
68
+ Voltra(root: rootNode(for: .islandExpandedLeading, from: context.state), activityId: context.activityID)
69
+ .widgetURL(VoltraDeepLinkResolver.resolve(context.attributes))
70
+ }
71
+ DynamicIslandExpandedRegion(.trailing) {
72
+ Voltra(root: rootNode(for: .islandExpandedTrailing, from: context.state), activityId: context.activityID)
73
+ .widgetURL(VoltraDeepLinkResolver.resolve(context.attributes))
74
+ }
75
+ DynamicIslandExpandedRegion(.center) {
76
+ Voltra(root: rootNode(for: .islandExpandedCenter, from: context.state), activityId: context.activityID)
77
+ .widgetURL(VoltraDeepLinkResolver.resolve(context.attributes))
78
+ }
79
+ DynamicIslandExpandedRegion(.bottom) {
80
+ Voltra(root: rootNode(for: .islandExpandedBottom, from: context.state), activityId: context.activityID)
81
+ .widgetURL(VoltraDeepLinkResolver.resolve(context.attributes))
82
+ }
83
+ } compactLeading: {
84
+ Voltra(root: rootNode(for: .islandCompactLeading, from: context.state), activityId: context.activityID)
85
+ .widgetURL(VoltraDeepLinkResolver.resolve(context.attributes))
86
+ } compactTrailing: {
87
+ Voltra(root: rootNode(for: .islandCompactTrailing, from: context.state), activityId: context.activityID)
88
+ .widgetURL(VoltraDeepLinkResolver.resolve(context.attributes))
89
+ } minimal: {
90
+ Voltra(root: rootNode(for: .islandMinimal, from: context.state), activityId: context.activityID)
91
+ .widgetURL(VoltraDeepLinkResolver.resolve(context.attributes))
92
+ }
93
+
94
+ // Apply keylineTint if specified
95
+ if let keylineTint = context.state.keylineTint,
96
+ let color = JSColorParser.parse(keylineTint)
97
+ {
98
+ return dynamicIsland.keylineTint(color)
99
+ } else {
100
+ return dynamicIsland
101
+ }
102
+ }
103
+ }
104
+
105
+ // MARK: - Adaptive Lock Screen View Helper
106
+
107
+ @available(iOS 18.0, *)
108
+ private struct VoltraAdaptiveLockScreenView: View {
109
+ let context: ActivityViewContext<VoltraAttributes>
110
+ let rootNodeProvider: (VoltraRegion, VoltraAttributes.ContentState) -> VoltraNode
111
+
112
+ @Environment(\.activityFamily) private var activityFamily
113
+
114
+ var body: some View {
115
+ switch activityFamily {
116
+ case .small:
117
+ watchContent()
118
+ case .medium:
119
+ defaultContent()
120
+ @unknown default:
121
+ defaultContent()
122
+ }
123
+ }
124
+
125
+ @ViewBuilder
126
+ private func watchContent() -> some View {
127
+ let leading = context.state.regions[.islandCompactLeading] ?? []
128
+ let trailing = context.state.regions[.islandCompactTrailing] ?? []
129
+ let hasCompactContent = !leading.isEmpty || !trailing.isEmpty
130
+
131
+ // 1. Try dedicated Watch region
132
+ if let nodes = context.state.regions[.supplementalActivityFamiliesSmall], !nodes.isEmpty {
133
+ Voltra(root: rootNodeProvider(.supplementalActivityFamiliesSmall, context.state), activityId: context.activityID)
134
+ }
135
+ // 2. Compose from compact Dynamic Island regions
136
+ else if hasCompactContent {
137
+ HStack(spacing: 0) {
138
+ if !leading.isEmpty {
139
+ Voltra(root: rootNodeProvider(.islandCompactLeading, context.state), activityId: context.activityID)
140
+ }
141
+ Spacer()
142
+ if !trailing.isEmpty {
143
+ Voltra(root: rootNodeProvider(.islandCompactTrailing, context.state), activityId: context.activityID)
144
+ }
145
+ }
146
+ .frame(maxWidth: .infinity)
147
+ }
148
+ // 3. No content available for Watch
149
+ else {
150
+ EmptyView()
151
+ }
152
+ }
153
+
154
+ private func defaultContent() -> some View {
155
+ // Default content for both StandBy (.medium) and unknown activity families
156
+ Voltra(root: rootNodeProvider(.lockScreen, context.state), activityId: context.activityID)
157
+ }
158
+ }
@@ -0,0 +1,28 @@
1
+ import SwiftUI
2
+
3
+ extension View {
4
+ /// Conditionally apply a modifier if the value is not nil
5
+ ///
6
+ /// - Parameters:
7
+ /// - value: The optional value to check
8
+ /// - transform: The transformation to apply if value is not nil
9
+ /// - Returns: The modified view or the original view if value is nil
10
+ @ViewBuilder
11
+ func voltraIfLet<Value, Content: View>(_ value: Value?, @ViewBuilder _ transform: (Self, Value) -> Content) -> some View {
12
+ if let value {
13
+ transform(self, value)
14
+ } else {
15
+ self
16
+ }
17
+ }
18
+
19
+ /// Conditionally applies a transformation to the view.
20
+ @ViewBuilder
21
+ func voltraIf<Content: View>(_ condition: Bool, @ViewBuilder _ transform: (Self) -> Content) -> some View {
22
+ if condition {
23
+ transform(self)
24
+ } else {
25
+ self
26
+ }
27
+ }
28
+ }
@@ -0,0 +1,18 @@
1
+ import Foundation
2
+
3
+ public extension VoltraNode {
4
+ /// Generic type-safe parameter accessor
5
+ /// Only works on element cases, delegates to VoltraElement.parameters
6
+ /// - Parameter type: The parameter struct type to decode
7
+ /// - Returns: Decoded parameters (uses empty dict if props is nil)
8
+ func parameters<T: ComponentParameters>(_ type: T.Type) -> T {
9
+ // Only element cases have parameters
10
+ guard case let .element(element) = self else {
11
+ // For non-element cases, return default instance
12
+ // Safe to force-unwrap: decoding an empty JSON object always succeeds for ComponentParameters
13
+ return try! JSONDecoder().decode(T.self, from: Data("{}".utf8))
14
+ }
15
+ // Delegate to VoltraElement's parameters method
16
+ return element.parameters(type)
17
+ }
18
+ }
@@ -0,0 +1,8 @@
1
+ This directory contains auto-generated Swift parameter files.
2
+ DO NOT EDIT MANUALLY.
3
+
4
+ Generated from: data/components.json
5
+ Schema version: 1.0.0
6
+
7
+ To regenerate these files, run:
8
+ npm run generate
@@ -0,0 +1,15 @@
1
+ //
2
+ // ButtonParameters.swift
3
+
4
+ // AUTO-GENERATED from data/components.json
5
+ // DO NOT EDIT MANUALLY - Changes will be overwritten
6
+ // Schema version: 1.0.0
7
+
8
+ import Foundation
9
+
10
+ /// Parameters for Button component
11
+ /// Interactive button component
12
+ public struct ButtonParameters: ComponentParameters {
13
+ /// Visual style of the button
14
+ public let buttonStyle: String?
15
+ }
@@ -0,0 +1,33 @@
1
+ //
2
+ // ChartParameters.swift
3
+
4
+ // AUTO-GENERATED from data/components.json
5
+ // DO NOT EDIT MANUALLY - Changes will be overwritten
6
+ // Schema version: 1.0.0
7
+
8
+ import Foundation
9
+
10
+ /// Parameters for Chart component
11
+ /// Charts component for data visualization
12
+ public struct ChartParameters: ComponentParameters {
13
+ /// Compact mark data encoded from children by toJSON
14
+ public let marks: String?
15
+
16
+ /// Show or hide the x-axis
17
+ public let xAxisVisibility: String?
18
+
19
+ /// Configure x-axis grid line style
20
+ public let xAxisGridStyle: String?
21
+
22
+ /// Show or hide the y-axis
23
+ public let yAxisVisibility: String?
24
+
25
+ /// Configure y-axis grid line style
26
+ public let yAxisGridStyle: String?
27
+
28
+ /// Show or hide the chart legend
29
+ public let legendVisibility: String?
30
+
31
+ /// Map of series name to color string
32
+ public let foregroundStyleScale: String?
33
+ }
@@ -0,0 +1,59 @@
1
+ //
2
+ // CircularProgressViewParameters.swift
3
+
4
+ // AUTO-GENERATED from data/components.json
5
+ // DO NOT EDIT MANUALLY - Changes will be overwritten
6
+ // Schema version: 1.0.0
7
+
8
+ import Foundation
9
+
10
+ /// Parameters for CircularProgressView component
11
+ /// Circular progress indicator (determinate or timer-based)
12
+ public struct CircularProgressViewParameters: ComponentParameters {
13
+ /// Current progress value
14
+ public let value: Double?
15
+
16
+ /// Whether to count down instead of up
17
+ public let countDown: Bool?
18
+
19
+ /// Maximum progress value
20
+ public let maximumValue: Double
21
+
22
+ /// End time in milliseconds since epoch
23
+ public let endAtMs: Double?
24
+
25
+ /// Start time in milliseconds since epoch
26
+ public let startAtMs: Double?
27
+
28
+ /// Color for the track (background) of the circular progress indicator
29
+ public let trackColor: String?
30
+
31
+ /// Color for the progress fill
32
+ public let progressColor: String?
33
+
34
+ /// Width of the stroke line
35
+ public let lineWidth: Double?
36
+
37
+ enum CodingKeys: String, CodingKey {
38
+ case value
39
+ case countDown
40
+ case maximumValue
41
+ case endAtMs
42
+ case startAtMs
43
+ case trackColor
44
+ case progressColor
45
+ case lineWidth
46
+ }
47
+
48
+ public init(from decoder: Decoder) throws {
49
+ let container = try decoder.container(keyedBy: CodingKeys.self)
50
+ value = try container.decodeIfPresent(Double.self, forKey: .value)
51
+ countDown = try container.decodeIfPresent(Bool.self, forKey: .countDown)
52
+ maximumValue = try container.decodeIfPresent(Double.self, forKey: .maximumValue) ?? 100
53
+ endAtMs = try container.decodeIfPresent(Double.self, forKey: .endAtMs)
54
+ startAtMs = try container.decodeIfPresent(Double.self, forKey: .startAtMs)
55
+ trackColor = try container.decodeIfPresent(String.self, forKey: .trackColor)
56
+ progressColor = try container.decodeIfPresent(String.self, forKey: .progressColor)
57
+ lineWidth = try container.decodeIfPresent(Double.self, forKey: .lineWidth)
58
+ }
59
+ }
@@ -0,0 +1,12 @@
1
+ //
2
+ // ComponentParameters.swift
3
+ //
4
+ // AUTO-GENERATED from data/components.json
5
+ // DO NOT EDIT MANUALLY - Changes will be overwritten
6
+ // Schema version: 1.0.0
7
+
8
+ import Foundation
9
+
10
+ /// Protocol marker for all component parameter types
11
+ /// All component-specific parameter structs conform to this protocol
12
+ public protocol ComponentParameters: Codable, Hashable {}
@@ -0,0 +1,12 @@
1
+ //
2
+ // DividerParameters.swift
3
+
4
+ // AUTO-GENERATED from data/components.json
5
+ // DO NOT EDIT MANUALLY - Changes will be overwritten
6
+ // Schema version: 1.0.0
7
+
8
+ import Foundation
9
+
10
+ /// Parameters for Divider component
11
+ /// Visual divider
12
+ public struct DividerParameters: ComponentParameters {}
@@ -0,0 +1,54 @@
1
+ //
2
+ // GaugeParameters.swift
3
+
4
+ // AUTO-GENERATED from data/components.json
5
+ // DO NOT EDIT MANUALLY - Changes will be overwritten
6
+ // Schema version: 1.0.0
7
+
8
+ import Foundation
9
+
10
+ /// Parameters for Gauge component
11
+ /// Gauge indicator for progress visualization
12
+ public struct GaugeParameters: ComponentParameters {
13
+ /// Current gauge value
14
+ public let value: Double?
15
+
16
+ /// Minimum value of the gauge range
17
+ public let minimumValue: Double
18
+
19
+ /// Maximum value of the gauge range
20
+ public let maximumValue: Double
21
+
22
+ /// End time in milliseconds since epoch
23
+ public let endAtMs: Double?
24
+
25
+ /// Start time in milliseconds since epoch
26
+ public let startAtMs: Double?
27
+
28
+ /// Tint color for the gauge
29
+ public let tintColor: String?
30
+
31
+ /// Visual style of the gauge
32
+ public let gaugeStyle: String?
33
+
34
+ enum CodingKeys: String, CodingKey {
35
+ case value
36
+ case minimumValue
37
+ case maximumValue
38
+ case endAtMs
39
+ case startAtMs
40
+ case tintColor
41
+ case gaugeStyle
42
+ }
43
+
44
+ public init(from decoder: Decoder) throws {
45
+ let container = try decoder.container(keyedBy: CodingKeys.self)
46
+ value = try container.decodeIfPresent(Double.self, forKey: .value)
47
+ minimumValue = try container.decodeIfPresent(Double.self, forKey: .minimumValue) ?? 0
48
+ maximumValue = try container.decodeIfPresent(Double.self, forKey: .maximumValue) ?? 1
49
+ endAtMs = try container.decodeIfPresent(Double.self, forKey: .endAtMs)
50
+ startAtMs = try container.decodeIfPresent(Double.self, forKey: .startAtMs)
51
+ tintColor = try container.decodeIfPresent(String.self, forKey: .tintColor)
52
+ gaugeStyle = try container.decodeIfPresent(String.self, forKey: .gaugeStyle)
53
+ }
54
+ }
@@ -0,0 +1,15 @@
1
+ //
2
+ // GlassContainerParameters.swift
3
+
4
+ // AUTO-GENERATED from data/components.json
5
+ // DO NOT EDIT MANUALLY - Changes will be overwritten
6
+ // Schema version: 1.0.0
7
+
8
+ import Foundation
9
+
10
+ /// Parameters for GlassContainer component
11
+ /// iOS 26+ Liquid Glass container
12
+ public struct GlassContainerParameters: ComponentParameters {
13
+ /// Spacing between glass elements
14
+ public let spacing: Double?
15
+ }
@@ -0,0 +1,12 @@
1
+ //
2
+ // GroupBoxParameters.swift
3
+
4
+ // AUTO-GENERATED from data/components.json
5
+ // DO NOT EDIT MANUALLY - Changes will be overwritten
6
+ // Schema version: 1.0.0
7
+
8
+ import Foundation
9
+
10
+ /// Parameters for GroupBox component
11
+ /// Grouped content container
12
+ public struct GroupBoxParameters: ComponentParameters {}
@@ -0,0 +1,34 @@
1
+ //
2
+ // HStackParameters.swift
3
+
4
+ // AUTO-GENERATED from data/components.json
5
+ // DO NOT EDIT MANUALLY - Changes will be overwritten
6
+ // Schema version: 1.0.0
7
+
8
+ import Foundation
9
+
10
+ /// Parameters for HStack component
11
+ /// Horizontal stack container
12
+ public struct HStackParameters: ComponentParameters {
13
+ /// Vertical alignment
14
+ public let alignment: String
15
+
16
+ /// Layout mode. 'stack' uses native SwiftUI stacks. 'flex' uses RN-like flexbox.
17
+ public let layout: String
18
+
19
+ /// Spacing between children. Takes precedence over gap style property.
20
+ public let spacing: Double?
21
+
22
+ enum CodingKeys: String, CodingKey {
23
+ case alignment
24
+ case layout
25
+ case spacing
26
+ }
27
+
28
+ public init(from decoder: Decoder) throws {
29
+ let container = try decoder.container(keyedBy: CodingKeys.self)
30
+ alignment = try container.decodeIfPresent(String.self, forKey: .alignment) ?? "center"
31
+ layout = try container.decodeIfPresent(String.self, forKey: .layout) ?? "stack"
32
+ spacing = try container.decodeIfPresent(Double.self, forKey: .spacing)
33
+ }
34
+ }
@@ -0,0 +1,29 @@
1
+ //
2
+ // ImageParameters.swift
3
+
4
+ // AUTO-GENERATED from data/components.json
5
+ // DO NOT EDIT MANUALLY - Changes will be overwritten
6
+ // Schema version: 1.0.0
7
+
8
+ import Foundation
9
+
10
+ /// Parameters for Image component
11
+ /// Display images from asset catalog or base64 data
12
+ public struct ImageParameters: ComponentParameters {
13
+ /// Image source - either { assetName: string } for asset catalog images or { base64: string } for base64 encoded images
14
+ public let source: String?
15
+
16
+ /// How the image should be resized to fit its container
17
+ public let resizeMode: String
18
+
19
+ enum CodingKeys: String, CodingKey {
20
+ case source
21
+ case resizeMode
22
+ }
23
+
24
+ public init(from decoder: Decoder) throws {
25
+ let container = try decoder.container(keyedBy: CodingKeys.self)
26
+ source = try container.decodeIfPresent(String.self, forKey: .source)
27
+ resizeMode = try container.decodeIfPresent(String.self, forKey: .resizeMode) ?? "cover"
28
+ }
29
+ }
@@ -0,0 +1,18 @@
1
+ //
2
+ // LabelParameters.swift
3
+
4
+ // AUTO-GENERATED from data/components.json
5
+ // DO NOT EDIT MANUALLY - Changes will be overwritten
6
+ // Schema version: 1.0.0
7
+
8
+ import Foundation
9
+
10
+ /// Parameters for Label component
11
+ /// Label with optional icon
12
+ public struct LabelParameters: ComponentParameters {
13
+ /// Text content for the label
14
+ public let title: String?
15
+
16
+ /// SF Symbol name for the label icon
17
+ public let systemImage: String?
18
+ }
@@ -0,0 +1,27 @@
1
+ //
2
+ // LinearGradientParameters.swift
3
+
4
+ // AUTO-GENERATED from data/components.json
5
+ // DO NOT EDIT MANUALLY - Changes will be overwritten
6
+ // Schema version: 1.0.0
7
+
8
+ import Foundation
9
+
10
+ /// Parameters for LinearGradient component
11
+ /// Linear gradient background with children
12
+ public struct LinearGradientParameters: ComponentParameters {
13
+ /// Pipe-separated color list (e.g., '#ff0000|#00ff00|#0000ff')
14
+ public let colors: String?
15
+
16
+ /// Pipe-separated gradient stops (e.g., 'red@0|orange@0.5|yellow@1')
17
+ public let stops: String?
18
+
19
+ /// Start point (e.g., 'topLeading', 'center', or 'x,y')
20
+ public let startPoint: String?
21
+
22
+ /// End point (e.g., 'bottomTrailing', 'center', or 'x,y')
23
+ public let endPoint: String?
24
+
25
+ /// Enable dithering (system-controlled)
26
+ public let dither: Bool?
27
+ }
@@ -0,0 +1,64 @@
1
+ //
2
+ // LinearProgressViewParameters.swift
3
+
4
+ // AUTO-GENERATED from data/components.json
5
+ // DO NOT EDIT MANUALLY - Changes will be overwritten
6
+ // Schema version: 1.0.0
7
+
8
+ import Foundation
9
+
10
+ /// Parameters for LinearProgressView component
11
+ /// Linear progress indicator (determinate or timer-based)
12
+ public struct LinearProgressViewParameters: ComponentParameters {
13
+ /// Current progress value
14
+ public let value: Double?
15
+
16
+ /// Whether to count down instead of up
17
+ public let countDown: Bool?
18
+
19
+ /// Maximum progress value
20
+ public let maximumValue: Double
21
+
22
+ /// End time in milliseconds since epoch
23
+ public let endAtMs: Double?
24
+
25
+ /// Start time in milliseconds since epoch
26
+ public let startAtMs: Double?
27
+
28
+ /// Color for the track (background) of the progress bar
29
+ public let trackColor: String?
30
+
31
+ /// Color for the progress fill
32
+ public let progressColor: String?
33
+
34
+ /// Corner radius for the progress bar
35
+ public let cornerRadius: Double?
36
+
37
+ /// Explicit height for the progress bar
38
+ public let height: Double?
39
+
40
+ enum CodingKeys: String, CodingKey {
41
+ case value
42
+ case countDown
43
+ case maximumValue
44
+ case endAtMs
45
+ case startAtMs
46
+ case trackColor
47
+ case progressColor
48
+ case cornerRadius
49
+ case height
50
+ }
51
+
52
+ public init(from decoder: Decoder) throws {
53
+ let container = try decoder.container(keyedBy: CodingKeys.self)
54
+ value = try container.decodeIfPresent(Double.self, forKey: .value)
55
+ countDown = try container.decodeIfPresent(Bool.self, forKey: .countDown)
56
+ maximumValue = try container.decodeIfPresent(Double.self, forKey: .maximumValue) ?? 100
57
+ endAtMs = try container.decodeIfPresent(Double.self, forKey: .endAtMs)
58
+ startAtMs = try container.decodeIfPresent(Double.self, forKey: .startAtMs)
59
+ trackColor = try container.decodeIfPresent(String.self, forKey: .trackColor)
60
+ progressColor = try container.decodeIfPresent(String.self, forKey: .progressColor)
61
+ cornerRadius = try container.decodeIfPresent(Double.self, forKey: .cornerRadius)
62
+ height = try container.decodeIfPresent(Double.self, forKey: .height)
63
+ }
64
+ }
@@ -0,0 +1,15 @@
1
+ //
2
+ // LinkParameters.swift
3
+
4
+ // AUTO-GENERATED from data/components.json
5
+ // DO NOT EDIT MANUALLY - Changes will be overwritten
6
+ // Schema version: 1.0.0
7
+
8
+ import Foundation
9
+
10
+ /// Parameters for Link component
11
+ /// Navigable link that opens a URL when tapped
12
+ public struct LinkParameters: ComponentParameters {
13
+ /// URL to navigate to when the link is tapped
14
+ public let destination: String?
15
+ }
@@ -0,0 +1,12 @@
1
+ //
2
+ // MaskParameters.swift
3
+
4
+ // AUTO-GENERATED from data/components.json
5
+ // DO NOT EDIT MANUALLY - Changes will be overwritten
6
+ // Schema version: 1.0.0
7
+
8
+ import Foundation
9
+
10
+ /// Parameters for Mask component
11
+ /// Mask content using any Voltra element as the mask shape
12
+ public struct MaskParameters: ComponentParameters {}
@@ -0,0 +1,15 @@
1
+ //
2
+ // SpacerParameters.swift
3
+
4
+ // AUTO-GENERATED from data/components.json
5
+ // DO NOT EDIT MANUALLY - Changes will be overwritten
6
+ // Schema version: 1.0.0
7
+
8
+ import Foundation
9
+
10
+ /// Parameters for Spacer component
11
+ /// Flexible space
12
+ public struct SpacerParameters: ComponentParameters {
13
+ /// Minimum length
14
+ public let minLength: Double?
15
+ }