@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,69 @@
1
+ "use strict";
2
+
3
+ import { Image } from 'react-native';
4
+ import { useTheme } from "../theme/provider.js";
5
+
6
+ /** The art's own pixel size at 1x, which is what the API's `png_1x` serves: a 32x32 square tile,
7
+ * a 48x30 card tile. The 2x and 4x files are exact multiples of it. */
8
+ import { jsx as _jsx } from "react/jsx-runtime";
9
+ const SHAPE_BASE = {
10
+ square: {
11
+ width: 32,
12
+ height: 32
13
+ },
14
+ card: {
15
+ width: 48,
16
+ height: 30
17
+ }
18
+ };
19
+
20
+ /**
21
+ * A method's brand art.
22
+ *
23
+ * The API serves each shape as an SVG plus a 1x/2x/4x raster set, and this draws the RASTERS: the
24
+ * SVG would need a native peer, and every candidate ships CocoaPods-only, which is the one thing
25
+ * this package cannot take on. Handing `Image` all three densities lets it pick the sharpest file
26
+ * for the box it is drawn in.
27
+ *
28
+ * Each entry carries `width` and `height`, not `scale`: those are what the multi-source picker
29
+ * measures against, and Android's `RCTImageView` throws `null width` on an entry without them.
30
+ */
31
+ export function PaymentMethodIcon({
32
+ icons,
33
+ shape = 'square',
34
+ size = 20,
35
+ style
36
+ }) {
37
+ const theme = useTheme();
38
+ const files = icons?.[shape]?.[theme.mode === 'dark' ? 'dark' : 'light'];
39
+ if (!files) return null;
40
+ const base = SHAPE_BASE[shape];
41
+ const densities = [{
42
+ uri: files.png_1x,
43
+ scale: 1
44
+ }, {
45
+ uri: files.png_2x,
46
+ scale: 2
47
+ }, {
48
+ uri: files.png_4x,
49
+ scale: 4
50
+ }].filter(entry => Boolean(entry.uri)).map(({
51
+ uri,
52
+ scale
53
+ }) => ({
54
+ uri,
55
+ width: base.width * scale,
56
+ height: base.height * scale
57
+ }));
58
+ if (densities.length === 0) return null;
59
+ return /*#__PURE__*/_jsx(Image, {
60
+ source: densities,
61
+ style: [{
62
+ height: size,
63
+ width: size * base.width / base.height
64
+ }, style],
65
+ resizeMode: "contain",
66
+ accessible: false
67
+ });
68
+ }
69
+ //# sourceMappingURL=payment-method-icon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Image","useTheme","jsx","_jsx","SHAPE_BASE","square","width","height","card","PaymentMethodIcon","icons","shape","size","style","theme","files","mode","base","densities","uri","png_1x","scale","png_2x","png_4x","filter","entry","Boolean","map","length","source","resizeMode","accessible"],"sourceRoot":"../../../src","sources":["ui/payment-method-icon.tsx"],"mappings":";;AAAA,SAASA,KAAK,QAAyC,cAAc;AAGrE,SAASC,QAAQ,QAAQ,sBAAmB;;AAE5C;AACA;AADA,SAAAC,GAAA,IAAAC,IAAA;AAEA,MAAMC,UAAU,GAAG;EAAEC,MAAM,EAAE;IAAEC,KAAK,EAAE,EAAE;IAAEC,MAAM,EAAE;EAAG,CAAC;EAAEC,IAAI,EAAE;IAAEF,KAAK,EAAE,EAAE;IAAEC,MAAM,EAAE;EAAG;AAAE,CAAU;;AAElG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASE,iBAAiBA,CAAC;EACjCC,KAAK;EACLC,KAAK,GAAG,QAAQ;EAChBC,IAAI,GAAG,EAAE;EACTC;AAOD,CAAC,EAAE;EACF,MAAMC,KAAK,GAAGb,QAAQ,CAAC,CAAC;EACxB,MAAMc,KAAK,GAAGL,KAAK,GAAGC,KAAK,CAAC,GAAGG,KAAK,CAACE,IAAI,KAAK,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;EACxE,IAAI,CAACD,KAAK,EAAE,OAAO,IAAI;EAEvB,MAAME,IAAI,GAAGb,UAAU,CAACO,KAAK,CAAC;EAC9B,MAAMO,SAAS,GAAG,CACjB;IAAEC,GAAG,EAAEJ,KAAK,CAACK,MAAM;IAAEC,KAAK,EAAE;EAAE,CAAC,EAC/B;IAAEF,GAAG,EAAEJ,KAAK,CAACO,MAAM;IAAED,KAAK,EAAE;EAAE,CAAC,EAC/B;IAAEF,GAAG,EAAEJ,KAAK,CAACQ,MAAM;IAAEF,KAAK,EAAE;EAAE,CAAC,CAC/B,CACCG,MAAM,CAAEC,KAAK,IAA8CC,OAAO,CAACD,KAAK,CAACN,GAAG,CAAC,CAAC,CAC9EQ,GAAG,CAAC,CAAC;IAAER,GAAG;IAAEE;EAAM,CAAC,MAAM;IAAEF,GAAG;IAAEb,KAAK,EAAEW,IAAI,CAACX,KAAK,GAAGe,KAAK;IAAEd,MAAM,EAAEU,IAAI,CAACV,MAAM,GAAGc;EAAM,CAAC,CAAC,CAAC;EAC5F,IAAIH,SAAS,CAACU,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI;EAEvC,oBACCzB,IAAA,CAACH,KAAK;IACL6B,MAAM,EAAEX,SAAU;IAClBL,KAAK,EAAE,CAAC;MAAEN,MAAM,EAAEK,IAAI;MAAEN,KAAK,EAAGM,IAAI,GAAGK,IAAI,CAACX,KAAK,GAAIW,IAAI,CAACV;IAAO,CAAC,EAAEM,KAAK,CAAE;IAC3EiB,UAAU,EAAC,SAAS;IACpBC,UAAU,EAAE;EAAM,CAClB,CAAC;AAEJ","ignoreList":[]}
@@ -0,0 +1,266 @@
1
+ "use strict";
2
+
3
+ import { forwardRef, useState } from 'react';
4
+ import { Pressable, StyleSheet, Text, TextInput, View } from 'react-native';
5
+ import { alphaStep, step, useTheme } from "../theme/provider.js";
6
+
7
+ /** Merge the theme's per-part override in last, so a consumer's `parts` entry always wins. */
8
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
+ export function part(theme, name) {
10
+ return theme.parts[name] ?? {};
11
+ }
12
+ export function useFieldStyles() {
13
+ const theme = useTheme();
14
+ const {
15
+ tokens
16
+ } = theme;
17
+ return {
18
+ theme,
19
+ container: {
20
+ gap: tokens.spacing
21
+ },
22
+ label: {
23
+ fontSize: tokens.labelFontSize,
24
+ fontFamily: tokens.fontFamily,
25
+ color: step(theme.gray, 11),
26
+ fontWeight: '500'
27
+ },
28
+ box: state => ({
29
+ minHeight: tokens.controlHeight,
30
+ borderRadius: tokens.radius,
31
+ borderWidth: tokens.borderWidth,
32
+ borderColor: state.invalid ? step(theme.danger, 8) : state.focused ? step(theme.accent, 8) : alphaStep(theme.gray, 7),
33
+ backgroundColor: state.disabled ? alphaStep(theme.gray, 2) : step(theme.gray, 1),
34
+ paddingHorizontal: tokens.spacing * 3,
35
+ justifyContent: 'center'
36
+ }),
37
+ input: {
38
+ fontSize: tokens.fontSize,
39
+ fontFamily: tokens.fontFamily,
40
+ color: step(theme.gray, 12),
41
+ paddingVertical: tokens.spacing * 2,
42
+ // Android draws its own underline and vertical padding on TextInput; both fight the box.
43
+ paddingHorizontal: 0
44
+ },
45
+ error: {
46
+ fontSize: tokens.labelFontSize,
47
+ fontFamily: tokens.fontFamily,
48
+ color: step(theme.danger, 11)
49
+ },
50
+ placeholder: alphaStep(theme.gray, 10)
51
+ };
52
+ }
53
+
54
+ /** React Native's own TextInput instance type is not nameable from a declaration file, so the
55
+ * alias is declared here and the component is annotated with it. */
56
+
57
+ export const Field = /*#__PURE__*/forwardRef(function Field({
58
+ label,
59
+ error,
60
+ disabled,
61
+ trailing,
62
+ containerStyle,
63
+ partName,
64
+ onFocus,
65
+ onBlur,
66
+ ...input
67
+ }, ref) {
68
+ const s = useFieldStyles();
69
+ const [focused, setFocused] = useState(false);
70
+ const invalid = Boolean(error);
71
+ const handleFocus = e => {
72
+ setFocused(true);
73
+ onFocus?.(e);
74
+ };
75
+ const handleBlur = e => {
76
+ setFocused(false);
77
+ onBlur?.(e);
78
+ };
79
+ return /*#__PURE__*/_jsxs(View, {
80
+ style: [s.container, containerStyle],
81
+ children: [label ? /*#__PURE__*/_jsx(Text, {
82
+ style: [s.label, part(s.theme, 'whop-Label')],
83
+ children: label
84
+ }) : null, /*#__PURE__*/_jsxs(View, {
85
+ style: [s.box({
86
+ focused,
87
+ invalid,
88
+ disabled: Boolean(disabled)
89
+ }), trailing ? styles.row : null, part(s.theme, 'whop-Input'), focused ? part(s.theme, 'whop-InputFocused') : null, invalid ? part(s.theme, 'whop-InputInvalid') : null, partName ? part(s.theme, partName) : null],
90
+ children: [/*#__PURE__*/_jsx(TextInput, {
91
+ ref: ref,
92
+ editable: !disabled,
93
+ placeholderTextColor: s.placeholder,
94
+ onFocus: handleFocus,
95
+ onBlur: handleBlur,
96
+ style: [s.input, styles.grow],
97
+ ...input
98
+ }), trailing]
99
+ }), error ? /*#__PURE__*/_jsx(Text, {
100
+ style: [s.error, part(s.theme, 'whop-ErrorText')],
101
+ children: error
102
+ }) : null]
103
+ });
104
+ });
105
+ /**
106
+ * The label, box, and error row around an input this package does not own — a Basis Theory hosted
107
+ * field. Shares its chrome with `Field` so an isolated field is visually indistinguishable from a
108
+ * plain one.
109
+ */
110
+ export function FieldShell({
111
+ label,
112
+ error,
113
+ focused = false,
114
+ disabled = false,
115
+ trailing,
116
+ partName,
117
+ boxStyle,
118
+ containerStyle,
119
+ children
120
+ }) {
121
+ const s = useFieldStyles();
122
+ const invalid = Boolean(error);
123
+ return /*#__PURE__*/_jsxs(View, {
124
+ style: [s.container, containerStyle],
125
+ children: [label ? /*#__PURE__*/_jsx(Text, {
126
+ style: [s.label, part(s.theme, 'whop-Label')],
127
+ children: label
128
+ }) : null, /*#__PURE__*/_jsxs(View, {
129
+ style: [s.box({
130
+ focused,
131
+ invalid,
132
+ disabled
133
+ }), styles.row, part(s.theme, 'whop-Input'), focused ? part(s.theme, 'whop-InputFocused') : null, invalid ? part(s.theme, 'whop-InputInvalid') : null, partName ? part(s.theme, partName) : null, boxStyle],
134
+ children: [/*#__PURE__*/_jsx(View, {
135
+ style: styles.grow,
136
+ children: children
137
+ }), trailing]
138
+ }), error ? /*#__PURE__*/_jsx(Text, {
139
+ style: [s.error, part(s.theme, 'whop-ErrorText')],
140
+ children: error
141
+ }) : null]
142
+ });
143
+ }
144
+
145
+ /** The shell every element paints before its first content commit. */
146
+ export function Skeleton({
147
+ height,
148
+ width,
149
+ style
150
+ }) {
151
+ const theme = useTheme();
152
+ return /*#__PURE__*/_jsx(View, {
153
+ accessibilityElementsHidden: true,
154
+ importantForAccessibility: "no-hide-descendants",
155
+ style: [{
156
+ height,
157
+ width: width ?? '100%',
158
+ borderRadius: theme.tokens.radius,
159
+ backgroundColor: alphaStep(theme.gray, 3)
160
+ }, part(theme, 'whop-Skeleton'), style]
161
+ });
162
+ }
163
+ export function FieldSkeleton({
164
+ label = true
165
+ }) {
166
+ const theme = useTheme();
167
+ return /*#__PURE__*/_jsxs(View, {
168
+ style: {
169
+ gap: theme.tokens.spacing
170
+ },
171
+ children: [label ? /*#__PURE__*/_jsx(Skeleton, {
172
+ height: 12,
173
+ width: 96
174
+ }) : null, /*#__PURE__*/_jsx(Skeleton, {
175
+ height: theme.tokens.controlHeight
176
+ })]
177
+ });
178
+ }
179
+
180
+ /** Form fields sit top-aligned: one field carrying an error message must not vertically re-centre
181
+ * the field beside it. */
182
+ export function Row({
183
+ children,
184
+ style
185
+ }) {
186
+ const theme = useTheme();
187
+ return /*#__PURE__*/_jsx(View, {
188
+ style: [styles.row, styles.rowTop, {
189
+ gap: theme.tokens.spacing * 2
190
+ }, style],
191
+ children: children
192
+ });
193
+ }
194
+ export function Stack({
195
+ children,
196
+ style,
197
+ gap
198
+ }) {
199
+ const theme = useTheme();
200
+ return /*#__PURE__*/_jsx(View, {
201
+ style: [{
202
+ gap: gap ?? theme.tokens.spacing * 3
203
+ }, style],
204
+ children: children
205
+ });
206
+ }
207
+ export function ErrorFace({
208
+ message
209
+ }) {
210
+ const theme = useTheme();
211
+ return /*#__PURE__*/_jsx(View, {
212
+ accessibilityRole: "alert",
213
+ style: {
214
+ borderRadius: theme.tokens.radius,
215
+ borderWidth: theme.tokens.borderWidth,
216
+ borderColor: alphaStep(theme.danger, 6),
217
+ backgroundColor: alphaStep(theme.danger, 2),
218
+ padding: theme.tokens.spacing * 3
219
+ },
220
+ children: /*#__PURE__*/_jsx(Text, {
221
+ style: {
222
+ fontSize: theme.tokens.fontSize,
223
+ color: step(theme.danger, 11),
224
+ fontFamily: theme.tokens.fontFamily
225
+ },
226
+ children: message
227
+ })
228
+ });
229
+ }
230
+ export function TextButton({
231
+ label,
232
+ onPress,
233
+ disabled
234
+ }) {
235
+ const theme = useTheme();
236
+ return /*#__PURE__*/_jsx(Pressable, {
237
+ accessibilityRole: "button",
238
+ disabled: disabled,
239
+ onPress: onPress,
240
+ hitSlop: 8,
241
+ children: ({
242
+ pressed
243
+ }) => /*#__PURE__*/_jsx(Text, {
244
+ style: {
245
+ fontSize: theme.tokens.labelFontSize,
246
+ fontFamily: theme.tokens.fontFamily,
247
+ color: step(theme.accent, 11),
248
+ opacity: disabled ? 0.5 : pressed ? 0.7 : 1
249
+ },
250
+ children: label
251
+ })
252
+ });
253
+ }
254
+ const styles = StyleSheet.create({
255
+ row: {
256
+ flexDirection: 'row',
257
+ alignItems: 'center'
258
+ },
259
+ rowTop: {
260
+ alignItems: 'flex-start'
261
+ },
262
+ grow: {
263
+ flex: 1
264
+ }
265
+ });
266
+ //# sourceMappingURL=primitives.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["forwardRef","useState","Pressable","StyleSheet","Text","TextInput","View","alphaStep","step","useTheme","jsx","_jsx","jsxs","_jsxs","part","theme","name","parts","useFieldStyles","tokens","container","gap","spacing","label","fontSize","labelFontSize","fontFamily","color","gray","fontWeight","box","state","minHeight","controlHeight","borderRadius","radius","borderWidth","borderColor","invalid","danger","focused","accent","backgroundColor","disabled","paddingHorizontal","justifyContent","input","paddingVertical","error","placeholder","Field","trailing","containerStyle","partName","onFocus","onBlur","ref","s","setFocused","Boolean","handleFocus","e","handleBlur","style","children","styles","row","editable","placeholderTextColor","grow","FieldShell","boxStyle","Skeleton","height","width","accessibilityElementsHidden","importantForAccessibility","FieldSkeleton","Row","rowTop","Stack","ErrorFace","message","accessibilityRole","padding","TextButton","onPress","hitSlop","pressed","opacity","create","flexDirection","alignItems","flex"],"sourceRoot":"../../../src","sources":["ui/primitives.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,281 @@
1
+ "use strict";
2
+
3
+ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
4
+ import { Animated, Easing, FlatList, Modal, Pressable, StyleSheet, Text, TextInput, View, useWindowDimensions } from 'react-native';
5
+ import { useT } from "../i18n/index.js";
6
+ import { alphaStep, step } from "../theme/provider.js";
7
+ import { part, useFieldStyles } from "./primitives.js";
8
+
9
+ /** Keeps the closed offset and the style cap from drifting apart. */
10
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
+ const SHEET_MAX_HEIGHT_RATIO = 0.7;
12
+ /**
13
+ * A picker sheet rather than a platform picker: `@react-native-picker/picker` renders as a spinner
14
+ * on iOS and a dropdown on Android, which makes the same element look like two different products
15
+ * and gives the theme nothing to style. One sheet, both platforms.
16
+ */
17
+ export function Select({
18
+ label,
19
+ value,
20
+ options,
21
+ onChange,
22
+ placeholder,
23
+ error,
24
+ disabled,
25
+ searchable,
26
+ partName,
27
+ accessibilityLabel
28
+ }) {
29
+ const t = useT();
30
+ const s = useFieldStyles();
31
+ const theme = s.theme;
32
+ const {
33
+ height: windowHeight
34
+ } = useWindowDimensions();
35
+ const [open, setOpen] = useState(false);
36
+ const [query, setQuery] = useState('');
37
+ const [sheetHeight, setSheetHeight] = useState(0);
38
+ const progress = useRef(new Animated.Value(0)).current;
39
+ const selected = options.find(option => option.value === value);
40
+ const filtered = useMemo(() => {
41
+ if (!searchable || !query.trim()) return options;
42
+ const needle = query.trim().toLowerCase();
43
+ return options.filter(option => option.label.toLowerCase().includes(needle));
44
+ }, [options, query, searchable]);
45
+ useEffect(() => {
46
+ if (!open) return;
47
+ Animated.timing(progress, {
48
+ toValue: 1,
49
+ duration: 260,
50
+ easing: Easing.out(Easing.cubic),
51
+ useNativeDriver: true
52
+ }).start();
53
+ }, [open, progress]);
54
+ const close = useCallback(() => {
55
+ Animated.timing(progress, {
56
+ toValue: 0,
57
+ duration: 200,
58
+ easing: Easing.in(Easing.cubic),
59
+ useNativeDriver: true
60
+ }).start(({
61
+ finished
62
+ }) => {
63
+ if (!finished) return;
64
+ setOpen(false);
65
+ setQuery('');
66
+ });
67
+ }, [progress]);
68
+ const onSheetLayout = useCallback(event => {
69
+ const next = event.nativeEvent.layout.height;
70
+ setSheetHeight(previous => Math.abs(previous - next) < 1 ? previous : next);
71
+ }, []);
72
+ const translateY = progress.interpolate({
73
+ inputRange: [0, 1],
74
+ outputRange: [sheetHeight || windowHeight * SHEET_MAX_HEIGHT_RATIO, 0]
75
+ });
76
+ return /*#__PURE__*/_jsxs(View, {
77
+ style: s.container,
78
+ children: [label ? /*#__PURE__*/_jsx(Text, {
79
+ style: [s.label, part(theme, 'whop-Label')],
80
+ children: label
81
+ }) : null, /*#__PURE__*/_jsxs(Pressable, {
82
+ accessibilityRole: "button",
83
+ accessibilityState: {
84
+ disabled: Boolean(disabled),
85
+ expanded: open
86
+ },
87
+ accessibilityLabel: accessibilityLabel ?? label,
88
+ disabled: disabled,
89
+ onPress: () => setOpen(true),
90
+ style: [s.box({
91
+ focused: open,
92
+ invalid: Boolean(error),
93
+ disabled: Boolean(disabled)
94
+ }), styles.trigger, part(theme, 'whop-Select'), partName ? part(theme, partName) : null],
95
+ children: [/*#__PURE__*/_jsx(Text, {
96
+ numberOfLines: 1,
97
+ style: [s.input, styles.grow, !selected ? {
98
+ color: s.placeholder
99
+ } : null, part(theme, 'whop-SelectValue')],
100
+ children: selected?.label ?? placeholder ?? ''
101
+ }), /*#__PURE__*/_jsx(Chevron, {
102
+ color: step(theme.gray, 11)
103
+ })]
104
+ }), error ? /*#__PURE__*/_jsx(Text, {
105
+ style: [s.error, part(theme, 'whop-ErrorText')],
106
+ children: error
107
+ }) : null, /*#__PURE__*/_jsxs(Modal, {
108
+ visible: open,
109
+ transparent: true,
110
+ animationType: "none",
111
+ onRequestClose: close,
112
+ statusBarTranslucent: true,
113
+ children: [/*#__PURE__*/_jsx(Pressable, {
114
+ style: styles.backdrop,
115
+ onPress: close,
116
+ accessibilityLabel: t('Close'),
117
+ children: /*#__PURE__*/_jsx(Animated.View, {
118
+ style: [styles.scrim, {
119
+ opacity: progress
120
+ }]
121
+ })
122
+ }), /*#__PURE__*/_jsxs(Animated.View, {
123
+ onLayout: onSheetLayout,
124
+ style: [styles.sheet, {
125
+ backgroundColor: step(theme.gray, 1),
126
+ borderTopLeftRadius: theme.tokens.radius * 2,
127
+ borderTopRightRadius: theme.tokens.radius * 2,
128
+ transform: [{
129
+ translateY
130
+ }]
131
+ }, part(theme, 'whop-Sheet')],
132
+ children: [/*#__PURE__*/_jsx(View, {
133
+ style: [styles.grabber, {
134
+ backgroundColor: alphaStep(theme.gray, 7)
135
+ }]
136
+ }), label ? /*#__PURE__*/_jsx(Text, {
137
+ style: [s.label, {
138
+ paddingHorizontal: theme.tokens.spacing * 4
139
+ }],
140
+ children: label
141
+ }) : null, searchable ? /*#__PURE__*/_jsx(View, {
142
+ style: {
143
+ paddingHorizontal: theme.tokens.spacing * 4,
144
+ paddingTop: theme.tokens.spacing * 2
145
+ },
146
+ children: /*#__PURE__*/_jsx(View, {
147
+ style: s.box({
148
+ focused: false,
149
+ invalid: false,
150
+ disabled: false
151
+ }),
152
+ children: /*#__PURE__*/_jsx(TextInput, {
153
+ autoFocus: true,
154
+ value: query,
155
+ onChangeText: setQuery,
156
+ placeholder: t('Search'),
157
+ placeholderTextColor: s.placeholder,
158
+ style: s.input,
159
+ autoCorrect: false,
160
+ autoCapitalize: "none"
161
+ })
162
+ })
163
+ }) : null, /*#__PURE__*/_jsx(FlatList, {
164
+ data: filtered,
165
+ keyExtractor: option => option.value,
166
+ keyboardShouldPersistTaps: "handled",
167
+ initialNumToRender: 20,
168
+ style: styles.list,
169
+ ListEmptyComponent: /*#__PURE__*/_jsx(Text, {
170
+ style: [s.input, {
171
+ padding: theme.tokens.spacing * 4,
172
+ color: step(theme.gray, 11)
173
+ }],
174
+ children: t('No matches')
175
+ }),
176
+ renderItem: ({
177
+ item
178
+ }) => {
179
+ const active = item.value === value;
180
+ return /*#__PURE__*/_jsxs(Pressable, {
181
+ accessibilityRole: "button",
182
+ accessibilityState: {
183
+ selected: active
184
+ },
185
+ onPress: () => {
186
+ onChange(item.value);
187
+ close();
188
+ },
189
+ style: ({
190
+ pressed
191
+ }) => [styles.row, {
192
+ paddingHorizontal: theme.tokens.spacing * 4,
193
+ paddingVertical: theme.tokens.spacing * 3,
194
+ backgroundColor: pressed || active ? alphaStep(theme.gray, 3) : 'transparent'
195
+ }, part(theme, 'whop-SheetRow')],
196
+ children: [/*#__PURE__*/_jsx(Text, {
197
+ style: [s.input, styles.grow, {
198
+ paddingVertical: 0
199
+ }],
200
+ children: item.label
201
+ }), active ? /*#__PURE__*/_jsx(Text, {
202
+ style: {
203
+ color: step(theme.accent, 11)
204
+ },
205
+ children: "\u2713"
206
+ }) : null]
207
+ });
208
+ }
209
+ })]
210
+ })]
211
+ })]
212
+ });
213
+ }
214
+
215
+ /** A stroked chevron rather than the "▾" glyph, which renders as a tiny solid triangle whose size
216
+ * and weight are the font's business rather than the theme's. Two borders on a rotated square is
217
+ * the whole shape, so it stays crisp at any size without a vector dependency. */
218
+ function Chevron({
219
+ color
220
+ }) {
221
+ return /*#__PURE__*/_jsx(View, {
222
+ style: [styles.chevron, {
223
+ borderColor: color
224
+ }]
225
+ });
226
+ }
227
+ const styles = StyleSheet.create({
228
+ chevron: {
229
+ width: 7,
230
+ height: 7,
231
+ borderRightWidth: 1.5,
232
+ borderBottomWidth: 1.5,
233
+ borderRadius: 1,
234
+ transform: [{
235
+ rotate: '45deg'
236
+ }],
237
+ marginBottom: 3
238
+ },
239
+ trigger: {
240
+ flexDirection: 'row',
241
+ alignItems: 'center'
242
+ },
243
+ grow: {
244
+ flex: 1
245
+ },
246
+ backdrop: {
247
+ position: 'absolute',
248
+ top: 0,
249
+ left: 0,
250
+ right: 0,
251
+ bottom: 0
252
+ },
253
+ scrim: {
254
+ flex: 1,
255
+ backgroundColor: 'rgba(0,0,0,0.4)'
256
+ },
257
+ sheet: {
258
+ position: 'absolute',
259
+ left: 0,
260
+ right: 0,
261
+ bottom: 0,
262
+ maxHeight: `${SHEET_MAX_HEIGHT_RATIO * 100}%`,
263
+ paddingTop: 8,
264
+ paddingBottom: 24
265
+ },
266
+ grabber: {
267
+ alignSelf: 'center',
268
+ width: 36,
269
+ height: 4,
270
+ borderRadius: 2,
271
+ marginBottom: 12
272
+ },
273
+ list: {
274
+ flexGrow: 0
275
+ },
276
+ row: {
277
+ flexDirection: 'row',
278
+ alignItems: 'center'
279
+ }
280
+ });
281
+ //# sourceMappingURL=select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCallback","useEffect","useMemo","useRef","useState","Animated","Easing","FlatList","Modal","Pressable","StyleSheet","Text","TextInput","View","useWindowDimensions","useT","alphaStep","step","part","useFieldStyles","jsx","_jsx","jsxs","_jsxs","SHEET_MAX_HEIGHT_RATIO","Select","label","value","options","onChange","placeholder","error","disabled","searchable","partName","accessibilityLabel","t","s","theme","height","windowHeight","open","setOpen","query","setQuery","sheetHeight","setSheetHeight","progress","Value","current","selected","find","option","filtered","trim","needle","toLowerCase","filter","includes","timing","toValue","duration","easing","out","cubic","useNativeDriver","start","close","in","finished","onSheetLayout","event","next","nativeEvent","layout","previous","Math","abs","translateY","interpolate","inputRange","outputRange","style","container","children","accessibilityRole","accessibilityState","Boolean","expanded","onPress","box","focused","invalid","styles","trigger","numberOfLines","input","grow","color","Chevron","gray","visible","transparent","animationType","onRequestClose","statusBarTranslucent","backdrop","scrim","opacity","onLayout","sheet","backgroundColor","borderTopLeftRadius","tokens","radius","borderTopRightRadius","transform","grabber","paddingHorizontal","spacing","paddingTop","autoFocus","onChangeText","placeholderTextColor","autoCorrect","autoCapitalize","data","keyExtractor","keyboardShouldPersistTaps","initialNumToRender","list","ListEmptyComponent","padding","renderItem","item","active","pressed","row","paddingVertical","accent","chevron","borderColor","create","width","borderRightWidth","borderBottomWidth","borderRadius","rotate","marginBottom","flexDirection","alignItems","flex","position","top","left","right","bottom","maxHeight","paddingBottom","alignSelf","flexGrow"],"sourceRoot":"../../../src","sources":["ui/select.tsx"],"mappings":"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","ignoreList":[]}