@developer_tribe/react-builder 1.0.4 → 1.0.5

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 (499) hide show
  1. package/README.md +6 -0
  2. package/dist/assets/samples/getSamples.d.ts +1 -0
  3. package/dist/background.jpg +0 -0
  4. package/dist/build-components/BIcon/BIcon.d.ts +5 -0
  5. package/dist/build-components/BIcon/BIconProps.generated.d.ts +55 -0
  6. package/dist/build-components/BackgroundImage/BackgroundImageProps.generated.d.ts +4 -0
  7. package/dist/build-components/Button/ButtonProps.generated.d.ts +4 -0
  8. package/dist/build-components/Carousel/CarouselProps.generated.d.ts +4 -0
  9. package/dist/build-components/CarouselButtons/CarouselButtonsProps.generated.d.ts +4 -0
  10. package/dist/build-components/CarouselDots/CarouselDotsProps.generated.d.ts +4 -0
  11. package/dist/build-components/CarouselItem/CarouselItemProps.generated.d.ts +4 -0
  12. package/dist/build-components/CarouselProvider/CarouselProviderProps.generated.d.ts +4 -0
  13. package/dist/build-components/Image/ImageProps.generated.d.ts +4 -0
  14. package/dist/build-components/Main/Main.d.ts +5 -0
  15. package/dist/build-components/Main/MainProps.generated.d.ts +48 -0
  16. package/dist/build-components/Onboard/OnboardProps.generated.d.ts +4 -0
  17. package/dist/build-components/OnboardButton/OnboardButtonProps.generated.d.ts +4 -0
  18. package/dist/build-components/OnboardButtons/OnboardButtonsProps.generated.d.ts +4 -0
  19. package/dist/build-components/OnboardDot/OnboardDotProps.generated.d.ts +4 -0
  20. package/dist/build-components/OnboardFooter/OnboardFooterProps.generated.d.ts +4 -0
  21. package/dist/build-components/OnboardImage/OnboardImageProps.generated.d.ts +4 -0
  22. package/dist/build-components/OnboardItem/OnboardItemProps.generated.d.ts +4 -0
  23. package/dist/build-components/OnboardProvider/OnboardProviderProps.generated.d.ts +4 -1
  24. package/dist/build-components/OnboardSubtitle/OnboardSubtitleProps.generated.d.ts +4 -0
  25. package/dist/build-components/OnboardTitle/OnboardTitleProps.generated.d.ts +4 -0
  26. package/dist/build-components/PaywallBackground/PaywallBackground.d.ts +5 -0
  27. package/dist/build-components/PaywallBackground/PaywallBackgroundProps.generated.d.ts +47 -0
  28. package/dist/build-components/PaywallCloseButton/PaywallCloseButton.d.ts +5 -0
  29. package/dist/build-components/PaywallCloseButton/PaywallCloseButtonProps.generated.d.ts +56 -0
  30. package/dist/build-components/PaywallOptions/PaywallOptionButton.d.ts +9 -0
  31. package/dist/build-components/PaywallOptions/PaywallOptions.d.ts +5 -0
  32. package/dist/build-components/PaywallOptions/PaywallOptionsProps.generated.d.ts +47 -0
  33. package/dist/build-components/PaywallOptions/usePaywallOptionParamsFactory.d.ts +10 -0
  34. package/dist/build-components/PaywallProvider/PaywallProvider.d.ts +5 -0
  35. package/dist/build-components/PaywallProvider/PaywallProviderProps.generated.d.ts +47 -0
  36. package/dist/build-components/PaywallSubscriButton/PaywallSubscriButton.d.ts +5 -0
  37. package/dist/build-components/PaywallSubscriButton/PaywallSubscriButtonProps.generated.d.ts +50 -0
  38. package/dist/build-components/PaywallSubscribeButton/PaywallSubscribeButton.d.ts +5 -0
  39. package/dist/build-components/PaywallSubscribeButton/PaywallSubscribeButtonProps.generated.d.ts +50 -0
  40. package/dist/build-components/RadioButton/RadioButton.d.ts +11 -0
  41. package/dist/build-components/RadioButton/RadioButtonProps.generated.d.ts +50 -0
  42. package/dist/build-components/RenderNode.generated.d.ts +1 -1
  43. package/dist/build-components/Text/TextProps.generated.d.ts +4 -0
  44. package/dist/build-components/View/ViewProps.generated.d.ts +4 -0
  45. package/dist/build-components/index.d.ts +10 -1
  46. package/dist/build-components/patterns.generated.d.ts +4831 -661
  47. package/dist/components/AttributesEditorPanel.d.ts +2 -1
  48. package/dist/components/Builder.d.ts +1 -1
  49. package/dist/components/BuilderButton.d.ts +1 -1
  50. package/dist/components/BuilderProvider.d.ts +15 -0
  51. package/dist/components/EditorHeader.d.ts +1 -1
  52. package/dist/components/Icon.generated.d.ts +11 -0
  53. package/dist/components/LocalizationParamsProvider.d.ts +11 -0
  54. package/dist/components/ParamsProvider.d.ts +14 -0
  55. package/dist/hooks/useLocalizationParams.d.ts +1 -0
  56. package/dist/hooks/useLocalize.d.ts +2 -0
  57. package/dist/hooks/useParams.d.ts +1 -0
  58. package/dist/hooks/useSafeAreaViewStyle.d.ts +1 -0
  59. package/dist/index.cjs.js +5 -5
  60. package/dist/index.cjs.js.map +1 -1
  61. package/dist/index.d.ts +8 -0
  62. package/dist/index.esm.js +5 -5
  63. package/dist/index.esm.js.map +1 -1
  64. package/dist/index.native.cjs.js +29 -0
  65. package/dist/index.native.cjs.js.map +1 -0
  66. package/dist/index.native.d.ts +31 -0
  67. package/dist/index.native.esm.js +29 -0
  68. package/dist/index.native.esm.js.map +1 -0
  69. package/dist/mockOS/components/MockOSRouter.d.ts +1 -1
  70. package/dist/mockOS/context/MockOSContext.d.ts +4 -18
  71. package/dist/mockOS/context/MockOSContextBase.d.ts +21 -0
  72. package/dist/mockOS/index.d.ts +3 -2
  73. package/dist/modals/BenefitEditModal.d.ts +13 -0
  74. package/dist/modals/BenefitPresetsModal.d.ts +9 -0
  75. package/dist/modals/IconPickerModal.d.ts +9 -0
  76. package/dist/modals/MockableFeatureModal.d.ts +6 -0
  77. package/dist/modals/ProductEditModal.d.ts +9 -0
  78. package/dist/modals/ProductPresetsModal.d.ts +9 -0
  79. package/dist/modals/index.d.ts +6 -0
  80. package/dist/pages/ProjectPage.d.ts +3 -2
  81. package/dist/pages/tabs/BuilderPanel.d.ts +1 -1
  82. package/dist/pages/tabs/SideTool.d.ts +1 -1
  83. package/dist/paywall/hooks/index.d.ts +5 -0
  84. package/dist/paywall/hooks/useCalculateLocalizedPrice.d.ts +4 -0
  85. package/dist/paywall/hooks/useCarouselOptionsSeperator.d.ts +6 -0
  86. package/dist/paywall/hooks/useCloseStatusPaywall.d.ts +4 -0
  87. package/dist/paywall/hooks/useDiscountRate.d.ts +4 -0
  88. package/dist/paywall/hooks/usePaywallCounter.d.ts +4 -0
  89. package/dist/paywall/types/benefits.d.ts +14 -0
  90. package/dist/paywall/types/paywall-types.d.ts +43 -0
  91. package/dist/store.d.ts +29 -1
  92. package/dist/styles.css +1 -1
  93. package/dist/types/Icons.d.ts +2 -0
  94. package/dist/types/Project.d.ts +5 -0
  95. package/dist/utils/analyseNode.d.ts +1 -4
  96. package/dist/utils/analyseNodeByPatterns.d.ts +16 -0
  97. package/dist/utils/analyseNodeStructural.d.ts +11 -0
  98. package/dist/utils/findNodeByKeyNested.d.ts +2 -0
  99. package/dist/utils/nodeGuards.d.ts +5 -0
  100. package/dist/utils/novaToJson.d.ts +5 -0
  101. package/dist/utils/patterns.d.ts +14 -0
  102. package/dist/utils/replaceLocalizationParams.d.ts +1 -0
  103. package/package.json +33 -3
  104. package/scripts/prebuild/assets/icon.template +71 -0
  105. package/scripts/prebuild/build-components.js +5 -0
  106. package/scripts/prebuild/icon-generator.js +206 -0
  107. package/scripts/prebuild/prebuild.js +10 -1
  108. package/scripts/prebuild/utils/createComponentTsx.js +6 -3
  109. package/scripts/prebuild/utils/createGeneratedProps.js +4 -2
  110. package/scripts/prebuild/utils/createRenderNodeGenerated.js +43 -8
  111. package/scripts/prebuild/utils/validateAllComponentsOrThrow.js +20 -9
  112. package/scripts/prebuild/utils/validatePatternJson.js +3 -2
  113. package/src/AttributesEditor.tsx +178 -34
  114. package/src/DeviceMockFrame.tsx +41 -43
  115. package/src/RenderPage.tsx +8 -49
  116. package/src/assets/benefits.json +24 -0
  117. package/src/assets/iconset/activity-heart.svg +3 -0
  118. package/src/assets/iconset/activity.svg +3 -0
  119. package/src/assets/iconset/alert-circle.svg +3 -0
  120. package/src/assets/iconset/alert-triangle.svg +3 -0
  121. package/src/assets/iconset/anchor.svg +3 -0
  122. package/src/assets/iconset/archive.svg +3 -0
  123. package/src/assets/iconset/arrow-down.svg +3 -0
  124. package/src/assets/iconset/arrow-left.svg +3 -0
  125. package/src/assets/iconset/arrow-narrow-down-left.svg +3 -0
  126. package/src/assets/iconset/arrow-narrow-up-right.svg +3 -0
  127. package/src/assets/iconset/arrow-right-smooth.svg +4 -0
  128. package/src/assets/iconset/arrow-right.svg +7 -0
  129. package/src/assets/iconset/asterisk-01.svg +3 -0
  130. package/src/assets/iconset/asterisk-02.svg +3 -0
  131. package/src/assets/iconset/at-sign.svg +3 -0
  132. package/src/assets/iconset/award.svg +4 -0
  133. package/src/assets/iconset/battery-charging.svg +6 -0
  134. package/src/assets/iconset/bell-01.svg +5 -0
  135. package/src/assets/iconset/bell-02.svg +3 -0
  136. package/src/assets/iconset/bell-ringing-02.svg +3 -0
  137. package/src/assets/iconset/bookmark-add.svg +3 -0
  138. package/src/assets/iconset/bookmark-check.svg +3 -0
  139. package/src/assets/iconset/bookmark-minus.svg +3 -0
  140. package/src/assets/iconset/bookmark-x.svg +3 -0
  141. package/src/assets/iconset/bookmark.svg +3 -0
  142. package/src/assets/iconset/bubble.svg +5 -0
  143. package/src/assets/iconset/building-01.svg +3 -0
  144. package/src/assets/iconset/building-02.svg +3 -0
  145. package/src/assets/iconset/building-03.svg +3 -0
  146. package/src/assets/iconset/building-04.svg +3 -0
  147. package/src/assets/iconset/building-05.svg +3 -0
  148. package/src/assets/iconset/building-06.svg +3 -0
  149. package/src/assets/iconset/building-07.svg +3 -0
  150. package/src/assets/iconset/building-08.svg +3 -0
  151. package/src/assets/iconset/building-09.svg +3 -0
  152. package/src/assets/iconset/camera-01.svg +8 -0
  153. package/src/assets/iconset/camera-steel.svg +4 -0
  154. package/src/assets/iconset/camera.svg +4 -0
  155. package/src/assets/iconset/check-circle-bold.svg +3 -0
  156. package/src/assets/iconset/check-circle-broken.svg +3 -0
  157. package/src/assets/iconset/check-circle.svg +3 -0
  158. package/src/assets/iconset/check-done-01.svg +3 -0
  159. package/src/assets/iconset/check-done-02.svg +3 -0
  160. package/src/assets/iconset/check-heart.svg +3 -0
  161. package/src/assets/iconset/check-square-broken.svg +3 -0
  162. package/src/assets/iconset/check-square.svg +3 -0
  163. package/src/assets/iconset/check-verified-01.svg +3 -0
  164. package/src/assets/iconset/check-verified-02.svg +3 -0
  165. package/src/assets/iconset/check-verified-03.svg +3 -0
  166. package/src/assets/iconset/check.svg +3 -0
  167. package/src/assets/iconset/checkbox.svg +4 -0
  168. package/src/assets/iconset/checkv.svg +3 -0
  169. package/src/assets/iconset/chevron-down.svg +3 -0
  170. package/src/assets/iconset/chevron-down2.svg +3 -0
  171. package/src/assets/iconset/chevron-left-2.svg +3 -0
  172. package/src/assets/iconset/chevron-left.svg +3 -0
  173. package/src/assets/iconset/chevron-right-empty.svg +3 -0
  174. package/src/assets/iconset/chevron-right-smooth.svg +3 -0
  175. package/src/assets/iconset/chevron-right.svg +3 -0
  176. package/src/assets/iconset/chevron-up.svg +3 -0
  177. package/src/assets/iconset/circle.svg +32 -0
  178. package/src/assets/iconset/clock-fast-forward.svg +10 -0
  179. package/src/assets/iconset/clock.svg +3 -0
  180. package/src/assets/iconset/close-circle.svg +3 -0
  181. package/src/assets/iconset/close.svg +3 -0
  182. package/src/assets/iconset/cloud-01.svg +5 -0
  183. package/src/assets/iconset/cloud-blank-01.svg +3 -0
  184. package/src/assets/iconset/cloud-blank-02.svg +3 -0
  185. package/src/assets/iconset/coin.svg +5 -0
  186. package/src/assets/iconset/coins-02.svg +3 -0
  187. package/src/assets/iconset/colors.svg +3 -0
  188. package/src/assets/iconset/copy-01.svg +3 -0
  189. package/src/assets/iconset/copy-02.svg +3 -0
  190. package/src/assets/iconset/copy-03.svg +3 -0
  191. package/src/assets/iconset/copy-04.svg +3 -0
  192. package/src/assets/iconset/copy-05.svg +3 -0
  193. package/src/assets/iconset/copy-06.svg +3 -0
  194. package/src/assets/iconset/copy-07.svg +3 -0
  195. package/src/assets/iconset/corner-down-right.svg +3 -0
  196. package/src/assets/iconset/crypto-bold.svg +4 -0
  197. package/src/assets/iconset/delete-icon.svg +5 -0
  198. package/src/assets/iconset/diamond.svg +3 -0
  199. package/src/assets/iconset/dice-3.svg +3 -0
  200. package/src/assets/iconset/divide-01.svg +3 -0
  201. package/src/assets/iconset/divide-02.svg +3 -0
  202. package/src/assets/iconset/divide-03.svg +3 -0
  203. package/src/assets/iconset/document-check-bold.svg +4 -0
  204. package/src/assets/iconset/dots-circle.svg +10 -0
  205. package/src/assets/iconset/dots-grid.svg +11 -0
  206. package/src/assets/iconset/dots-horizontal.svg +5 -0
  207. package/src/assets/iconset/dots-vertical.svg +5 -0
  208. package/src/assets/iconset/download-01.svg +3 -0
  209. package/src/assets/iconset/download-02.svg +3 -0
  210. package/src/assets/iconset/download-03.svg +3 -0
  211. package/src/assets/iconset/edit-03.svg +3 -0
  212. package/src/assets/iconset/edit-04.svg +3 -0
  213. package/src/assets/iconset/edit-05.svg +3 -0
  214. package/src/assets/iconset/element-3.svg +6 -0
  215. package/src/assets/iconset/ellipse-127.svg +3 -0
  216. package/src/assets/iconset/exclaimation-circle.svg +8 -0
  217. package/src/assets/iconset/eye-off-line.svg +5 -0
  218. package/src/assets/iconset/face-smile.svg +5 -0
  219. package/src/assets/iconset/file-04.svg +3 -0
  220. package/src/assets/iconset/file-05.svg +3 -0
  221. package/src/assets/iconset/file-check-02.svg +3 -0
  222. package/src/assets/iconset/file-plus-01.svg +5 -0
  223. package/src/assets/iconset/file-shield-02.svg +5 -0
  224. package/src/assets/iconset/filter-funnel-01.svg +3 -0
  225. package/src/assets/iconset/flag-03.svg +3 -0
  226. package/src/assets/iconset/flash.svg +3 -0
  227. package/src/assets/iconset/folder-plus.svg +3 -0
  228. package/src/assets/iconset/folder.svg +3 -0
  229. package/src/assets/iconset/gallery.svg +3 -0
  230. package/src/assets/iconset/globe-01.svg +3 -0
  231. package/src/assets/iconset/globe-04.svg +5 -0
  232. package/src/assets/iconset/globe-bold.svg +4 -0
  233. package/src/assets/iconset/guard.svg +3 -0
  234. package/src/assets/iconset/headphones-01.svg +3 -0
  235. package/src/assets/iconset/headphones-02.svg +5 -0
  236. package/src/assets/iconset/headset-bold.svg +4 -0
  237. package/src/assets/iconset/heart-bold.svg +3 -0
  238. package/src/assets/iconset/heart.svg +3 -0
  239. package/src/assets/iconset/help-circle.svg +5 -0
  240. package/src/assets/iconset/home-2.svg +4 -0
  241. package/src/assets/iconset/home-line.svg +3 -0
  242. package/src/assets/iconset/hourglass-02.svg +5 -0
  243. package/src/assets/iconset/image-01.svg +5 -0
  244. package/src/assets/iconset/image-03.svg +3 -0
  245. package/src/assets/iconset/image.svg +4 -0
  246. package/src/assets/iconset/inbox-01.svg +3 -0
  247. package/src/assets/iconset/inbox-arrow-down.svg +3 -0
  248. package/src/assets/iconset/info-circle.svg +3 -0
  249. package/src/assets/iconset/keyboard-line.svg +9 -0
  250. package/src/assets/iconset/lamp-charge.svg +5 -0
  251. package/src/assets/iconset/layer.svg +3 -0
  252. package/src/assets/iconset/light.svg +6 -0
  253. package/src/assets/iconset/like-dislike.svg +6 -0
  254. package/src/assets/iconset/lock-03.svg +3 -0
  255. package/src/assets/iconset/logout.svg +3 -0
  256. package/src/assets/iconset/magicpen.svg +7 -0
  257. package/src/assets/iconset/mail-01.svg +5 -0
  258. package/src/assets/iconset/mail.svg +3 -0
  259. package/src/assets/iconset/marker.svg +3 -0
  260. package/src/assets/iconset/medal-star.svg +5 -0
  261. package/src/assets/iconset/menu-04.svg +3 -0
  262. package/src/assets/iconset/menu.svg +5 -0
  263. package/src/assets/iconset/message-circle-01.svg +5 -0
  264. package/src/assets/iconset/message-plus-circle.svg +3 -0
  265. package/src/assets/iconset/message-question-circle.svg +5 -0
  266. package/src/assets/iconset/message-text-circle-01.svg +5 -0
  267. package/src/assets/iconset/message-text-square-02.svg +3 -0
  268. package/src/assets/iconset/message-x-square.svg +3 -0
  269. package/src/assets/iconset/microphone-02.svg +3 -0
  270. package/src/assets/iconset/microphone-slash.svg +8 -0
  271. package/src/assets/iconset/mirror.svg +4 -0
  272. package/src/assets/iconset/moon-01.svg +3 -0
  273. package/src/assets/iconset/moon-bold.svg +3 -0
  274. package/src/assets/iconset/mouse-circle.svg +4 -0
  275. package/src/assets/iconset/move.svg +5 -0
  276. package/src/assets/iconset/notification-fill.svg +3 -0
  277. package/src/assets/iconset/notification-text.svg +3 -0
  278. package/src/assets/iconset/notification.svg +5 -0
  279. package/src/assets/iconset/pdf-01.svg +6 -0
  280. package/src/assets/iconset/pencil-01.svg +5 -0
  281. package/src/assets/iconset/phone-01.svg +3 -0
  282. package/src/assets/iconset/phone-arrow-down-left.svg +4 -0
  283. package/src/assets/iconset/phone-arrow-up-right.svg +8 -0
  284. package/src/assets/iconset/phone-hang-up.svg +5 -0
  285. package/src/assets/iconset/phone-hangup2.svg +8 -0
  286. package/src/assets/iconset/phone-incoming-01.svg +3 -0
  287. package/src/assets/iconset/phone-outgoing-01.svg +3 -0
  288. package/src/assets/iconset/phone-plus.svg +3 -0
  289. package/src/assets/iconset/phone-x.svg +3 -0
  290. package/src/assets/iconset/phone.svg +3 -0
  291. package/src/assets/iconset/plus-circle.svg +3 -0
  292. package/src/assets/iconset/plus.svg +4 -0
  293. package/src/assets/iconset/printer.svg +3 -0
  294. package/src/assets/iconset/question-mark-circle.svg +5 -0
  295. package/src/assets/iconset/refresh-ccw-01.svg +3 -0
  296. package/src/assets/iconset/refresh-cw-01.svg +3 -0
  297. package/src/assets/iconset/refresh-cw-04.svg +3 -0
  298. package/src/assets/iconset/refresh-right-square-bold.svg +3 -0
  299. package/src/assets/iconset/remove-circle.svg +12 -0
  300. package/src/assets/iconset/repeat-04.svg +3 -0
  301. package/src/assets/iconset/repeat-bold.svg +3 -0
  302. package/src/assets/iconset/ruler-pen.svg +4 -0
  303. package/src/assets/iconset/search-lg.svg +3 -0
  304. package/src/assets/iconset/search-md.svg +5 -0
  305. package/src/assets/iconset/search-refraction.svg +5 -0
  306. package/src/assets/iconset/search.svg +3 -0
  307. package/src/assets/iconset/send-01.svg +3 -0
  308. package/src/assets/iconset/send-02.svg +5 -0
  309. package/src/assets/iconset/send-diagonal.svg +3 -0
  310. package/src/assets/iconset/setting-2.svg +4 -0
  311. package/src/assets/iconset/settings-02.svg +4 -0
  312. package/src/assets/iconset/settings-04.svg +5 -0
  313. package/src/assets/iconset/settings-2.svg +4 -0
  314. package/src/assets/iconset/settings-cog.svg +3 -0
  315. package/src/assets/iconset/settings.svg +4 -0
  316. package/src/assets/iconset/share-01.svg +4 -0
  317. package/src/assets/iconset/share-03.svg +3 -0
  318. package/src/assets/iconset/share-04.svg +3 -0
  319. package/src/assets/iconset/share-05.svg +5 -0
  320. package/src/assets/iconset/share-06.svg +3 -0
  321. package/src/assets/iconset/share-bold.svg +3 -0
  322. package/src/assets/iconset/shield-01.svg +3 -0
  323. package/src/assets/iconset/shield-bold.svg +3 -0
  324. package/src/assets/iconset/solar-check.svg +3 -0
  325. package/src/assets/iconset/speaker-wave.svg +9 -0
  326. package/src/assets/iconset/speaker.svg +5 -0
  327. package/src/assets/iconset/speedometer-03.svg +3 -0
  328. package/src/assets/iconset/star-rounded.svg +3 -0
  329. package/src/assets/iconset/star.svg +3 -0
  330. package/src/assets/iconset/sun.svg +5 -0
  331. package/src/assets/iconset/target-03.svg +3 -0
  332. package/src/assets/iconset/text-input.svg +3 -0
  333. package/src/assets/iconset/translate.svg +7 -0
  334. package/src/assets/iconset/trash-02.svg +3 -0
  335. package/src/assets/iconset/trash-03.svg +5 -0
  336. package/src/assets/iconset/trash-04.svg +3 -0
  337. package/src/assets/iconset/trash.svg +7 -0
  338. package/src/assets/iconset/trush-square-bold.svg +3 -0
  339. package/src/assets/iconset/unlimited.svg +3 -0
  340. package/src/assets/iconset/user-circle.svg +3 -0
  341. package/src/assets/iconset/user-jogging.svg +3 -0
  342. package/src/assets/iconset/user-plus-01.svg +5 -0
  343. package/src/assets/iconset/user-square.svg +5 -0
  344. package/src/assets/iconset/user-x-01.svg +5 -0
  345. package/src/assets/iconset/user-x-02.svg +3 -0
  346. package/src/assets/iconset/user2.svg +3 -0
  347. package/src/assets/iconset/users-02.svg +5 -0
  348. package/src/assets/iconset/users-speaker.svg +7 -0
  349. package/src/assets/iconset/verify.svg +3 -0
  350. package/src/assets/iconset/voice-cricle.svg +8 -0
  351. package/src/assets/iconset/x-circle.svg +3 -0
  352. package/src/assets/iconset/x-close.svg +3 -0
  353. package/src/assets/iconset/x-sm.svg +3 -0
  354. package/src/assets/iconset/zap.svg +3 -0
  355. package/src/assets/images/background.jpg +0 -0
  356. package/src/assets/loading_animation.json +1 -0
  357. package/src/assets/products.json +98 -0
  358. package/src/assets/samples/carousel-sample.json +1 -0
  359. package/src/assets/samples/getSamples.ts +39 -66
  360. package/src/assets/samples/paywall-1.json +220 -0
  361. package/src/assets/samples/simple-1.json +1 -0
  362. package/src/assets/samples/simple-2.json +1 -0
  363. package/src/assets/samples/vpn-onboard-1.json +324 -720
  364. package/src/assets/samples/vpn-onboard-2.json +299 -683
  365. package/src/assets/samples/vpn-onboard-3.json +270 -680
  366. package/src/assets/samples/vpn-onboard-4.json +270 -681
  367. package/src/assets/samples/vpn-onboard-5.json +408 -893
  368. package/src/assets/samples/vpn-onboard-6.json +279 -594
  369. package/src/attributes-editor/SpecialCategorySection.tsx +1 -1
  370. package/src/build-components/BIcon/BIcon.tsx +56 -0
  371. package/src/build-components/BIcon/BIconProps.generated.ts +82 -0
  372. package/src/build-components/BIcon/pattern.json +47 -0
  373. package/src/build-components/BackgroundImage/BackgroundImageProps.generated.ts +4 -0
  374. package/src/build-components/BackgroundImage/pattern.json +2 -2
  375. package/src/build-components/Button/Button.tsx +14 -1
  376. package/src/build-components/Button/ButtonProps.generated.ts +4 -0
  377. package/src/build-components/Button/pattern.json +4 -1
  378. package/src/build-components/Carousel/CarouselProps.generated.ts +4 -0
  379. package/src/build-components/Carousel/pattern.json +2 -2
  380. package/src/build-components/CarouselButtons/CarouselButtonsProps.generated.ts +4 -0
  381. package/src/build-components/CarouselButtons/pattern.json +1 -1
  382. package/src/build-components/CarouselDots/CarouselDotsProps.generated.ts +4 -0
  383. package/src/build-components/CarouselDots/pattern.json +1 -1
  384. package/src/build-components/CarouselItem/CarouselItem.tsx +1 -1
  385. package/src/build-components/CarouselItem/CarouselItemProps.generated.ts +4 -0
  386. package/src/build-components/CarouselItem/pattern.json +1 -1
  387. package/src/build-components/CarouselProvider/CarouselProvider.tsx +1 -1
  388. package/src/build-components/CarouselProvider/CarouselProviderProps.generated.ts +4 -0
  389. package/src/build-components/CarouselProvider/pattern.json +1 -1
  390. package/src/build-components/Image/ImageProps.generated.ts +4 -0
  391. package/src/build-components/Image/pattern.json +1 -1
  392. package/src/build-components/Main/Main.tsx +61 -0
  393. package/src/build-components/Main/MainProps.generated.ts +64 -0
  394. package/src/build-components/Main/pattern.json +35 -0
  395. package/src/build-components/Onboard/OnboardProps.generated.ts +4 -0
  396. package/src/build-components/OnboardButton/OnboardButtonProps.generated.ts +4 -0
  397. package/src/build-components/OnboardButtons/OnboardButtonsProps.generated.ts +4 -0
  398. package/src/build-components/OnboardDot/OnboardDotProps.generated.ts +4 -0
  399. package/src/build-components/OnboardFooter/OnboardFooterProps.generated.ts +4 -0
  400. package/src/build-components/OnboardImage/OnboardImageProps.generated.ts +4 -0
  401. package/src/build-components/OnboardItem/OnboardItem.tsx +1 -1
  402. package/src/build-components/OnboardItem/OnboardItemProps.generated.ts +4 -0
  403. package/src/build-components/OnboardProvider/OnboardProviderProps.generated.ts +4 -1
  404. package/src/build-components/OnboardProvider/pattern.json +6 -16
  405. package/src/build-components/OnboardSubtitle/OnboardSubtitleProps.generated.ts +4 -0
  406. package/src/build-components/OnboardTitle/OnboardTitleProps.generated.ts +4 -0
  407. package/src/build-components/PaywallBackground/PaywallBackground.tsx +47 -0
  408. package/src/build-components/PaywallBackground/PaywallBackgroundProps.generated.ts +63 -0
  409. package/src/build-components/PaywallBackground/pattern.json +16 -0
  410. package/src/build-components/PaywallCloseButton/PaywallCloseButton.tsx +62 -0
  411. package/src/build-components/PaywallCloseButton/PaywallCloseButtonProps.generated.ts +83 -0
  412. package/src/build-components/PaywallCloseButton/pattern.json +23 -0
  413. package/src/build-components/PaywallOptions/PaywallOptionButton.tsx +64 -0
  414. package/src/build-components/PaywallOptions/PaywallOptions.tsx +92 -0
  415. package/src/build-components/PaywallOptions/PaywallOptionsProps.generated.ts +63 -0
  416. package/src/build-components/PaywallOptions/pattern.json +22 -0
  417. package/src/build-components/PaywallOptions/usePaywallOptionParamsFactory.ts +42 -0
  418. package/src/build-components/PaywallProvider/PaywallProvider.tsx +78 -0
  419. package/src/build-components/PaywallProvider/PaywallProviderProps.generated.ts +63 -0
  420. package/src/build-components/PaywallProvider/pattern.json +24 -0
  421. package/src/build-components/PaywallSubscriButton/PaywallSubscriButton.tsx +10 -0
  422. package/src/build-components/PaywallSubscriButton/PaywallSubscriButtonProps.generated.ts +77 -0
  423. package/src/build-components/PaywallSubscriButton/pattern.json +27 -0
  424. package/src/build-components/PaywallSubscribeButton/PaywallSubscribeButton.tsx +60 -0
  425. package/src/build-components/PaywallSubscribeButton/PaywallSubscribeButtonProps.generated.ts +77 -0
  426. package/src/build-components/PaywallSubscribeButton/pattern.json +27 -0
  427. package/src/build-components/RadioButton/RadioButton.tsx +123 -0
  428. package/src/build-components/RadioButton/RadioButtonProps.generated.ts +66 -0
  429. package/src/build-components/RadioButton/pattern.json +42 -0
  430. package/src/build-components/RenderNode.generated.tsx +140 -37
  431. package/src/build-components/Text/Text.tsx +3 -3
  432. package/src/build-components/Text/TextProps.generated.ts +4 -0
  433. package/src/build-components/Text/pattern.json +1 -1
  434. package/src/build-components/View/ViewProps.generated.ts +4 -0
  435. package/src/build-components/View/pattern.json +42 -4
  436. package/src/build-components/index.ts +55 -10
  437. package/src/build-components/patterns.generated.ts +4909 -706
  438. package/src/components/AttributesEditorPanel.tsx +3 -1
  439. package/src/components/Builder.tsx +3 -5
  440. package/src/components/BuilderButton.tsx +2 -7
  441. package/src/components/BuilderProvider.tsx +45 -0
  442. package/src/components/DeviceNavigationBar.tsx +1 -1
  443. package/src/components/EditorHeader.tsx +4 -1
  444. package/src/components/Icon.generated.tsx +540 -0
  445. package/src/components/LocalizationParamsProvider.tsx +22 -0
  446. package/src/components/ParamsProvider.tsx +38 -0
  447. package/src/hooks/useLocalizationParams.ts +5 -0
  448. package/src/hooks/useLocalize.ts +23 -0
  449. package/src/hooks/useParams.ts +8 -0
  450. package/src/hooks/useSafeAreaViewStyle.ts +67 -0
  451. package/src/index.native.ts +75 -0
  452. package/src/index.ts +26 -0
  453. package/src/mockOS/components/MockOSRouter.tsx +9 -14
  454. package/src/mockOS/context/MockOSContext.tsx +12 -36
  455. package/src/mockOS/context/MockOSContextBase.ts +35 -0
  456. package/src/mockOS/index.ts +3 -2
  457. package/src/modals/AddComponentModal.tsx +1 -0
  458. package/src/modals/BenefitEditModal.tsx +160 -0
  459. package/src/modals/BenefitPresetsModal.tsx +166 -0
  460. package/src/modals/IconPickerModal.tsx +109 -0
  461. package/src/modals/MockableFeatureModal.tsx +292 -0
  462. package/src/modals/ProductEditModal.tsx +215 -0
  463. package/src/modals/ProductPresetsModal.tsx +151 -0
  464. package/src/modals/index.ts +6 -0
  465. package/src/pages/ProjectPage.tsx +72 -15
  466. package/src/pages/tabs/BuilderPanel.tsx +1 -1
  467. package/src/pages/tabs/SideTool.tsx +3 -10
  468. package/src/paywall/hooks/index.ts +5 -0
  469. package/src/paywall/hooks/useCalculateLocalizedPrice.ts +6 -0
  470. package/src/paywall/hooks/useCarouselOptionsSeperator.ts +8 -0
  471. package/src/paywall/hooks/useCloseStatusPaywall.ts +6 -0
  472. package/src/paywall/hooks/useDiscountRate.ts +6 -0
  473. package/src/paywall/hooks/usePaywallCounter.ts +6 -0
  474. package/src/paywall/types/benefits.ts +44 -0
  475. package/src/paywall/types/paywall-types.ts +51 -0
  476. package/src/store.ts +155 -41
  477. package/src/styles/base/_global.scss +49 -41
  478. package/src/styles/components/_attributes-editor.scss +40 -5
  479. package/src/styles/components/_editor-shell.scss +5 -11
  480. package/src/styles/components/_ui-components.scss +2 -1
  481. package/src/styles/index.scss +5 -0
  482. package/src/styles/modals/_benefit-edit-modal.scss +17 -0
  483. package/src/styles/modals/_benefit-presets-modal.scss +79 -0
  484. package/src/styles/modals/_mockable-feature-modal.scss +15 -0
  485. package/src/styles/modals/_product-edit-modal.scss +23 -0
  486. package/src/styles/modals/_product-presets-modal.scss +81 -0
  487. package/src/types/Icons.ts +244 -0
  488. package/src/types/Project.ts +5 -0
  489. package/src/types/jest-globals.d.ts +13 -0
  490. package/src/utils/analyseNode.ts +22 -109
  491. package/src/utils/analyseNodeByPatterns.ts +438 -0
  492. package/src/utils/analyseNodeStructural.ts +52 -0
  493. package/src/utils/extractViewStyle.ts +19 -0
  494. package/src/utils/findNodeByKeyNested.ts +32 -0
  495. package/src/utils/isCarousel.ts +21 -5
  496. package/src/utils/nodeGuards.ts +26 -0
  497. package/src/utils/novaToJson.ts +21 -9
  498. package/src/utils/patterns.ts +62 -3
  499. package/src/utils/replaceLocalizationParams.ts +15 -0
@@ -0,0 +1,42 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "allowUnknownAttributes": true,
4
+ "pattern": {
5
+ "type": "RadioButton",
6
+ "children": "never",
7
+ "extends": "View",
8
+ "attributes": {
9
+ "selected": "boolean",
10
+ "color": "color",
11
+ "size": "number"
12
+ }
13
+ },
14
+ "meta": {
15
+ "desiredParent": ["all"],
16
+ "label": "Radio Button",
17
+ "description": "Generic radio button icon.",
18
+ "attributes": {
19
+ "selected": {
20
+ "label": "Selected",
21
+ "description": "Whether the radio is selected.",
22
+ "category": "other",
23
+ "specialCategory": null,
24
+ "sort": 0
25
+ },
26
+ "color": {
27
+ "label": "Color",
28
+ "description": "Radio color.",
29
+ "category": "style",
30
+ "specialCategory": null,
31
+ "sort": 1
32
+ },
33
+ "size": {
34
+ "label": "Size",
35
+ "description": "Radio size in px.",
36
+ "category": "style",
37
+ "specialCategory": null,
38
+ "sort": 2
39
+ }
40
+ }
41
+ }
42
+ }
@@ -1,17 +1,48 @@
1
1
  /* AUTO-GENERATED FILE - DO NOT EDIT */
2
2
  import React from 'react';
3
3
 
4
+ import { normalizeComponentType } from '../utils/patterns';
5
+
6
+ import type { Node } from '../types/Node';
4
7
  import {
5
- Node,
6
- NodeData,
7
8
  isNodeArray,
8
9
  isNodeNullOrUndefined,
9
10
  isNodeString,
10
- } from '../index';
11
+ } from '../utils/analyseNode';
11
12
 
12
13
  import { other } from './other';
13
14
 
14
15
  // Builder components
16
+ import type { BIconComponentProps } from './BIcon/BIconProps.generated';
17
+ import type { BackgroundImageComponentProps } from './BackgroundImage/BackgroundImageProps.generated';
18
+ import type { ButtonComponentProps } from './Button/ButtonProps.generated';
19
+ import type { CarouselComponentProps } from './Carousel/CarouselProps.generated';
20
+ import type { CarouselButtonsComponentProps } from './CarouselButtons/CarouselButtonsProps.generated';
21
+ import type { CarouselDotsComponentProps } from './CarouselDots/CarouselDotsProps.generated';
22
+ import type { CarouselItemComponentProps } from './CarouselItem/CarouselItemProps.generated';
23
+ import type { CarouselProviderComponentProps } from './CarouselProvider/CarouselProviderProps.generated';
24
+ import type { ImageComponentProps } from './Image/ImageProps.generated';
25
+ import type { MainComponentProps } from './Main/MainProps.generated';
26
+ import type { OnboardComponentProps } from './Onboard/OnboardProps.generated';
27
+ import type { OnboardButtonComponentProps } from './OnboardButton/OnboardButtonProps.generated';
28
+ import type { OnboardButtonsComponentProps } from './OnboardButtons/OnboardButtonsProps.generated';
29
+ import type { OnboardDotComponentProps } from './OnboardDot/OnboardDotProps.generated';
30
+ import type { OnboardFooterComponentProps } from './OnboardFooter/OnboardFooterProps.generated';
31
+ import type { OnboardImageComponentProps } from './OnboardImage/OnboardImageProps.generated';
32
+ import type { OnboardItemComponentProps } from './OnboardItem/OnboardItemProps.generated';
33
+ import type { OnboardProviderComponentProps } from './OnboardProvider/OnboardProviderProps.generated';
34
+ import type { OnboardSubtitleComponentProps } from './OnboardSubtitle/OnboardSubtitleProps.generated';
35
+ import type { OnboardTitleComponentProps } from './OnboardTitle/OnboardTitleProps.generated';
36
+ import type { PaywallBackgroundComponentProps } from './PaywallBackground/PaywallBackgroundProps.generated';
37
+ import type { PaywallCloseButtonComponentProps } from './PaywallCloseButton/PaywallCloseButtonProps.generated';
38
+ import type { PaywallOptionsComponentProps } from './PaywallOptions/PaywallOptionsProps.generated';
39
+ import type { PaywallProviderComponentProps } from './PaywallProvider/PaywallProviderProps.generated';
40
+ import type { PaywallSubscriButtonComponentProps } from './PaywallSubscriButton/PaywallSubscriButtonProps.generated';
41
+ import type { PaywallSubscribeButtonComponentProps } from './PaywallSubscribeButton/PaywallSubscribeButtonProps.generated';
42
+ import type { RadioButtonComponentProps } from './RadioButton/RadioButtonProps.generated';
43
+ import type { TextComponentProps } from './Text/TextProps.generated';
44
+ import type { ViewComponentProps } from './View/ViewProps.generated';
45
+ import BIcon from './BIcon/BIcon';
15
46
  import BackgroundImage from './BackgroundImage/BackgroundImage';
16
47
  import Button from './Button/Button';
17
48
  import Carousel from './Carousel/Carousel';
@@ -20,6 +51,7 @@ import CarouselDots from './CarouselDots/CarouselDots';
20
51
  import CarouselItem from './CarouselItem/CarouselItem';
21
52
  import CarouselProvider from './CarouselProvider/CarouselProvider';
22
53
  import Image from './Image/Image';
54
+ import Main from './Main/Main';
23
55
  import Onboard from './Onboard/Onboard';
24
56
  import OnboardButton from './OnboardButton/OnboardButton';
25
57
  import OnboardButtons from './OnboardButtons/OnboardButtons';
@@ -30,15 +62,57 @@ import OnboardItem from './OnboardItem/OnboardItem';
30
62
  import OnboardProvider from './OnboardProvider/OnboardProvider';
31
63
  import OnboardSubtitle from './OnboardSubtitle/OnboardSubtitle';
32
64
  import OnboardTitle from './OnboardTitle/OnboardTitle';
65
+ import PaywallBackground from './PaywallBackground/PaywallBackground';
66
+ import PaywallCloseButton from './PaywallCloseButton/PaywallCloseButton';
67
+ import PaywallOptions from './PaywallOptions/PaywallOptions';
68
+ import PaywallProvider from './PaywallProvider/PaywallProvider';
69
+ import PaywallSubscriButton from './PaywallSubscriButton/PaywallSubscriButton';
70
+ import PaywallSubscribeButton from './PaywallSubscribeButton/PaywallSubscribeButton';
71
+ import RadioButton from './RadioButton/RadioButton';
33
72
  import Text from './Text/Text';
34
73
  import View from './View/View';
35
74
 
75
+ type BuilderNode =
76
+ | (BIconComponentProps['node'] & { type: 'BIcon' })
77
+ | (BackgroundImageComponentProps['node'] & { type: 'BackgroundImage' })
78
+ | (ButtonComponentProps['node'] & { type: 'Button' })
79
+ | (CarouselComponentProps['node'] & { type: 'Carousel' })
80
+ | (CarouselButtonsComponentProps['node'] & { type: 'CarouselButtons' })
81
+ | (CarouselDotsComponentProps['node'] & { type: 'CarouselDots' })
82
+ | (CarouselItemComponentProps['node'] & { type: 'CarouselItem' })
83
+ | (CarouselProviderComponentProps['node'] & { type: 'CarouselProvider' })
84
+ | (ImageComponentProps['node'] & { type: 'Image' })
85
+ | (MainComponentProps['node'] & { type: 'Main' })
86
+ | (OnboardComponentProps['node'] & { type: 'Onboard' })
87
+ | (OnboardButtonComponentProps['node'] & { type: 'OnboardButton' })
88
+ | (OnboardButtonsComponentProps['node'] & { type: 'OnboardButtons' })
89
+ | (OnboardDotComponentProps['node'] & { type: 'OnboardDot' })
90
+ | (OnboardFooterComponentProps['node'] & { type: 'OnboardFooter' })
91
+ | (OnboardImageComponentProps['node'] & { type: 'OnboardImage' })
92
+ | (OnboardItemComponentProps['node'] & { type: 'OnboardItem' })
93
+ | (OnboardProviderComponentProps['node'] & { type: 'OnboardProvider' })
94
+ | (OnboardSubtitleComponentProps['node'] & { type: 'OnboardSubtitle' })
95
+ | (OnboardTitleComponentProps['node'] & { type: 'OnboardTitle' })
96
+ | (PaywallBackgroundComponentProps['node'] & { type: 'PaywallBackground' })
97
+ | (PaywallCloseButtonComponentProps['node'] & { type: 'PaywallCloseButton' })
98
+ | (PaywallOptionsComponentProps['node'] & { type: 'PaywallOptions' })
99
+ | (PaywallProviderComponentProps['node'] & { type: 'PaywallProvider' })
100
+ | (PaywallSubscriButtonComponentProps['node'] & {
101
+ type: 'PaywallSubscriButton';
102
+ })
103
+ | (PaywallSubscribeButtonComponentProps['node'] & {
104
+ type: 'PaywallSubscribeButton';
105
+ })
106
+ | (RadioButtonComponentProps['node'] & { type: 'RadioButton' })
107
+ | (TextComponentProps['node'] & { type: 'Text' })
108
+ | (ViewComponentProps['node'] & { type: 'View' });
109
+
36
110
  function RenderNode({ node }: { node: Node }) {
37
111
  if (isNodeNullOrUndefined(node)) {
38
112
  return null;
39
113
  }
40
114
  if (isNodeString(node)) {
41
- return <Text node={{ children: node as string, type: 'text' }} />;
115
+ return <Text node={{ children: node as string, type: 'Text' }} />;
42
116
  }
43
117
  if (isNodeArray(node)) {
44
118
  return (
@@ -50,50 +124,79 @@ function RenderNode({ node }: { node: Node }) {
50
124
  );
51
125
  }
52
126
 
53
- const simpleNode = node as NodeData;
54
- switch (simpleNode?.type) {
55
- case 'background-image':
56
- return <BackgroundImage node={simpleNode} />;
57
- case 'button':
58
- return <Button node={simpleNode} />;
59
- case 'carousel':
60
- return <Carousel node={simpleNode} />;
61
- case 'carouselButtons':
62
- return <CarouselButtons node={simpleNode} />;
63
- case 'carouselDots':
64
- return <CarouselDots node={simpleNode} />;
65
- case 'carouselItem':
66
- return <CarouselItem node={simpleNode} />;
67
- case 'carouselProvider':
68
- return <CarouselProvider node={simpleNode} />;
69
- case 'image':
70
- return <Image node={simpleNode} />;
127
+ const nodeType =
128
+ typeof (node as { type?: unknown })?.type === 'string'
129
+ ? (node as { type: string }).type
130
+ : 'unknown';
131
+
132
+ const normalizedType = normalizeComponentType(nodeType) ?? nodeType;
133
+
134
+ // Force a stable discriminant so TS can narrow the BuilderNode union.
135
+ const normalizedNode = {
136
+ ...(node as any),
137
+ type: normalizedType,
138
+ } as BuilderNode;
139
+ switch (normalizedNode.type) {
140
+ case 'BIcon':
141
+ return <BIcon node={normalizedNode} />;
142
+ case 'BackgroundImage':
143
+ return <BackgroundImage node={normalizedNode} />;
144
+ case 'Button':
145
+ return <Button node={normalizedNode} />;
146
+ case 'Carousel':
147
+ return <Carousel node={normalizedNode} />;
148
+ case 'CarouselButtons':
149
+ return <CarouselButtons node={normalizedNode} />;
150
+ case 'CarouselDots':
151
+ return <CarouselDots node={normalizedNode} />;
152
+ case 'CarouselItem':
153
+ return <CarouselItem node={normalizedNode} />;
154
+ case 'CarouselProvider':
155
+ return <CarouselProvider node={normalizedNode} />;
156
+ case 'Image':
157
+ return <Image node={normalizedNode} />;
158
+ case 'Main':
159
+ return <Main node={normalizedNode} />;
71
160
  case 'Onboard':
72
- return <Onboard node={simpleNode} />;
161
+ return <Onboard node={normalizedNode} />;
73
162
  case 'OnboardButton':
74
- return <OnboardButton node={simpleNode} />;
163
+ return <OnboardButton node={normalizedNode} />;
75
164
  case 'OnboardButtons':
76
- return <OnboardButtons node={simpleNode} />;
165
+ return <OnboardButtons node={normalizedNode} />;
77
166
  case 'OnboardDot':
78
- return <OnboardDot node={simpleNode} />;
167
+ return <OnboardDot node={normalizedNode} />;
79
168
  case 'OnboardFooter':
80
- return <OnboardFooter node={simpleNode} />;
169
+ return <OnboardFooter node={normalizedNode} />;
81
170
  case 'OnboardImage':
82
- return <OnboardImage node={simpleNode} />;
171
+ return <OnboardImage node={normalizedNode} />;
83
172
  case 'OnboardItem':
84
- return <OnboardItem node={simpleNode} />;
173
+ return <OnboardItem node={normalizedNode} />;
85
174
  case 'OnboardProvider':
86
- return <OnboardProvider node={simpleNode} />;
175
+ return <OnboardProvider node={normalizedNode} />;
87
176
  case 'OnboardSubtitle':
88
- return <OnboardSubtitle node={simpleNode} />;
177
+ return <OnboardSubtitle node={normalizedNode} />;
89
178
  case 'OnboardTitle':
90
- return <OnboardTitle node={simpleNode} />;
91
- case 'text':
92
- return <Text node={simpleNode} />;
93
- case 'view':
94
- return <View node={simpleNode} />;
179
+ return <OnboardTitle node={normalizedNode} />;
180
+ case 'PaywallBackground':
181
+ return <PaywallBackground node={normalizedNode} />;
182
+ case 'PaywallCloseButton':
183
+ return <PaywallCloseButton node={normalizedNode} />;
184
+ case 'PaywallOptions':
185
+ return <PaywallOptions node={normalizedNode} />;
186
+ case 'PaywallProvider':
187
+ return <PaywallProvider node={normalizedNode} />;
188
+ case 'PaywallSubscriButton':
189
+ return <PaywallSubscriButton node={normalizedNode} />;
190
+ case 'PaywallSubscribeButton':
191
+ return <PaywallSubscribeButton node={normalizedNode} />;
192
+ case 'RadioButton':
193
+ return <RadioButton node={normalizedNode} />;
194
+ case 'Text':
195
+ return <Text node={normalizedNode} />;
196
+ case 'View':
197
+ return <View node={normalizedNode} />;
95
198
  default:
96
- return other(simpleNode?.type, node);
199
+ return other(nodeType, node);
97
200
  }
98
201
  }
99
202
 
@@ -6,6 +6,7 @@ import { extractTextStyle } from '../../utils/extractTextStyle';
6
6
  import { useLogRender } from '../../utils/useLogRender';
7
7
  import { isNodeSelected, SELECTED_OUTLINE_STYLE } from '../../utils/selection';
8
8
  import { useMergedStyle } from '../../utils/useMergedStyle';
9
+ import { useLocalize } from '../../hooks/useLocalize';
9
10
 
10
11
  function Text({ node }: TextComponentProps) {
11
12
  useLogRender('Text');
@@ -21,7 +22,6 @@ function Text({ node }: TextComponentProps) {
21
22
  current: s.current,
22
23
  }),
23
24
  );
24
- const { defaultLanguage, localication } = appConfig;
25
25
  const keyOrText: string = node.children as string;
26
26
  const textStyle = useMemo(
27
27
  () => extractTextStyle(node, { appConfig, projectColors }),
@@ -32,14 +32,14 @@ function Text({ node }: TextComponentProps) {
32
32
  textStyle,
33
33
  isSelected ? SELECTED_OUTLINE_STYLE : undefined,
34
34
  );
35
-
35
+ const localize = useLocalize();
36
36
  return (
37
37
  <p
38
38
  attribute-name={attributeName}
39
39
  attribute-key={attributeKey}
40
40
  style={style}
41
41
  >
42
- {localication?.[defaultLanguage ?? 'en']?.[keyOrText] ?? keyOrText}
42
+ {localize(keyOrText)}
43
43
  </p>
44
44
  );
45
45
  }
@@ -55,7 +55,11 @@ export interface TextPropsGenerated {
55
55
  backgroundColor?: string;
56
56
  borderRadius?: string;
57
57
  width?: string;
58
+ minWidth?: string;
59
+ maxWidth?: string;
58
60
  height?: string;
61
+ minHeight?: string;
62
+ maxHeight?: string;
59
63
  flex?: number;
60
64
  position?: PositionOptionType;
61
65
  top?: string;
@@ -2,7 +2,7 @@
2
2
  "schemaVersion": 1,
3
3
  "allowUnknownAttributes": false,
4
4
  "pattern": {
5
- "type": "text",
5
+ "type": "Text",
6
6
  "children": "string",
7
7
  "extends": "View",
8
8
  "attributes": {
@@ -42,7 +42,11 @@ export interface ViewPropsGenerated {
42
42
  backgroundColor?: string;
43
43
  borderRadius?: string;
44
44
  width?: string;
45
+ minWidth?: string;
46
+ maxWidth?: string;
45
47
  height?: string;
48
+ minHeight?: string;
49
+ maxHeight?: string;
46
50
  flex?: number;
47
51
  position?: PositionOptionType;
48
52
  top?: string;
@@ -2,7 +2,7 @@
2
2
  "schemaVersion": 1,
3
3
  "allowUnknownAttributes": false,
4
4
  "pattern": {
5
- "type": "view",
5
+ "type": "View",
6
6
  "children": ["node", "array"],
7
7
  "attributes": {
8
8
  "scrollable": "boolean",
@@ -33,7 +33,11 @@
33
33
  "backgroundColor": "color",
34
34
  "borderRadius": "size",
35
35
  "width": "size",
36
+ "minWidth": "size",
37
+ "maxWidth": "size",
36
38
  "height": "size",
39
+ "minHeight": "size",
40
+ "maxHeight": "size",
37
41
  "flex": "number",
38
42
  "position": ["relative", "absolute"],
39
43
  "top": "size",
@@ -43,7 +47,9 @@
43
47
  "zIndex": "number"
44
48
  },
45
49
  "defaults": {
46
- "flexDirection": "column"
50
+ "flexDirection": "column",
51
+ "position": "relative",
52
+ "zIndex": 1
47
53
  }
48
54
  },
49
55
  "meta": {
@@ -248,12 +254,44 @@
248
254
  "sort": 0,
249
255
  "preferedScale": "s"
250
256
  },
257
+ "minWidth": {
258
+ "label": "Min Width",
259
+ "description": "Minimum width constraint.",
260
+ "category": "container",
261
+ "specialCategory": "size",
262
+ "sort": 1,
263
+ "preferedScale": "s"
264
+ },
265
+ "maxWidth": {
266
+ "label": "Max Width",
267
+ "description": "Maximum width constraint.",
268
+ "category": "container",
269
+ "specialCategory": "size",
270
+ "sort": 2,
271
+ "preferedScale": "s"
272
+ },
251
273
  "height": {
252
274
  "label": "Height",
253
275
  "description": "Fixed height value.",
254
276
  "category": "container",
255
277
  "specialCategory": "size",
256
- "sort": 1,
278
+ "sort": 3,
279
+ "preferedScale": "vs"
280
+ },
281
+ "minHeight": {
282
+ "label": "Min Height",
283
+ "description": "Minimum height constraint.",
284
+ "category": "container",
285
+ "specialCategory": "size",
286
+ "sort": 4,
287
+ "preferedScale": "vs"
288
+ },
289
+ "maxHeight": {
290
+ "label": "Max Height",
291
+ "description": "Maximum height constraint.",
292
+ "category": "container",
293
+ "specialCategory": "size",
294
+ "sort": 5,
257
295
  "preferedScale": "vs"
258
296
  },
259
297
  "flex": {
@@ -261,7 +299,7 @@
261
299
  "description": "Flex grow factor (e.g. 1 fills available space).",
262
300
  "category": "container",
263
301
  "specialCategory": "size",
264
- "sort": 2
302
+ "sort": 6
265
303
  },
266
304
  "position": {
267
305
  "label": "Position",
@@ -5,14 +5,16 @@ export { default as RenderNode } from './RenderNode.generated';
5
5
  export { patterns } from './patterns.generated';
6
6
 
7
7
  export const allcomponentNames = [
8
- 'background-image',
9
- 'button',
10
- 'carousel',
11
- 'carouselButtons',
12
- 'carouselDots',
13
- 'carouselItem',
14
- 'carouselProvider',
15
- 'image',
8
+ 'BIcon',
9
+ 'BackgroundImage',
10
+ 'Button',
11
+ 'Carousel',
12
+ 'CarouselButtons',
13
+ 'CarouselDots',
14
+ 'CarouselItem',
15
+ 'CarouselProvider',
16
+ 'Image',
17
+ 'Main',
16
18
  'Onboard',
17
19
  'OnboardButton',
18
20
  'OnboardButtons',
@@ -23,10 +25,21 @@ export const allcomponentNames = [
23
25
  'OnboardProvider',
24
26
  'OnboardSubtitle',
25
27
  'OnboardTitle',
26
- 'text',
27
- 'view',
28
+ 'PaywallBackground',
29
+ 'PaywallCloseButton',
30
+ 'PaywallOptions',
31
+ 'PaywallProvider',
32
+ 'PaywallSubscriButton',
33
+ 'PaywallSubscribeButton',
34
+ 'RadioButton',
35
+ 'Text',
36
+ 'View',
28
37
  ] as const;
29
38
 
39
+ export type {
40
+ BIconPropsGenerated,
41
+ BIconComponentProps,
42
+ } from './BIcon/BIconProps.generated';
30
43
  export type {
31
44
  BackgroundImagePropsGenerated,
32
45
  BackgroundImageComponentProps,
@@ -59,6 +72,10 @@ export type {
59
72
  ImagePropsGenerated,
60
73
  ImageComponentProps,
61
74
  } from './Image/ImageProps.generated';
75
+ export type {
76
+ MainPropsGenerated,
77
+ MainComponentProps,
78
+ } from './Main/MainProps.generated';
62
79
  export type {
63
80
  OnboardPropsGenerated,
64
81
  OnboardComponentProps,
@@ -99,6 +116,34 @@ export type {
99
116
  OnboardTitlePropsGenerated,
100
117
  OnboardTitleComponentProps,
101
118
  } from './OnboardTitle/OnboardTitleProps.generated';
119
+ export type {
120
+ PaywallBackgroundPropsGenerated,
121
+ PaywallBackgroundComponentProps,
122
+ } from './PaywallBackground/PaywallBackgroundProps.generated';
123
+ export type {
124
+ PaywallCloseButtonPropsGenerated,
125
+ PaywallCloseButtonComponentProps,
126
+ } from './PaywallCloseButton/PaywallCloseButtonProps.generated';
127
+ export type {
128
+ PaywallOptionsPropsGenerated,
129
+ PaywallOptionsComponentProps,
130
+ } from './PaywallOptions/PaywallOptionsProps.generated';
131
+ export type {
132
+ PaywallProviderPropsGenerated,
133
+ PaywallProviderComponentProps,
134
+ } from './PaywallProvider/PaywallProviderProps.generated';
135
+ export type {
136
+ PaywallSubscriButtonPropsGenerated,
137
+ PaywallSubscriButtonComponentProps,
138
+ } from './PaywallSubscriButton/PaywallSubscriButtonProps.generated';
139
+ export type {
140
+ PaywallSubscribeButtonPropsGenerated,
141
+ PaywallSubscribeButtonComponentProps,
142
+ } from './PaywallSubscribeButton/PaywallSubscribeButtonProps.generated';
143
+ export type {
144
+ RadioButtonPropsGenerated,
145
+ RadioButtonComponentProps,
146
+ } from './RadioButton/RadioButtonProps.generated';
102
147
  export type {
103
148
  TextPropsGenerated,
104
149
  TextComponentProps,