@whop/elements-react-native 0.1.0

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 (339) hide show
  1. package/README.md +179 -0
  2. package/android/build.gradle +64 -0
  3. package/android/consumer-rules.pro +3 -0
  4. package/android/gradle.properties +5 -0
  5. package/android/src/main/java/com/whop/elements/WhopAddressSuggestionsModule.kt +102 -0
  6. package/android/src/main/java/com/whop/elements/WhopAuthSessionModule.kt +126 -0
  7. package/android/src/main/java/com/whop/elements/WhopElementsPackage.kt +39 -0
  8. package/android/src/main/java/com/whop/elements/WhopPayButtonManager.kt +74 -0
  9. package/android/src/main/java/com/whop/elements/WhopPayButtonPressEvent.kt +17 -0
  10. package/android/src/main/java/com/whop/elements/WhopPayButtonView.kt +178 -0
  11. package/android/src/main/java/com/whop/elements/WhopPlatformPayModule.kt +212 -0
  12. package/assets/whop-wordmark-dark.png +0 -0
  13. package/assets/whop-wordmark-dark@2x.png +0 -0
  14. package/assets/whop-wordmark-dark@3x.png +0 -0
  15. package/assets/whop-wordmark-light.png +0 -0
  16. package/assets/whop-wordmark-light@2x.png +0 -0
  17. package/assets/whop-wordmark-light@3x.png +0 -0
  18. package/ios/Package.swift +59 -0
  19. package/ios/Sources/ElementsReactNative/WhopAddressSuggestionsImpl.swift +189 -0
  20. package/ios/Sources/ElementsReactNative/WhopAuthSessionImpl.swift +106 -0
  21. package/ios/Sources/ElementsReactNative/WhopPayButtonImpl.swift +89 -0
  22. package/ios/Sources/ElementsReactNative/WhopPlatformPayImpl.swift +181 -0
  23. package/ios/generated/WhopAddressSuggestionsModule.h +11 -0
  24. package/ios/generated/WhopAddressSuggestionsModule.mm +46 -0
  25. package/ios/generated/WhopAuthSessionModule.h +11 -0
  26. package/ios/generated/WhopAuthSessionModule.mm +45 -0
  27. package/ios/generated/WhopElementsShims.h +35 -0
  28. package/ios/generated/WhopPayButtonComponentView.h +12 -0
  29. package/ios/generated/WhopPayButtonComponentView.mm +82 -0
  30. package/ios/generated/WhopPlatformPayModule.h +11 -0
  31. package/ios/generated/WhopPlatformPayModule.mm +51 -0
  32. package/lib/module/api/client.js +139 -0
  33. package/lib/module/api/client.js.map +1 -0
  34. package/lib/module/api/client.test.js +137 -0
  35. package/lib/module/api/client.test.js.map +1 -0
  36. package/lib/module/api/types.js +2 -0
  37. package/lib/module/api/types.js.map +1 -0
  38. package/lib/module/controller/actions.js +148 -0
  39. package/lib/module/controller/actions.js.map +1 -0
  40. package/lib/module/controller/actions.test.js +102 -0
  41. package/lib/module/controller/actions.test.js.map +1 -0
  42. package/lib/module/controller/store.js +158 -0
  43. package/lib/module/controller/store.js.map +1 -0
  44. package/lib/module/core/address/country-data.js +1370 -0
  45. package/lib/module/core/address/country-data.js.map +1 -0
  46. package/lib/module/core/address/country-name.js +38 -0
  47. package/lib/module/core/address/country-name.js.map +1 -0
  48. package/lib/module/core/address/country-names.generated.js +249 -0
  49. package/lib/module/core/address/country-names.generated.js.map +1 -0
  50. package/lib/module/core/address/engine.js +245 -0
  51. package/lib/module/core/address/engine.js.map +1 -0
  52. package/lib/module/core/address/engine.test.js +216 -0
  53. package/lib/module/core/address/engine.test.js.map +1 -0
  54. package/lib/module/core/address/form-state.js +409 -0
  55. package/lib/module/core/address/form-state.js.map +1 -0
  56. package/lib/module/core/address/form-state.test.js +516 -0
  57. package/lib/module/core/address/form-state.test.js.map +1 -0
  58. package/lib/module/core/address/places.js +36 -0
  59. package/lib/module/core/address/places.js.map +1 -0
  60. package/lib/module/core/address/required-coverage.test.js +57 -0
  61. package/lib/module/core/address/required-coverage.test.js.map +1 -0
  62. package/lib/module/core/address/suggest.js +102 -0
  63. package/lib/module/core/address/suggest.js.map +1 -0
  64. package/lib/module/core/address/suggest.test.js +156 -0
  65. package/lib/module/core/address/suggest.test.js.map +1 -0
  66. package/lib/module/core/address/use-suggestions.js +33 -0
  67. package/lib/module/core/address/use-suggestions.js.map +1 -0
  68. package/lib/module/core/payments/address-change.js +91 -0
  69. package/lib/module/core/payments/address-change.js.map +1 -0
  70. package/lib/module/core/payments/billing-merge.js +62 -0
  71. package/lib/module/core/payments/billing-merge.js.map +1 -0
  72. package/lib/module/core/payments/browser-info.js +42 -0
  73. package/lib/module/core/payments/browser-info.js.map +1 -0
  74. package/lib/module/core/payments/bt.js +151 -0
  75. package/lib/module/core/payments/bt.js.map +1 -0
  76. package/lib/module/core/payments/bt.test.js +23 -0
  77. package/lib/module/core/payments/bt.test.js.map +1 -0
  78. package/lib/module/core/payments/currency.js +37 -0
  79. package/lib/module/core/payments/currency.js.map +1 -0
  80. package/lib/module/core/payments/detail.js +159 -0
  81. package/lib/module/core/payments/detail.js.map +1 -0
  82. package/lib/module/core/payments/detail.test.js +225 -0
  83. package/lib/module/core/payments/detail.test.js.map +1 -0
  84. package/lib/module/core/payments/errors.js +115 -0
  85. package/lib/module/core/payments/errors.js.map +1 -0
  86. package/lib/module/core/payments/mint.js +89 -0
  87. package/lib/module/core/payments/mint.js.map +1 -0
  88. package/lib/module/core/payments/plan.js +131 -0
  89. package/lib/module/core/payments/plan.js.map +1 -0
  90. package/lib/module/core/payments/refusals.js +17 -0
  91. package/lib/module/core/payments/refusals.js.map +1 -0
  92. package/lib/module/core/payments/secure-fields.js +87 -0
  93. package/lib/module/core/payments/secure-fields.js.map +1 -0
  94. package/lib/module/core/payments/tax-id-catalog.js +616 -0
  95. package/lib/module/core/payments/tax-id-catalog.js.map +1 -0
  96. package/lib/module/core/payments/wallet-contact.js +42 -0
  97. package/lib/module/core/payments/wallet-contact.js.map +1 -0
  98. package/lib/module/core/payments/wallet-contact.test.js +77 -0
  99. package/lib/module/core/payments/wallet-contact.test.js.map +1 -0
  100. package/lib/module/elements/address.js +467 -0
  101. package/lib/module/elements/address.js.map +1 -0
  102. package/lib/module/elements/branding.js +114 -0
  103. package/lib/module/elements/branding.js.map +1 -0
  104. package/lib/module/elements/card-fields/context.js +254 -0
  105. package/lib/module/elements/card-fields/context.js.map +1 -0
  106. package/lib/module/elements/card-fields/fields.js +309 -0
  107. package/lib/module/elements/card-fields/fields.js.map +1 -0
  108. package/lib/module/elements/card-fields/index.js +30 -0
  109. package/lib/module/elements/card-fields/index.js.map +1 -0
  110. package/lib/module/elements/card.js +107 -0
  111. package/lib/module/elements/card.js.map +1 -0
  112. package/lib/module/elements/email.js +84 -0
  113. package/lib/module/elements/email.js.map +1 -0
  114. package/lib/module/elements/payment/declared-fields.js +186 -0
  115. package/lib/module/elements/payment/declared-fields.js.map +1 -0
  116. package/lib/module/elements/payment/index.js +448 -0
  117. package/lib/module/elements/payment/index.js.map +1 -0
  118. package/lib/module/elements/payment/wallet.js +132 -0
  119. package/lib/module/elements/payment/wallet.js.map +1 -0
  120. package/lib/module/elements/tax-id.js +100 -0
  121. package/lib/module/elements/tax-id.js.map +1 -0
  122. package/lib/module/i18n/catalogs.js +103 -0
  123. package/lib/module/i18n/catalogs.js.map +1 -0
  124. package/lib/module/i18n/index.js +45 -0
  125. package/lib/module/i18n/index.js.map +1 -0
  126. package/lib/module/index.js +27 -0
  127. package/lib/module/index.js.map +1 -0
  128. package/lib/module/namespace.js +174 -0
  129. package/lib/module/namespace.js.map +1 -0
  130. package/lib/module/native/index.js +128 -0
  131. package/lib/module/native/index.js.map +1 -0
  132. package/lib/module/package.json +1 -0
  133. package/lib/module/provider.js +56 -0
  134. package/lib/module/provider.js.map +1 -0
  135. package/lib/module/specs/NativeWhopAddressSuggestions.js +6 -0
  136. package/lib/module/specs/NativeWhopAddressSuggestions.js.map +1 -0
  137. package/lib/module/specs/NativeWhopAuthSession.js +10 -0
  138. package/lib/module/specs/NativeWhopAuthSession.js.map +1 -0
  139. package/lib/module/specs/NativeWhopPlatformPay.js +10 -0
  140. package/lib/module/specs/NativeWhopPlatformPay.js.map +1 -0
  141. package/lib/module/specs/WhopPayButtonNativeComponent.ts +22 -0
  142. package/lib/module/theme/appearance.js +85 -0
  143. package/lib/module/theme/appearance.js.map +1 -0
  144. package/lib/module/theme/appearance.test.js +124 -0
  145. package/lib/module/theme/appearance.test.js.map +1 -0
  146. package/lib/module/theme/provider.js +25 -0
  147. package/lib/module/theme/provider.js.map +1 -0
  148. package/lib/module/theme/resolve.js +69 -0
  149. package/lib/module/theme/resolve.js.map +1 -0
  150. package/lib/module/theme/scales.generated.js +419 -0
  151. package/lib/module/theme/scales.generated.js.map +1 -0
  152. package/lib/module/ui/element-frame.js +83 -0
  153. package/lib/module/ui/element-frame.js.map +1 -0
  154. package/lib/module/ui/payment-method-icon.js +69 -0
  155. package/lib/module/ui/payment-method-icon.js.map +1 -0
  156. package/lib/module/ui/primitives.js +266 -0
  157. package/lib/module/ui/primitives.js.map +1 -0
  158. package/lib/module/ui/select.js +281 -0
  159. package/lib/module/ui/select.js.map +1 -0
  160. package/lib/module/ui/suggestions.js +71 -0
  161. package/lib/module/ui/suggestions.js.map +1 -0
  162. package/lib/module/ui/whop-logo.js +42 -0
  163. package/lib/module/ui/whop-logo.js.map +1 -0
  164. package/lib/typescript/package.json +1 -0
  165. package/lib/typescript/src/api/client.d.ts +87 -0
  166. package/lib/typescript/src/api/client.d.ts.map +1 -0
  167. package/lib/typescript/src/api/types.d.ts +175 -0
  168. package/lib/typescript/src/api/types.d.ts.map +1 -0
  169. package/lib/typescript/src/controller/actions.d.ts +42 -0
  170. package/lib/typescript/src/controller/actions.d.ts.map +1 -0
  171. package/lib/typescript/src/controller/store.d.ts +90 -0
  172. package/lib/typescript/src/controller/store.d.ts.map +1 -0
  173. package/lib/typescript/src/core/address/country-data.d.ts +4 -0
  174. package/lib/typescript/src/core/address/country-data.d.ts.map +1 -0
  175. package/lib/typescript/src/core/address/country-name.d.ts +2 -0
  176. package/lib/typescript/src/core/address/country-name.d.ts.map +1 -0
  177. package/lib/typescript/src/core/address/country-names.generated.d.ts +2 -0
  178. package/lib/typescript/src/core/address/country-names.generated.d.ts.map +1 -0
  179. package/lib/typescript/src/core/address/engine.d.ts +97 -0
  180. package/lib/typescript/src/core/address/engine.d.ts.map +1 -0
  181. package/lib/typescript/src/core/address/form-state.d.ts +144 -0
  182. package/lib/typescript/src/core/address/form-state.d.ts.map +1 -0
  183. package/lib/typescript/src/core/address/places.d.ts +23 -0
  184. package/lib/typescript/src/core/address/places.d.ts.map +1 -0
  185. package/lib/typescript/src/core/address/suggest.d.ts +47 -0
  186. package/lib/typescript/src/core/address/suggest.d.ts.map +1 -0
  187. package/lib/typescript/src/core/address/use-suggestions.d.ts +3 -0
  188. package/lib/typescript/src/core/address/use-suggestions.d.ts.map +1 -0
  189. package/lib/typescript/src/core/payments/address-change.d.ts +52 -0
  190. package/lib/typescript/src/core/payments/address-change.d.ts.map +1 -0
  191. package/lib/typescript/src/core/payments/billing-merge.d.ts +39 -0
  192. package/lib/typescript/src/core/payments/billing-merge.d.ts.map +1 -0
  193. package/lib/typescript/src/core/payments/browser-info.d.ts +12 -0
  194. package/lib/typescript/src/core/payments/browser-info.d.ts.map +1 -0
  195. package/lib/typescript/src/core/payments/bt.d.ts +55 -0
  196. package/lib/typescript/src/core/payments/bt.d.ts.map +1 -0
  197. package/lib/typescript/src/core/payments/currency.d.ts +7 -0
  198. package/lib/typescript/src/core/payments/currency.d.ts.map +1 -0
  199. package/lib/typescript/src/core/payments/detail.d.ts +53 -0
  200. package/lib/typescript/src/core/payments/detail.d.ts.map +1 -0
  201. package/lib/typescript/src/core/payments/errors.d.ts +62 -0
  202. package/lib/typescript/src/core/payments/errors.d.ts.map +1 -0
  203. package/lib/typescript/src/core/payments/mint.d.ts +74 -0
  204. package/lib/typescript/src/core/payments/mint.d.ts.map +1 -0
  205. package/lib/typescript/src/core/payments/plan.d.ts +69 -0
  206. package/lib/typescript/src/core/payments/plan.d.ts.map +1 -0
  207. package/lib/typescript/src/core/payments/refusals.d.ts +12 -0
  208. package/lib/typescript/src/core/payments/refusals.d.ts.map +1 -0
  209. package/lib/typescript/src/core/payments/secure-fields.d.ts +33 -0
  210. package/lib/typescript/src/core/payments/secure-fields.d.ts.map +1 -0
  211. package/lib/typescript/src/core/payments/tax-id-catalog.d.ts +481 -0
  212. package/lib/typescript/src/core/payments/tax-id-catalog.d.ts.map +1 -0
  213. package/lib/typescript/src/core/payments/wallet-contact.d.ts +40 -0
  214. package/lib/typescript/src/core/payments/wallet-contact.d.ts.map +1 -0
  215. package/lib/typescript/src/elements/address.d.ts +55 -0
  216. package/lib/typescript/src/elements/address.d.ts.map +1 -0
  217. package/lib/typescript/src/elements/branding.d.ts +18 -0
  218. package/lib/typescript/src/elements/branding.d.ts.map +1 -0
  219. package/lib/typescript/src/elements/card-fields/context.d.ts +67 -0
  220. package/lib/typescript/src/elements/card-fields/context.d.ts.map +1 -0
  221. package/lib/typescript/src/elements/card-fields/fields.d.ts +15 -0
  222. package/lib/typescript/src/elements/card-fields/fields.d.ts.map +1 -0
  223. package/lib/typescript/src/elements/card-fields/index.d.ts +21 -0
  224. package/lib/typescript/src/elements/card-fields/index.d.ts.map +1 -0
  225. package/lib/typescript/src/elements/card.d.ts +21 -0
  226. package/lib/typescript/src/elements/card.d.ts.map +1 -0
  227. package/lib/typescript/src/elements/email.d.ts +31 -0
  228. package/lib/typescript/src/elements/email.d.ts.map +1 -0
  229. package/lib/typescript/src/elements/payment/declared-fields.d.ts +43 -0
  230. package/lib/typescript/src/elements/payment/declared-fields.d.ts.map +1 -0
  231. package/lib/typescript/src/elements/payment/index.d.ts +37 -0
  232. package/lib/typescript/src/elements/payment/index.d.ts.map +1 -0
  233. package/lib/typescript/src/elements/payment/wallet.d.ts +39 -0
  234. package/lib/typescript/src/elements/payment/wallet.d.ts.map +1 -0
  235. package/lib/typescript/src/elements/tax-id.d.ts +41 -0
  236. package/lib/typescript/src/elements/tax-id.d.ts.map +1 -0
  237. package/lib/typescript/src/i18n/catalogs.d.ts +7 -0
  238. package/lib/typescript/src/i18n/catalogs.d.ts.map +1 -0
  239. package/lib/typescript/src/i18n/index.d.ts +17 -0
  240. package/lib/typescript/src/i18n/index.d.ts.map +1 -0
  241. package/lib/typescript/src/index.d.ts +42 -0
  242. package/lib/typescript/src/index.d.ts.map +1 -0
  243. package/lib/typescript/src/namespace.d.ts +36 -0
  244. package/lib/typescript/src/namespace.d.ts.map +1 -0
  245. package/lib/typescript/src/native/index.d.ts +62 -0
  246. package/lib/typescript/src/native/index.d.ts.map +1 -0
  247. package/lib/typescript/src/provider.d.ts +37 -0
  248. package/lib/typescript/src/provider.d.ts.map +1 -0
  249. package/lib/typescript/src/specs/NativeWhopAddressSuggestions.d.ts +13 -0
  250. package/lib/typescript/src/specs/NativeWhopAddressSuggestions.d.ts.map +1 -0
  251. package/lib/typescript/src/specs/NativeWhopAuthSession.d.ts +20 -0
  252. package/lib/typescript/src/specs/NativeWhopAuthSession.d.ts.map +1 -0
  253. package/lib/typescript/src/specs/NativeWhopPlatformPay.d.ts +24 -0
  254. package/lib/typescript/src/specs/NativeWhopPlatformPay.d.ts.map +1 -0
  255. package/lib/typescript/src/specs/WhopPayButtonNativeComponent.d.ts +21 -0
  256. package/lib/typescript/src/specs/WhopPayButtonNativeComponent.d.ts.map +1 -0
  257. package/lib/typescript/src/theme/appearance.d.ts +71 -0
  258. package/lib/typescript/src/theme/appearance.d.ts.map +1 -0
  259. package/lib/typescript/src/theme/provider.d.ts +11 -0
  260. package/lib/typescript/src/theme/provider.d.ts.map +1 -0
  261. package/lib/typescript/src/theme/resolve.d.ts +19 -0
  262. package/lib/typescript/src/theme/resolve.d.ts.map +1 -0
  263. package/lib/typescript/src/theme/scales.generated.d.ts +18 -0
  264. package/lib/typescript/src/theme/scales.generated.d.ts.map +1 -0
  265. package/lib/typescript/src/ui/element-frame.d.ts +32 -0
  266. package/lib/typescript/src/ui/element-frame.d.ts.map +1 -0
  267. package/lib/typescript/src/ui/payment-method-icon.d.ts +21 -0
  268. package/lib/typescript/src/ui/payment-method-icon.d.ts.map +1 -0
  269. package/lib/typescript/src/ui/primitives.d.ts +94 -0
  270. package/lib/typescript/src/ui/primitives.d.ts.map +1 -0
  271. package/lib/typescript/src/ui/select.d.ts +25 -0
  272. package/lib/typescript/src/ui/select.d.ts.map +1 -0
  273. package/lib/typescript/src/ui/suggestions.d.ts +15 -0
  274. package/lib/typescript/src/ui/suggestions.d.ts.map +1 -0
  275. package/lib/typescript/src/ui/whop-logo.d.ts +4 -0
  276. package/lib/typescript/src/ui/whop-logo.d.ts.map +1 -0
  277. package/package.json +121 -0
  278. package/scripts/check-swift.sh +27 -0
  279. package/scripts/codegen-shims.mjs +409 -0
  280. package/scripts/gen-country-names.mjs +58 -0
  281. package/scripts/gen-theme.mjs +124 -0
  282. package/scripts/gen-wordmark.mjs +68 -0
  283. package/scripts/mirror.mjs +112 -0
  284. package/src/api/client.ts +202 -0
  285. package/src/api/types.ts +166 -0
  286. package/src/controller/actions.ts +197 -0
  287. package/src/controller/store.ts +201 -0
  288. package/src/core/address/country-data.ts +927 -0
  289. package/src/core/address/country-name.ts +36 -0
  290. package/src/core/address/country-names.generated.ts +246 -0
  291. package/src/core/address/engine.ts +349 -0
  292. package/src/core/address/form-state.ts +479 -0
  293. package/src/core/address/places.ts +39 -0
  294. package/src/core/address/suggest.ts +153 -0
  295. package/src/core/address/use-suggestions.ts +37 -0
  296. package/src/core/payments/address-change.ts +121 -0
  297. package/src/core/payments/billing-merge.ts +91 -0
  298. package/src/core/payments/browser-info.ts +43 -0
  299. package/src/core/payments/bt.ts +176 -0
  300. package/src/core/payments/currency.ts +54 -0
  301. package/src/core/payments/detail.ts +204 -0
  302. package/src/core/payments/errors.ts +171 -0
  303. package/src/core/payments/mint.ts +130 -0
  304. package/src/core/payments/plan.ts +198 -0
  305. package/src/core/payments/refusals.ts +24 -0
  306. package/src/core/payments/secure-fields.ts +85 -0
  307. package/src/core/payments/tax-id-catalog.ts +320 -0
  308. package/src/core/payments/wallet-contact.ts +56 -0
  309. package/src/elements/address.tsx +570 -0
  310. package/src/elements/branding.tsx +87 -0
  311. package/src/elements/card-fields/context.tsx +310 -0
  312. package/src/elements/card-fields/fields.tsx +281 -0
  313. package/src/elements/card-fields/index.tsx +37 -0
  314. package/src/elements/card.tsx +101 -0
  315. package/src/elements/email.tsx +100 -0
  316. package/src/elements/payment/declared-fields.tsx +238 -0
  317. package/src/elements/payment/index.tsx +497 -0
  318. package/src/elements/payment/wallet.tsx +155 -0
  319. package/src/elements/tax-id.tsx +143 -0
  320. package/src/i18n/catalogs.ts +100 -0
  321. package/src/i18n/index.tsx +46 -0
  322. package/src/index.ts +68 -0
  323. package/src/namespace.tsx +231 -0
  324. package/src/native/index.ts +173 -0
  325. package/src/provider.tsx +76 -0
  326. package/src/specs/NativeWhopAddressSuggestions.ts +14 -0
  327. package/src/specs/NativeWhopAuthSession.ts +21 -0
  328. package/src/specs/NativeWhopPlatformPay.ts +25 -0
  329. package/src/specs/WhopPayButtonNativeComponent.ts +22 -0
  330. package/src/theme/appearance.ts +150 -0
  331. package/src/theme/provider.tsx +28 -0
  332. package/src/theme/resolve.ts +68 -0
  333. package/src/theme/scales.generated.ts +427 -0
  334. package/src/ui/element-frame.tsx +94 -0
  335. package/src/ui/payment-method-icon.tsx +55 -0
  336. package/src/ui/primitives.tsx +269 -0
  337. package/src/ui/select.tsx +255 -0
  338. package/src/ui/suggestions.tsx +69 -0
  339. package/src/ui/whop-logo.tsx +37 -0
@@ -0,0 +1,174 @@
1
+ "use strict";
2
+
3
+ import { createContext, forwardRef, useCallback, useContext, useEffect, useImperativeHandle, useMemo, useRef, useSyncExternalStore } from 'react';
4
+ import { StyleSheet, View } from 'react-native';
5
+ import { createConfirmationToken, handleNextAction } from "./controller/actions.js";
6
+ import { PaymentsStore } from "./controller/store.js";
7
+ import { useRootConfig } from "./provider.js";
8
+
9
+ /** The live handle a `<Payments>` ref exposes — the same surface the vanilla handle carries. */
10
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
+ const PaymentsContext = /*#__PURE__*/createContext(undefined);
12
+ export function usePayments() {
13
+ const handle = useContext(PaymentsContext);
14
+ if (handle === undefined) throw new Error('Payments element components must be used within <Payments>');
15
+ return handle;
16
+ }
17
+
18
+ /** @internal every element reads the store through this, never the context directly. */
19
+ export function usePaymentsStore() {
20
+ const handle = usePayments();
21
+ if (!handle) throw new Error('Payments element components must be used within <Payments>');
22
+ return handle.store;
23
+ }
24
+
25
+ /** @internal a selected slice of controller state, re-rendering only when the slice moves. */
26
+ export function usePaymentsState(select) {
27
+ const store = usePaymentsStore();
28
+ const selector = useRef(select);
29
+ selector.current = select;
30
+ const getSnapshot = useCallback(() => selector.current(store.getSnapshot()), [store]);
31
+ return useSyncExternalStore(store.subscribe, getSnapshot, getSnapshot);
32
+ }
33
+ export const Payments = /*#__PURE__*/forwardRef(function Payments(props, ref) {
34
+ const {
35
+ children,
36
+ fallback,
37
+ style,
38
+ onError,
39
+ onLoadingChange,
40
+ ...options
41
+ } = props;
42
+ const config = useRootConfig();
43
+
44
+ // Read through a ref so the store never depends on getToken's IDENTITY. Every published sample
45
+ // passes an inline `getToken={() => ...}`, which is a new function each render: keying the store
46
+ // on it destroyed the store on any parent re-render, remounting card fields and dropping
47
+ // in-flight confirms.
48
+ const latestGetToken = useRef(config.getToken);
49
+ latestGetToken.current = config.getToken;
50
+ const store = useMemo(() => new PaymentsStore(options, config.environment ?? 'production', async () => {
51
+ const token = await latestGetToken.current?.();
52
+ return token ?? null;
53
+ }),
54
+ // The store owns its own option updates below; recreating it on every prop change would
55
+ // remount every field and reload the tokenizer.
56
+ // eslint-disable-next-line react-hooks/exhaustive-deps
57
+ [config.environment]);
58
+ useEffect(() => () => store.destroy(), [store]);
59
+ const latestOptions = useRef(options);
60
+ latestOptions.current = options;
61
+ useEffect(() => {
62
+ store.update(latestOptions.current);
63
+ });
64
+ const chargeError = usePaymentsStateOf(store, s => s.chargeError);
65
+ const latestOnError = useRef(onError);
66
+ latestOnError.current = onError;
67
+ useEffect(() => {
68
+ if (!chargeError) return;
69
+ const code = chargeError.code;
70
+ latestOnError.current?.({
71
+ message: chargeError.message,
72
+ code
73
+ });
74
+ }, [chargeError]);
75
+ const handle = useMemo(() => ({
76
+ store,
77
+ createConfirmationToken: input => createConfirmationToken(store, input),
78
+ handleNextAction: input => handleNextAction(store, input),
79
+ getState: () => store.getSnapshot(),
80
+ subscribe: listener => store.subscribe(listener),
81
+ update: next => store.update(next)
82
+ }), [store]);
83
+ useImperativeHandle(ref, () => handle, [handle]);
84
+ const loading = useGroupLoading(store, onLoadingChange);
85
+ const hideChildren = loading && fallback != null;
86
+ return /*#__PURE__*/_jsx(PaymentsContext.Provider, {
87
+ value: handle,
88
+ children: /*#__PURE__*/_jsxs(View, {
89
+ style: style,
90
+ children: [hideChildren ? fallback : null, /*#__PURE__*/_jsx(View, {
91
+ style: hideChildren ? styles.held : undefined,
92
+ pointerEvents: hideChildren ? 'none' : 'auto',
93
+ accessibilityElementsHidden: hideChildren,
94
+ importantForAccessibility: hideChildren ? 'no-hide-descendants' : 'auto',
95
+ children: children
96
+ })]
97
+ })
98
+ });
99
+ });
100
+
101
+ /** @internal element components call this on mount so the group latch knows to wait for them. */
102
+ export function useGroupMember() {
103
+ const store = usePaymentsStore();
104
+ const settled = useRef(false);
105
+ useEffect(() => {
106
+ const registry = groupRegistry(store);
107
+ registry.pending += 1;
108
+ registry.notify();
109
+ return () => {
110
+ if (settled.current) return;
111
+ registry.pending -= 1;
112
+ registry.notify();
113
+ };
114
+ }, [store]);
115
+ return {
116
+ ready: () => {
117
+ if (settled.current) return;
118
+ settled.current = true;
119
+ const registry = groupRegistry(store);
120
+ registry.pending -= 1;
121
+ registry.notify();
122
+ }
123
+ };
124
+ }
125
+ const REGISTRIES = new WeakMap();
126
+ function groupRegistry(store) {
127
+ let registry = REGISTRIES.get(store);
128
+ if (!registry) {
129
+ const created = {
130
+ pending: 0,
131
+ listeners: new Set(),
132
+ notify: () => {
133
+ for (const listener of created.listeners) listener();
134
+ }
135
+ };
136
+ REGISTRIES.set(store, created);
137
+ registry = created;
138
+ }
139
+ return registry;
140
+ }
141
+ function useGroupLoading(store, onLoadingChange) {
142
+ const subscribe = useCallback(listener => {
143
+ const registry = groupRegistry(store);
144
+ registry.listeners.add(listener);
145
+ return () => {
146
+ registry.listeners.delete(listener);
147
+ };
148
+ }, [store]);
149
+ // Nothing mounted eagerly means nothing will ever settle the latch, so an empty group is loaded.
150
+ const getSnapshot = useCallback(() => groupRegistry(store).pending > 0, [store]);
151
+ const loading = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
152
+ const latest = useRef(onLoadingChange);
153
+ latest.current = onLoadingChange;
154
+ useEffect(() => {
155
+ latest.current?.(loading);
156
+ }, [loading]);
157
+ return loading;
158
+ }
159
+ function usePaymentsStateOf(store, select) {
160
+ const selector = useRef(select);
161
+ selector.current = select;
162
+ const getSnapshot = useCallback(() => selector.current(store.getSnapshot()), [store]);
163
+ return useSyncExternalStore(store.subscribe, getSnapshot, getSnapshot);
164
+ }
165
+ const styles = StyleSheet.create({
166
+ held: {
167
+ position: 'absolute',
168
+ top: 0,
169
+ left: 0,
170
+ right: 0,
171
+ opacity: 0
172
+ }
173
+ });
174
+ //# sourceMappingURL=namespace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createContext","forwardRef","useCallback","useContext","useEffect","useImperativeHandle","useMemo","useRef","useSyncExternalStore","StyleSheet","View","createConfirmationToken","handleNextAction","PaymentsStore","useRootConfig","jsx","_jsx","jsxs","_jsxs","PaymentsContext","undefined","usePayments","handle","Error","usePaymentsStore","store","usePaymentsState","select","selector","current","getSnapshot","subscribe","Payments","props","ref","children","fallback","style","onError","onLoadingChange","options","config","latestGetToken","getToken","environment","token","destroy","latestOptions","update","chargeError","usePaymentsStateOf","s","latestOnError","code","message","input","getState","listener","next","loading","useGroupLoading","hideChildren","Provider","value","styles","held","pointerEvents","accessibilityElementsHidden","importantForAccessibility","useGroupMember","settled","registry","groupRegistry","pending","notify","ready","REGISTRIES","WeakMap","get","created","listeners","Set","set","add","delete","latest","create","position","top","left","right","opacity"],"sourceRoot":"../../src","sources":["namespace.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+
3
+ import { Platform } from 'react-native';
4
+ import { parseComponents, parseSuggestions } from "../core/address/suggest.js";
5
+ /**
6
+ * The three native units, resolved lazily and tolerantly.
7
+ *
8
+ * A missing module is not a crash: it means the app has not rebuilt since adding this package, and
9
+ * the honest consequence is that redirect steps and wallet tiles are unavailable while everything
10
+ * else keeps working. Throwing at import time would take the whole checkout down instead.
11
+ */
12
+
13
+ function optional(load) {
14
+ try {
15
+ return load() ?? null;
16
+ } catch {
17
+ return null;
18
+ }
19
+ }
20
+ let authSession;
21
+ let platformPay;
22
+ let addressSuggestions;
23
+ function auth() {
24
+ if (authSession === undefined) {
25
+ authSession = optional(() => require('../specs/NativeWhopAuthSession').default);
26
+ }
27
+ return authSession;
28
+ }
29
+ function pay() {
30
+ if (platformPay === undefined) {
31
+ platformPay = optional(() => require('../specs/NativeWhopPlatformPay').default);
32
+ }
33
+ return platformPay;
34
+ }
35
+ export const WhopAuthSession = {
36
+ isAvailable() {
37
+ return auth()?.isAvailable() ?? false;
38
+ },
39
+ /** Resolves the callback URL, or null when the buyer dismissed the browser. */
40
+ present(url, options) {
41
+ const module = auth();
42
+ if (!module) {
43
+ return Promise.reject(new Error('whop elements: the native module is not linked — rebuild the app after installing @whop/elements-react-native.'));
44
+ }
45
+ return module.present(url, options?.callbackScheme ?? null, options?.prefersEphemeral ?? false);
46
+ },
47
+ dismiss() {
48
+ auth()?.dismiss();
49
+ }
50
+ };
51
+ export const WhopPlatformPay = {
52
+ capability() {
53
+ const value = pay()?.capability();
54
+ return value === 'apple' || value === 'google' ? value : 'none';
55
+ },
56
+ async canPay(config) {
57
+ const module = pay();
58
+ if (!module) return false;
59
+ try {
60
+ return await module.canPay(JSON.stringify(config));
61
+ } catch {
62
+ return false;
63
+ }
64
+ },
65
+ /** Resolves the raw network payload, or null when the buyer dismissed the sheet. */
66
+ present(request) {
67
+ const module = pay();
68
+ if (!module) return Promise.resolve(null);
69
+ return module.present(JSON.stringify(request));
70
+ },
71
+ /** Apple's sheet stays open until the confirm outcome is known; Google's dismisses itself. */
72
+ complete(success) {
73
+ pay()?.complete(success);
74
+ }
75
+ };
76
+ export const WALLET_TYPE_FOR_PLATFORM = Platform.OS === 'ios' ? 'apple_pay' : 'google_pay';
77
+ export { default as WhopPayButton } from '../specs/WhopPayButtonNativeComponent';
78
+ let warnedMissingSuggestions = false;
79
+ function suggestions() {
80
+ if (addressSuggestions === undefined) {
81
+ addressSuggestions = optional(() => require('../specs/NativeWhopAddressSuggestions').default);
82
+ }
83
+ // Absence here is silent by design at runtime — a checkout must never break over suggestions —
84
+ // but for whoever is building it, "no autocomplete" and "module not linked" look identical.
85
+ // Say which, once, in development only.
86
+ if (addressSuggestions === null && !warnedMissingSuggestions && typeof __DEV__ !== 'undefined' && __DEV__) {
87
+ warnedMissingSuggestions = true;
88
+ console.warn('whop elements: address autocomplete is off because the WhopAddressSuggestions native module is not linked. ' + 'Rebuild the app after installing or updating @whop/elements-react-native — in the example, `node scripts/setup-native.mjs --force` then `pnpm run ios`.');
89
+ }
90
+ return addressSuggestions;
91
+ }
92
+
93
+ /**
94
+ * Street suggestions from the platform geocoder: MapKit on iOS, android.location.Geocoder on
95
+ * Android. No key, no account, no third-party SDK on either side.
96
+ *
97
+ * Two calls, because MapKit's as-you-type API answers with display strings only and the components
98
+ * come from a second lookup. Android resolves from its own cache, so the shape costs it nothing.
99
+ *
100
+ * Every failure path answers empty rather than throwing. A geocoder that is missing, throttled,
101
+ * offline or simply unhelpful should leave the buyer typing the address by hand, which is where
102
+ * they started — it must never take down a checkout.
103
+ */
104
+ export const WhopAddressSuggestions = {
105
+ isAvailable() {
106
+ return suggestions()?.isAvailable() ?? false;
107
+ },
108
+ async suggest(query) {
109
+ const module = suggestions();
110
+ if (!module) return [];
111
+ try {
112
+ return parseSuggestions(await module.suggest(query));
113
+ } catch {
114
+ return [];
115
+ }
116
+ },
117
+ /** `formCountry` is not sent to the geocoder; it backfills a result that comes back without one. */
118
+ async resolve(id, formCountry) {
119
+ const module = suggestions();
120
+ if (!module) return null;
121
+ try {
122
+ return parseComponents(await module.details(id), formCountry);
123
+ } catch {
124
+ return null;
125
+ }
126
+ }
127
+ };
128
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Platform","parseComponents","parseSuggestions","optional","load","authSession","platformPay","addressSuggestions","auth","undefined","require","default","pay","WhopAuthSession","isAvailable","present","url","options","module","Promise","reject","Error","callbackScheme","prefersEphemeral","dismiss","WhopPlatformPay","capability","value","canPay","config","JSON","stringify","request","resolve","complete","success","WALLET_TYPE_FOR_PLATFORM","OS","WhopPayButton","warnedMissingSuggestions","suggestions","__DEV__","console","warn","WhopAddressSuggestions","suggest","query","id","formCountry","details"],"sourceRoot":"../../../src","sources":["native/index.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+
3
+ import { createContext, useContext, useMemo } from 'react';
4
+ import { assertNativeAppearance } from "./theme/appearance.js";
5
+ import { ThemeProvider } from "./theme/provider.js";
6
+ import { LocaleProvider } from "./i18n/index.js";
7
+ import { jsx as _jsx } from "react/jsx-runtime";
8
+ const RootContext = /*#__PURE__*/createContext(null);
9
+ export function useRootConfig() {
10
+ const root = useContext(RootContext);
11
+ if (!root) throw new Error('Whop Elements components must be used within <WhopElements>');
12
+ return root.config;
13
+ }
14
+
15
+ /**
16
+ * The root. Holds the environment, the appearance, the locale, and the token resolver, and puts a
17
+ * resolved theme in context for every element beneath it.
18
+ */
19
+ export function WhopElements(props) {
20
+ const {
21
+ children,
22
+ environment = 'production',
23
+ appearance,
24
+ locale,
25
+ getToken,
26
+ analytics
27
+ } = props;
28
+
29
+ // `elements={loadWhop()}` is the single most-copied line in the web docs. Failing loudly on it
30
+ // is kinder than ignoring a prop someone believed was load-bearing.
31
+ if (props.elements !== undefined) {
32
+ throw new Error('whop elements: `<WhopElements elements={…}>` is a web-only prop — React Native has no hosted script to load. Remove it.');
33
+ }
34
+ assertNativeAppearance(appearance ?? undefined);
35
+ const config = useMemo(() => ({
36
+ environment,
37
+ appearance,
38
+ locale,
39
+ getToken,
40
+ analytics
41
+ }), [environment, appearance, locale, getToken, analytics]);
42
+ const value = useMemo(() => ({
43
+ config
44
+ }), [config]);
45
+ return /*#__PURE__*/_jsx(RootContext.Provider, {
46
+ value: value,
47
+ children: /*#__PURE__*/_jsx(LocaleProvider, {
48
+ locale: locale,
49
+ children: /*#__PURE__*/_jsx(ThemeProvider, {
50
+ appearance: appearance,
51
+ children: children
52
+ })
53
+ })
54
+ });
55
+ }
56
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createContext","useContext","useMemo","assertNativeAppearance","ThemeProvider","LocaleProvider","jsx","_jsx","RootContext","useRootConfig","root","Error","config","WhopElements","props","children","environment","appearance","locale","getToken","analytics","elements","undefined","value","Provider"],"sourceRoot":"../../src","sources":["provider.tsx"],"mappings":";;AAAA,SAASA,aAAa,EAAkBC,UAAU,EAAEC,OAAO,QAAQ,OAAO;AAG1E,SAA0BC,sBAAsB,QAAQ,uBAAoB;AAC5E,SAASC,aAAa,QAAQ,qBAAkB;AAChD,SAASC,cAAc,QAAQ,iBAAQ;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAiCxC,MAAMC,WAAW,gBAAGR,aAAa,CAAmB,IAAI,CAAC;AAEzD,OAAO,SAASS,aAAaA,CAAA,EAAuB;EACnD,MAAMC,IAAI,GAAGT,UAAU,CAACO,WAAW,CAAC;EACpC,IAAI,CAACE,IAAI,EAAE,MAAM,IAAIC,KAAK,CAAC,6DAA6D,CAAC;EACzF,OAAOD,IAAI,CAACE,MAAM;AACnB;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASC,YAAYA,CAACC,KAAwB,EAAa;EACjE,MAAM;IAAEC,QAAQ;IAAEC,WAAW,GAAG,YAAY;IAAEC,UAAU;IAAEC,MAAM;IAAEC,QAAQ;IAAEC;EAAU,CAAC,GAAGN,KAAK;;EAE/F;EACA;EACA,IAAKA,KAAK,CAAwCO,QAAQ,KAAKC,SAAS,EAAE;IACzE,MAAM,IAAIX,KAAK,CACd,yHACD,CAAC;EACF;EACAR,sBAAsB,CAACc,UAAU,IAAIK,SAAS,CAAC;EAE/C,MAAMV,MAAM,GAAGV,OAAO,CACrB,OAAO;IAAEc,WAAW;IAAEC,UAAU;IAAEC,MAAM;IAAEC,QAAQ;IAAEC;EAAU,CAAC,CAAC,EAChE,CAACJ,WAAW,EAAEC,UAAU,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,SAAS,CACtD,CAAC;EACD,MAAMG,KAAK,GAAGrB,OAAO,CAAY,OAAO;IAAEU;EAAO,CAAC,CAAC,EAAE,CAACA,MAAM,CAAC,CAAC;EAE9D,oBACCL,IAAA,CAACC,WAAW,CAACgB,QAAQ;IAACD,KAAK,EAAEA,KAAM;IAAAR,QAAA,eAClCR,IAAA,CAACF,cAAc;MAACa,MAAM,EAAEA,MAAO;MAAAH,QAAA,eAC9BR,IAAA,CAACH,aAAa;QAACa,UAAU,EAAEA,UAAW;QAAAF,QAAA,EAAEA;MAAQ,CAAgB;IAAC,CAClD;EAAC,CACI,CAAC;AAEzB","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ import { TurboModuleRegistry } from 'react-native';
4
+ /** `get`, not `getEnforcing`: an app that has not rebuilt loses suggestions, it does not crash. */
5
+ export default TurboModuleRegistry.get('WhopAddressSuggestions');
6
+ //# sourceMappingURL=NativeWhopAddressSuggestions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["TurboModuleRegistry","get"],"sourceRoot":"../../../src","sources":["specs/NativeWhopAddressSuggestions.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;AAWlD;AACA,eAAeA,mBAAmB,CAACC,GAAG,CAAO,wBAAwB,CAAC","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ import { TurboModuleRegistry } from 'react-native';
4
+ /**
5
+ * `get`, not `getEnforcing`: a host app that has not rebuilt since adding this package should lose
6
+ * the redirect and wallet surfaces, not crash on import. The wrappers in src/native treat null as
7
+ * "unavailable".
8
+ */
9
+ export default TurboModuleRegistry.get('WhopAuthSession');
10
+ //# sourceMappingURL=NativeWhopAuthSession.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["TurboModuleRegistry","get"],"sourceRoot":"../../../src","sources":["specs/NativeWhopAuthSession.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;AAclD;AACA;AACA;AACA;AACA;AACA,eAAeA,mBAAmB,CAACC,GAAG,CAAO,iBAAiB,CAAC","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ import { TurboModuleRegistry } from 'react-native';
4
+ /**
5
+ * `get`, not `getEnforcing`: a host app that has not rebuilt since adding this package should lose
6
+ * the redirect and wallet surfaces, not crash on import. The wrappers in src/native treat null as
7
+ * "unavailable".
8
+ */
9
+ export default TurboModuleRegistry.get('WhopPlatformPay');
10
+ //# sourceMappingURL=NativeWhopPlatformPay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["TurboModuleRegistry","get"],"sourceRoot":"../../../src","sources":["specs/NativeWhopPlatformPay.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;AAkBlD;AACA;AACA;AACA;AACA;AACA,eAAeA,mBAAmB,CAACC,GAAG,CAAO,iBAAiB,CAAC","ignoreList":[]}
@@ -0,0 +1,22 @@
1
+ import type { CodegenTypes, HostComponent, ViewProps } from 'react-native';
2
+ import { codegenNativeComponent } from 'react-native';
3
+
4
+ /**
5
+ * The platform's own pay button. Apple and Google both require their branded control rather than a
6
+ * drawn imitation, so this is the one element surface that must be a native view.
7
+ */
8
+ export interface NativeProps extends ViewProps {
9
+ variant?: CodegenTypes.WithDefault<'buy' | 'pay' | 'checkout' | 'book' | 'subscribe' | 'order', 'pay'>;
10
+ buttonAppearance?: CodegenTypes.WithDefault<'auto' | 'light' | 'dark', 'auto'>;
11
+ cornerRadius?: CodegenTypes.Double;
12
+ disabled?: CodegenTypes.WithDefault<boolean, false>;
13
+ /**
14
+ * NOT `onPress`. Codegen derives the native event name by replacing the `on` prefix with `top`,
15
+ * and React Native already registers `topPress` as a BUBBLING event for Pressable — a name
16
+ * registered as both direct and bubbling fails the view-config invariant at render time, which
17
+ * takes down the whole screen rather than just this button.
18
+ */
19
+ onPayPress?: CodegenTypes.DirectEventHandler<null>;
20
+ }
21
+
22
+ export default codegenNativeComponent<NativeProps>('WhopPayButton') as HostComponent<NativeProps>;
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+
3
+ import { ACCENT_NAMES, GRAY_NAMES } from "./scales.generated.js";
4
+
5
+ /**
6
+ * Copied from frontend/packages/elements-framework/src/builder/appearance/types.ts so an appearance
7
+ * object written for the web elements types identically here.
8
+ */
9
+
10
+ /**
11
+ * The web's `variables` are CSS custom properties, which React Native has no analogue for. `tokens`
12
+ * is the closed, typed replacement: numbers rather than `"8px"` strings, because there are no units
13
+ * here.
14
+ */
15
+
16
+ /**
17
+ * The web's `classes` are CSS declarations keyed by `whop-*` part names. `parts` is the same idea
18
+ * with React Native style objects instead: flat per-part overrides applied after the theme, with no
19
+ * cascade, no pseudo-classes and no combinators.
20
+ *
21
+ * Names follow the web's wherever the two surfaces mean the same thing — `whop-PaymentMethodTile`,
22
+ * `whop-PaymentMethodDetail`, `whop-PaymentMethodRowSelected`, `whop-CardFieldGroup`. They diverge
23
+ * only where the surfaces genuinely differ, in three ways:
24
+ *
25
+ * - This surface is MORE granular in places: `whop-CardNumberField`, `whop-CardExpiryField` and
26
+ * `whop-CardCvcField` are separately themeable where the web has one `whop-CardFieldInput`.
27
+ * - It is generic where the web is per-element: one `whop-Input` / `whop-Label` / `whop-ErrorText`
28
+ * serves every field, where the web publishes `whop-PaymentFieldInput`, `whop-EmailInput`,
29
+ * `whop-TaxIdInput` and so on. Matching that would mean adding parts, not renaming them.
30
+ * - Some parts have no web counterpart at all: `whop-Sheet` and `whop-SheetRow` (the web uses a
31
+ * dropdown, not a bottom sheet) and `whop-AddressSuggestions`.
32
+ *
33
+ * So a web appearance object does not port across wholesale, and the parts that do not match are
34
+ * the ones where the web has nothing to match.
35
+ */
36
+
37
+ const ACCENT_SET = new Set(ACCENT_NAMES);
38
+ const GRAY_SET = new Set([...GRAY_NAMES, 'auto']);
39
+ const VALUES = {
40
+ appearance: new Set(['light', 'dark']),
41
+ dangerColor: new Set(['ruby', 'red', 'tomato']),
42
+ warningColor: new Set(['yellow', 'amber']),
43
+ successColor: new Set(['green', 'teal', 'jade', 'grass']),
44
+ infoColor: new Set(['sky', 'blue'])
45
+ };
46
+
47
+ /** An unknown value falls back rather than throwing, matching `parse-theme.ts`. */
48
+ export function parseTheme(theme) {
49
+ if (!theme) return {};
50
+ const pick = (key, value) => typeof value === 'string' && VALUES[key].has(value) ? value : undefined;
51
+ return {
52
+ appearance: pick('appearance', theme.appearance),
53
+ accentColor: typeof theme.accentColor === 'string' && ACCENT_SET.has(theme.accentColor) ? theme.accentColor : undefined,
54
+ grayColor: typeof theme.grayColor === 'string' && GRAY_SET.has(theme.grayColor) ? theme.grayColor : undefined,
55
+ dangerColor: pick('dangerColor', theme.dangerColor),
56
+ warningColor: pick('warningColor', theme.warningColor),
57
+ successColor: pick('successColor', theme.successColor),
58
+ infoColor: pick('infoColor', theme.infoColor)
59
+ };
60
+ }
61
+
62
+ /**
63
+ * A silently-ignored style object is the worst failure available here, so a web appearance passed
64
+ * unchanged is refused by name rather than dropped.
65
+ */
66
+ export function assertNativeAppearance(appearance) {
67
+ if (!appearance) return;
68
+ const bag = appearance;
69
+ if (bag.variables !== undefined) {
70
+ throw new Error('whop elements: `appearance.variables` is a CSS concept with no React Native equivalent — use `appearance.tokens` (numbers, not "8px" strings).');
71
+ }
72
+ if (bag.classes !== undefined) {
73
+ throw new Error('whop elements: `appearance.classes` is a CSS concept with no React Native equivalent — use `appearance.parts` (the same whop-* part names, React Native style objects).');
74
+ }
75
+ }
76
+ export const DEFAULT_TOKENS = {
77
+ radius: 8,
78
+ spacing: 4,
79
+ fontSize: 15,
80
+ labelFontSize: 13,
81
+ borderWidth: 1,
82
+ controlHeight: 44,
83
+ fontFamily: undefined
84
+ };
85
+ //# sourceMappingURL=appearance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ACCENT_NAMES","GRAY_NAMES","ACCENT_SET","Set","GRAY_SET","VALUES","appearance","dangerColor","warningColor","successColor","infoColor","parseTheme","theme","pick","key","value","has","undefined","accentColor","grayColor","assertNativeAppearance","bag","variables","Error","classes","DEFAULT_TOKENS","radius","spacing","fontSize","labelFontSize","borderWidth","controlHeight","fontFamily"],"sourceRoot":"../../../src","sources":["theme/appearance.ts"],"mappings":";;AAEA,SAASA,YAAY,EAAEC,UAAU,QAAQ,uBAAoB;;AAE7D;AACA;AACA;AACA;;AAcA;AACA;AACA;AACA;AACA;;AAWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAyCA,MAAMC,UAA+B,GAAG,IAAIC,GAAG,CAACH,YAAY,CAAC;AAC7D,MAAMI,QAA6B,GAAG,IAAID,GAAG,CAAC,CAAC,GAAGF,UAAU,EAAE,MAAM,CAAC,CAAC;AACtE,MAAMI,MAAM,GAAG;EACdC,UAAU,EAAE,IAAIH,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;EACtCI,WAAW,EAAE,IAAIJ,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;EAC/CK,YAAY,EAAE,IAAIL,GAAG,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;EAC1CM,YAAY,EAAE,IAAIN,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;EACzDO,SAAS,EAAE,IAAIP,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC;AACnC,CAAU;;AAEV;AACA,OAAO,SAASQ,UAAUA,CAACC,KAAoB,EAAS;EACvD,IAAI,CAACA,KAAK,EAAE,OAAO,CAAC,CAAC;EACrB,MAAMC,IAAI,GAAGA,CAAgCC,GAAM,EAAEC,KAAc,KAClE,OAAOA,KAAK,KAAK,QAAQ,IAAIV,MAAM,CAACS,GAAG,CAAC,CAACE,GAAG,CAACD,KAAK,CAAC,GAAIA,KAAK,GAAgBE,SAAS;EACtF,OAAO;IACNX,UAAU,EAAEO,IAAI,CAAC,YAAY,EAAED,KAAK,CAACN,UAAU,CAAC;IAChDY,WAAW,EAAE,OAAON,KAAK,CAACM,WAAW,KAAK,QAAQ,IAAIhB,UAAU,CAACc,GAAG,CAACJ,KAAK,CAACM,WAAW,CAAC,GAAGN,KAAK,CAACM,WAAW,GAAGD,SAAS;IACvHE,SAAS,EAAE,OAAOP,KAAK,CAACO,SAAS,KAAK,QAAQ,IAAIf,QAAQ,CAACY,GAAG,CAACJ,KAAK,CAACO,SAAS,CAAC,GAAGP,KAAK,CAACO,SAAS,GAAGF,SAAS;IAC7GV,WAAW,EAAEM,IAAI,CAAC,aAAa,EAAED,KAAK,CAACL,WAAW,CAAC;IACnDC,YAAY,EAAEK,IAAI,CAAC,cAAc,EAAED,KAAK,CAACJ,YAAY,CAAC;IACtDC,YAAY,EAAEI,IAAI,CAAC,cAAc,EAAED,KAAK,CAACH,YAAY,CAAC;IACtDC,SAAS,EAAEG,IAAI,CAAC,WAAW,EAAED,KAAK,CAACF,SAAS;EAC7C,CAAC;AACF;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASU,sBAAsBA,CAACd,UAAkC,EAAQ;EAChF,IAAI,CAACA,UAAU,EAAE;EACjB,MAAMe,GAAG,GAAGf,UAAqC;EACjD,IAAIe,GAAG,CAACC,SAAS,KAAKL,SAAS,EAAE;IAChC,MAAM,IAAIM,KAAK,CACd,gJACD,CAAC;EACF;EACA,IAAIF,GAAG,CAACG,OAAO,KAAKP,SAAS,EAAE;IAC9B,MAAM,IAAIM,KAAK,CACd,yKACD,CAAC;EACF;AACD;AAEA,OAAO,MAAME,cAAsB,GAAG;EACrCC,MAAM,EAAE,CAAC;EACTC,OAAO,EAAE,CAAC;EACVC,QAAQ,EAAE,EAAE;EACZC,aAAa,EAAE,EAAE;EACjBC,WAAW,EAAE,CAAC;EACdC,aAAa,EAAE,EAAE;EACjBC,UAAU,EAAEf;AACb,CAAC","ignoreList":[]}