autumn-js 0.1.34 → 0.1.35

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 (267) hide show
  1. package/dist/libraries/backend/better-auth.d.mts +221 -310
  2. package/dist/libraries/backend/better-auth.d.ts +221 -310
  3. package/dist/libraries/backend/better-auth.js +389 -133
  4. package/dist/libraries/backend/better-auth.mjs +250 -100
  5. package/dist/libraries/backend/{chunk-F3S66STP.mjs → chunk-35N7BIAE.mjs} +45 -1
  6. package/dist/libraries/backend/{chunk-WBHGLFLE.mjs → chunk-4MEEJLXG.mjs} +6 -6
  7. package/dist/libraries/backend/{chunk-SVTPC45F.mjs → chunk-LOSIWWM2.mjs} +1 -1
  8. package/dist/libraries/backend/{chunk-7OEFNFGZ.mjs → chunk-MHIUO3ST.mjs} +1 -1
  9. package/dist/libraries/backend/{chunk-SRHT6RDB.mjs → chunk-PO4EL4BW.mjs} +9 -27
  10. package/dist/libraries/backend/{chunk-ENRZQDOT.mjs → chunk-QOJMX7ML.mjs} +2 -25
  11. package/dist/libraries/backend/chunk-SRJD6EXQ.mjs +104 -0
  12. package/dist/libraries/backend/{chunk-D5C5Q5FZ.mjs → chunk-USQ76FYI.mjs} +1 -1
  13. package/dist/libraries/backend/convex.js +52 -43
  14. package/dist/libraries/backend/convex.mjs +7 -7
  15. package/dist/libraries/backend/elysia.js +53 -62
  16. package/dist/libraries/backend/elysia.mjs +10 -28
  17. package/dist/libraries/backend/express.js +52 -43
  18. package/dist/libraries/backend/express.mjs +7 -7
  19. package/dist/libraries/backend/fastify.js +52 -43
  20. package/dist/libraries/backend/fastify.mjs +7 -7
  21. package/dist/libraries/backend/hono.js +52 -43
  22. package/dist/libraries/backend/hono.mjs +7 -7
  23. package/dist/libraries/backend/index.js +52 -43
  24. package/dist/libraries/backend/index.mjs +7 -7
  25. package/dist/libraries/backend/next.js +52 -43
  26. package/dist/libraries/backend/next.mjs +7 -7
  27. package/dist/libraries/backend/react-router.js +52 -43
  28. package/dist/libraries/backend/react-router.mjs +7 -7
  29. package/dist/libraries/backend/remix_dep.js +52 -43
  30. package/dist/libraries/backend/remix_dep.mjs +7 -7
  31. package/dist/libraries/backend/routes/backendRouter.js +52 -43
  32. package/dist/libraries/backend/routes/backendRouter.mjs +7 -7
  33. package/dist/libraries/backend/routes/entityRoutes.js +44 -17
  34. package/dist/libraries/backend/routes/entityRoutes.mjs +3 -3
  35. package/dist/libraries/backend/routes/genRoutes.js +57 -48
  36. package/dist/libraries/backend/routes/genRoutes.mjs +3 -3
  37. package/dist/libraries/backend/routes/productRoutes.js +44 -17
  38. package/dist/libraries/backend/routes/productRoutes.mjs +3 -3
  39. package/dist/libraries/backend/routes/referralRoutes.js +44 -17
  40. package/dist/libraries/backend/routes/referralRoutes.mjs +3 -3
  41. package/dist/libraries/backend/supabase.js +52 -43
  42. package/dist/libraries/backend/supabase.mjs +7 -7
  43. package/dist/libraries/backend/tanstack.js +52 -43
  44. package/dist/libraries/backend/tanstack.mjs +7 -7
  45. package/dist/libraries/backend/utils/backendRes.js +1 -17
  46. package/dist/libraries/backend/utils/backendRes.mjs +1 -1
  47. package/dist/libraries/backend/utils/betterAuth/middlewares.d.mts +26 -0
  48. package/dist/libraries/backend/utils/betterAuth/middlewares.d.ts +26 -0
  49. package/dist/libraries/backend/utils/betterAuth/middlewares.js +130 -0
  50. package/dist/libraries/backend/utils/betterAuth/middlewares.mjs +10 -0
  51. package/dist/libraries/backend/utils/betterAuth/types.d.mts +18 -0
  52. package/dist/libraries/backend/utils/betterAuth/types.d.ts +18 -0
  53. package/dist/libraries/backend/utils/betterAuth/types.js +18 -0
  54. package/dist/libraries/backend/utils/betterAuth/types.mjs +0 -0
  55. package/dist/libraries/backend/utils/withAuth.js +44 -17
  56. package/dist/libraries/backend/utils/withAuth.mjs +2 -2
  57. package/dist/libraries/react/AutumnContext.d.mts +7 -9
  58. package/dist/libraries/react/AutumnContext.d.ts +7 -9
  59. package/dist/libraries/react/AutumnContext.js +32 -81
  60. package/dist/libraries/react/AutumnContext.mjs +6 -8
  61. package/dist/libraries/react/BaseAutumnProvider.d.mts +7 -9
  62. package/dist/libraries/react/BaseAutumnProvider.d.ts +7 -9
  63. package/dist/libraries/react/BaseAutumnProvider.js +201 -254
  64. package/dist/libraries/react/BaseAutumnProvider.mjs +11 -13
  65. package/dist/libraries/react/{ReactAutumnClient-DEHKGBDi.d.ts → ReactAutumnClient-DkAcY1X2.d.ts} +32 -37
  66. package/dist/libraries/react/{ReactAutumnClient-Zj0UGjxH.d.mts → ReactAutumnClient-DuYr1i4C.d.mts} +32 -37
  67. package/dist/libraries/react/ReactAutumnProvider.d.mts +2 -2
  68. package/dist/libraries/react/ReactAutumnProvider.d.ts +2 -2
  69. package/dist/libraries/react/ReactAutumnProvider.js +201 -263
  70. package/dist/libraries/react/ReactAutumnProvider.mjs +13 -15
  71. package/dist/libraries/react/{attachTypes-DVF4f7Hw.d.ts → attachTypes-CKp1KMwX.d.ts} +1 -1
  72. package/dist/libraries/react/{attachTypes-DJIr5ldB.d.mts → attachTypes-DbuZWzAP.d.mts} +1 -1
  73. package/dist/libraries/react/{chunk-NPPSXTRQ.mjs → chunk-2LZIBRD4.mjs} +2 -2
  74. package/dist/libraries/react/{chunk-FAG5HHVM.mjs → chunk-4KLTPVNG.mjs} +2 -2
  75. package/dist/libraries/react/{chunk-HNWWFCOW.mjs → chunk-4QVAJKUF.mjs} +1 -1
  76. package/dist/libraries/react/{chunk-GM7LHHFX.mjs → chunk-4YM2QKRI.mjs} +5 -9
  77. package/dist/libraries/react/{chunk-IMAERZCR.mjs → chunk-5LRBYZUD.mjs} +1 -1
  78. package/dist/libraries/react/{chunk-OLMAXT44.mjs → chunk-5OBFJVZC.mjs} +19 -19
  79. package/dist/libraries/react/{chunk-AHIEANFE.mjs → chunk-5TLRC3ED.mjs} +17 -17
  80. package/dist/libraries/react/{chunk-R6KU3V35.mjs → chunk-7FMBA5I4.mjs} +2 -2
  81. package/dist/libraries/react/{chunk-MJGGWQ7J.mjs → chunk-7T7IOMAA.mjs} +2 -2
  82. package/dist/libraries/react/{chunk-QUXQNE4G.mjs → chunk-7YNNQGHZ.mjs} +1 -1
  83. package/dist/libraries/react/{chunk-QTDNLHRG.mjs → chunk-AUZMXLNB.mjs} +1 -1
  84. package/dist/libraries/react/{chunk-QFOYSJQW.mjs → chunk-C3G5RW3Q.mjs} +6 -6
  85. package/dist/libraries/react/{chunk-CM5UZD2G.mjs → chunk-FL4H464X.mjs} +4 -4
  86. package/dist/libraries/react/{chunk-SIYKVK6T.mjs → chunk-FW7AQFVX.mjs} +1 -1
  87. package/dist/libraries/react/{chunk-RQFIIPL2.mjs → chunk-HN7ULWIM.mjs} +1 -1
  88. package/dist/libraries/react/chunk-LS2RW6JG.mjs +51 -0
  89. package/dist/libraries/react/{chunk-KCO4V65K.mjs → chunk-MHAXHLX4.mjs} +6 -6
  90. package/dist/libraries/react/{chunk-ZF2HUCN6.mjs → chunk-OYBOLAL5.mjs} +2 -7
  91. package/dist/libraries/react/{chunk-L2DI44KG.mjs → chunk-P4GHLIEZ.mjs} +450 -452
  92. package/dist/libraries/react/{chunk-YLBFGNCO.mjs → chunk-Q7LVAQ5K.mjs} +2 -2
  93. package/dist/libraries/react/{chunk-ATGLJHUN.mjs → chunk-QEWVBDWJ.mjs} +1 -1
  94. package/dist/libraries/react/{chunk-C4Z4C6RL.mjs → chunk-RNIUZGWU.mjs} +2 -2
  95. package/dist/libraries/react/{chunk-5LYLN4C2.mjs → chunk-SFOIZTAS.mjs} +1 -17
  96. package/dist/libraries/react/{chunk-ZV4RPZTM.mjs → chunk-SUENW2KS.mjs} +2 -7
  97. package/dist/libraries/react/{chunk-RMTUAI3D.mjs → chunk-WSX7HWKQ.mjs} +4 -3
  98. package/dist/libraries/react/{chunk-SJKUKNBU.mjs → chunk-YKJYGNXR.mjs} +1 -1
  99. package/dist/libraries/react/{chunk-P4QKFNVY.mjs → chunk-ZVGPT54A.mjs} +1 -10
  100. package/dist/libraries/react/client/ConvexAutumnClient.d.mts +7 -13
  101. package/dist/libraries/react/client/ConvexAutumnClient.d.ts +7 -13
  102. package/dist/libraries/react/client/ConvexAutumnClient.js +1 -26
  103. package/dist/libraries/react/client/ConvexAutumnClient.mjs +2 -2
  104. package/dist/libraries/react/client/ReactAutumnClient.d.mts +6 -8
  105. package/dist/libraries/react/client/ReactAutumnClient.d.ts +6 -8
  106. package/dist/libraries/react/client/ReactAutumnClient.js +32 -81
  107. package/dist/libraries/react/client/ReactAutumnClient.mjs +5 -7
  108. package/dist/libraries/react/client/clientCompMethods.d.mts +25 -9
  109. package/dist/libraries/react/client/clientCompMethods.d.ts +25 -9
  110. package/dist/libraries/react/client/clientCompMethods.mjs +6 -3
  111. package/dist/libraries/react/client/clientCusMethods.d.mts +7 -9
  112. package/dist/libraries/react/client/clientCusMethods.d.ts +7 -9
  113. package/dist/libraries/react/client/clientEntityMethods.d.mts +6 -7
  114. package/dist/libraries/react/client/clientEntityMethods.d.ts +6 -7
  115. package/dist/libraries/react/client/clientEntityMethods.js +2 -25
  116. package/dist/libraries/react/client/clientEntityMethods.mjs +1 -2
  117. package/dist/libraries/react/client/clientGenMethods.d.mts +8 -9
  118. package/dist/libraries/react/client/clientGenMethods.d.ts +8 -9
  119. package/dist/libraries/react/client/clientGenMethods.js +12 -40
  120. package/dist/libraries/react/client/clientGenMethods.mjs +1 -2
  121. package/dist/libraries/react/client/clientProdMethods.d.mts +7 -9
  122. package/dist/libraries/react/client/clientProdMethods.d.ts +7 -9
  123. package/dist/libraries/react/client/clientReferralMethods.d.mts +6 -8
  124. package/dist/libraries/react/client/clientReferralMethods.d.ts +6 -8
  125. package/dist/libraries/react/client/clientReferralMethods.js +2 -27
  126. package/dist/libraries/react/client/clientReferralMethods.mjs +1 -2
  127. package/dist/libraries/react/client/types/clientEntTypes.d.mts +18 -13
  128. package/dist/libraries/react/client/types/clientEntTypes.d.ts +18 -13
  129. package/dist/libraries/react/client/types/clientEntTypes.js +28 -0
  130. package/dist/libraries/react/client/types/clientEntTypes.mjs +20 -0
  131. package/dist/libraries/react/client/types/clientGenTypes.d.mts +12 -10
  132. package/dist/libraries/react/client/types/clientGenTypes.d.ts +12 -10
  133. package/dist/libraries/react/client/types/clientGenTypes.js +14 -17
  134. package/dist/libraries/react/client/types/clientGenTypes.mjs +12 -1
  135. package/dist/libraries/react/components/checkout-dialog/checkout-dialog-synced.d.mts +2 -2
  136. package/dist/libraries/react/components/checkout-dialog/checkout-dialog-synced.d.ts +2 -2
  137. package/dist/libraries/react/components/checkout-dialog/checkout-dialog-synced.js +285 -338
  138. package/dist/libraries/react/components/checkout-dialog/checkout-dialog-synced.mjs +32 -34
  139. package/dist/libraries/react/components/checkout-dialog/lib/checkout-content.d.mts +2 -2
  140. package/dist/libraries/react/components/checkout-dialog/lib/checkout-content.d.ts +2 -2
  141. package/dist/libraries/react/components/paywall-dialog/lib/paywall-content.d.mts +1 -1
  142. package/dist/libraries/react/components/paywall-dialog/lib/paywall-content.d.ts +1 -1
  143. package/dist/libraries/react/components/paywall-dialog/paywall-dialog-synced.js +81 -131
  144. package/dist/libraries/react/components/paywall-dialog/paywall-dialog-synced.mjs +32 -34
  145. package/dist/libraries/react/components/pricing-table/lib/pricing-table-content.d.mts +1 -1
  146. package/dist/libraries/react/components/pricing-table/lib/pricing-table-content.d.ts +1 -1
  147. package/dist/libraries/react/components/pricing-table/pricing-table-synced.d.mts +1 -1
  148. package/dist/libraries/react/components/pricing-table/pricing-table-synced.d.ts +1 -1
  149. package/dist/libraries/react/components/pricing-table/pricing-table-synced.js +484 -537
  150. package/dist/libraries/react/components/pricing-table/pricing-table-synced.mjs +32 -34
  151. package/dist/libraries/react/components/ui/accordion.d.mts +10 -4
  152. package/dist/libraries/react/components/ui/accordion.d.ts +10 -4
  153. package/dist/libraries/react/components/ui/accordion.mjs +3 -3
  154. package/dist/libraries/react/components/ui/dialog.d.mts +15 -7
  155. package/dist/libraries/react/components/ui/dialog.d.ts +15 -7
  156. package/dist/libraries/react/components/ui/dialog.mjs +4 -4
  157. package/dist/libraries/react/components/ui/popover.d.mts +6 -4
  158. package/dist/libraries/react/components/ui/popover.d.ts +6 -4
  159. package/dist/libraries/react/components/ui/popover.mjs +5 -5
  160. package/dist/libraries/react/components/ui/switch.d.mts +3 -1
  161. package/dist/libraries/react/components/ui/switch.d.ts +3 -1
  162. package/dist/libraries/react/components/ui/switch.mjs +3 -3
  163. package/dist/libraries/react/{cusTypes-CEb_KwPo.d.ts → cusTypes-D3QQXjif.d.ts} +1 -1
  164. package/dist/libraries/react/{cusTypes-DynqPCZH.d.mts → cusTypes-RU0fmR-t.d.mts} +1 -1
  165. package/dist/libraries/react/{entTypes-DjasDDYh.d.mts → entTypes-35x0LnYH.d.mts} +1 -1
  166. package/dist/libraries/react/{entTypes--Y-4T20Y.d.ts → entTypes-n2T2wpRx.d.ts} +1 -1
  167. package/dist/libraries/react/{genTypes-VKn7hoqQ.d.mts → genTypes-B5_6Pu_4.d.mts} +1 -1
  168. package/dist/libraries/react/{genTypes-BjHbcZ7E.d.ts → genTypes-CY6GNiAn.d.ts} +1 -1
  169. package/dist/libraries/react/hooks/helpers/handleCheck.d.mts +6 -7
  170. package/dist/libraries/react/hooks/helpers/handleCheck.d.ts +6 -7
  171. package/dist/libraries/react/hooks/helpers/handleCheck.js +1 -17
  172. package/dist/libraries/react/hooks/helpers/handleCheck.mjs +2 -2
  173. package/dist/libraries/react/hooks/helpers/useAutumnBase.d.mts +6 -7
  174. package/dist/libraries/react/hooks/helpers/useAutumnBase.d.ts +6 -7
  175. package/dist/libraries/react/hooks/helpers/useAutumnBase.js +1 -17
  176. package/dist/libraries/react/hooks/helpers/useAutumnBase.mjs +3 -3
  177. package/dist/libraries/react/hooks/useAnalytics.d.mts +2 -2
  178. package/dist/libraries/react/hooks/useAnalytics.d.ts +2 -2
  179. package/dist/libraries/react/hooks/useAnalytics.js +32 -81
  180. package/dist/libraries/react/hooks/useAnalytics.mjs +7 -9
  181. package/dist/libraries/react/hooks/useCustomer.d.mts +10 -10
  182. package/dist/libraries/react/hooks/useCustomer.d.ts +10 -10
  183. package/dist/libraries/react/hooks/useCustomer.js +181 -234
  184. package/dist/libraries/react/hooks/useCustomer.mjs +11 -13
  185. package/dist/libraries/react/hooks/useCustomerBase.d.mts +10 -10
  186. package/dist/libraries/react/hooks/useCustomerBase.d.ts +10 -10
  187. package/dist/libraries/react/hooks/useCustomerBase.js +197 -250
  188. package/dist/libraries/react/hooks/useCustomerBase.mjs +10 -12
  189. package/dist/libraries/react/hooks/useEntity.d.mts +4 -4
  190. package/dist/libraries/react/hooks/useEntity.d.ts +4 -4
  191. package/dist/libraries/react/hooks/useEntity.js +33 -81
  192. package/dist/libraries/react/hooks/useEntity.mjs +11 -13
  193. package/dist/libraries/react/hooks/useEntityBase.d.mts +6 -6
  194. package/dist/libraries/react/hooks/useEntityBase.d.ts +6 -6
  195. package/dist/libraries/react/hooks/useEntityBase.js +33 -81
  196. package/dist/libraries/react/hooks/useEntityBase.mjs +10 -12
  197. package/dist/libraries/react/hooks/usePaywall.d.mts +1 -1
  198. package/dist/libraries/react/hooks/usePaywall.d.ts +1 -1
  199. package/dist/libraries/react/hooks/usePaywall.js +32 -81
  200. package/dist/libraries/react/hooks/usePaywall.mjs +7 -9
  201. package/dist/libraries/react/hooks/usePricingTable.d.mts +1 -1
  202. package/dist/libraries/react/hooks/usePricingTable.d.ts +1 -1
  203. package/dist/libraries/react/hooks/usePricingTable.js +32 -81
  204. package/dist/libraries/react/hooks/usePricingTable.mjs +8 -10
  205. package/dist/libraries/react/hooks/usePricingTableBase.d.mts +6 -8
  206. package/dist/libraries/react/hooks/usePricingTableBase.d.ts +6 -8
  207. package/dist/libraries/react/hooks/usePricingTableBase.js +1 -17
  208. package/dist/libraries/react/hooks/usePricingTableBase.mjs +2 -2
  209. package/dist/libraries/react/hooks/useProductsBase.d.mts +6 -8
  210. package/dist/libraries/react/hooks/useProductsBase.d.ts +6 -8
  211. package/dist/libraries/react/hooks/useProductsBase.js +2 -1
  212. package/dist/libraries/react/hooks/useProductsBase.mjs +2 -1
  213. package/dist/libraries/react/index.d.mts +62 -58
  214. package/dist/libraries/react/index.d.ts +62 -58
  215. package/dist/libraries/react/index.js +489 -550
  216. package/dist/libraries/react/index.mjs +461 -522
  217. package/dist/libraries/react/{prodTypes-C8xRoBP7.d.ts → prodTypes-C4aZSZfO.d.mts} +1 -1
  218. package/dist/libraries/react/{prodTypes-C8xRoBP7.d.mts → prodTypes-C4aZSZfO.d.ts} +1 -1
  219. package/dist/next/client/NextAutumnClient.d.mts +31 -34
  220. package/dist/next/client/NextAutumnClient.d.ts +31 -34
  221. package/dist/next/client/NextAutumnProvider.d.mts +2 -2
  222. package/dist/next/client/NextAutumnProvider.d.ts +2 -2
  223. package/dist/next/client/{clientAttachTypes-BqwjCML1.d.ts → clientAttachTypes-BtZh00uu.d.ts} +12 -10
  224. package/dist/next/client/{clientAttachTypes-9AXt1E5H.d.mts → clientAttachTypes-yOuJqDWt.d.mts} +12 -10
  225. package/dist/next/client/{clientEntTypes-CnQkrPEG.d.mts → clientEntTypes-Bsi7ciUF.d.ts} +12 -10
  226. package/dist/next/client/{clientEntTypes-BhQWlwSW.d.ts → clientEntTypes-aLfa3lyP.d.mts} +12 -10
  227. package/dist/next/client/clientUtils.d.mts +3 -3
  228. package/dist/next/client/clientUtils.d.ts +3 -3
  229. package/dist/next/client/{cusTypes-5W4JVk2C.d.ts → cusTypes-B-rJwpui.d.ts} +2 -2
  230. package/dist/next/client/{cusTypes-Cb9Peq72.d.mts → cusTypes-CXjHwB-c.d.mts} +2 -2
  231. package/dist/next/client/{entTypes-R0fGEyG8.d.mts → entTypes-BkN-Puru.d.mts} +1 -1
  232. package/dist/next/client/{entTypes-B2gnYOgY.d.ts → entTypes-DjKFS-Zk.d.ts} +1 -1
  233. package/dist/next/client/hooks/useAutumn.d.mts +3 -3
  234. package/dist/next/client/hooks/useAutumn.d.ts +3 -3
  235. package/dist/next/client/hooks/useCustomer.d.mts +6 -6
  236. package/dist/next/client/hooks/useCustomer.d.ts +6 -6
  237. package/dist/next/client/hooks/useEntity.d.mts +4 -4
  238. package/dist/next/client/hooks/useEntity.d.ts +4 -4
  239. package/dist/next/client/hooks/usePricingTable.d.mts +1 -1
  240. package/dist/next/client/hooks/usePricingTable.d.ts +1 -1
  241. package/dist/next/client/{prodTypes-BC--Np0p.d.mts → prodTypes-B_VMILpU.d.mts} +1 -1
  242. package/dist/next/client/{prodTypes-BC--Np0p.d.ts → prodTypes-B_VMILpU.d.ts} +1 -1
  243. package/dist/next/client/types.d.mts +3 -3
  244. package/dist/next/client/types.d.ts +3 -3
  245. package/dist/next/server/cusActions.d.mts +10 -8
  246. package/dist/next/server/cusActions.d.ts +10 -8
  247. package/dist/next/server/cusActions.js +3 -3
  248. package/dist/next/server/cusActions.mjs +3 -3
  249. package/dist/next/server/genActions.js +5 -5
  250. package/dist/next/server/genActions.mjs +5 -5
  251. package/dist/sdk/index.js +1 -1
  252. package/dist/sdk/index.mjs +1 -1
  253. package/dist/utils/encryptUtils.js +1 -17
  254. package/dist/utils/encryptUtils.mjs +1 -17
  255. package/dist/utils/toSnakeCase.d.mts +5 -1
  256. package/dist/utils/toSnakeCase.d.ts +5 -1
  257. package/dist/utils/toSnakeCase.js +25 -6
  258. package/dist/utils/toSnakeCase.mjs +25 -6
  259. package/package.json +1 -1
  260. package/dist/libraries/react/chunk-KQT5G3HT.mjs +0 -27
  261. package/dist/libraries/react/chunk-VTGR7VVK.mjs +0 -12
  262. package/dist/libraries/react/chunk-YQHZT73Z.mjs +0 -59
  263. package/dist/libraries/react/utils/toSnakeCase.d.mts +0 -3
  264. package/dist/libraries/react/utils/toSnakeCase.d.ts +0 -3
  265. package/dist/libraries/react/utils/toSnakeCase.js +0 -50
  266. package/dist/libraries/react/utils/toSnakeCase.mjs +0 -8
  267. package/dist/libraries/react/{chunk-4XU63W7I.mjs → chunk-2GEDBGON.mjs} +11 -11
@@ -3,16 +3,6 @@
3
3
  import {
4
4
  getPricingTableContent
5
5
  } from "./chunk-URQMBRFZ.mjs";
6
- import {
7
- getPaywallContent
8
- } from "./chunk-I5ZGIAIX.mjs";
9
- import {
10
- Accordion,
11
- AccordionContent,
12
- AccordionItem,
13
- Header,
14
- Trigger2
15
- } from "./chunk-FAG5HHVM.mjs";
16
6
  import {
17
7
  Button
18
8
  } from "./chunk-SWSFJTEQ.mjs";
@@ -21,12 +11,7 @@ import {
21
11
  DialogContent,
22
12
  DialogFooter,
23
13
  DialogTitle
24
- } from "./chunk-KCO4V65K.mjs";
25
- import {
26
- ArrowRight,
27
- ChevronDown,
28
- LoaderCircle
29
- } from "./chunk-2OHJ6PS6.mjs";
14
+ } from "./chunk-MHAXHLX4.mjs";
30
15
  import {
31
16
  Input
32
17
  } from "./chunk-GUM4HIGI.mjs";
@@ -34,149 +19,474 @@ import {
34
19
  Popover,
35
20
  PopoverContent,
36
21
  PopoverTrigger
37
- } from "./chunk-QFOYSJQW.mjs";
22
+ } from "./chunk-C3G5RW3Q.mjs";
38
23
  import {
39
24
  Switch
40
- } from "./chunk-NPPSXTRQ.mjs";
25
+ } from "./chunk-2LZIBRD4.mjs";
41
26
  import {
42
27
  getCheckoutContent
43
28
  } from "./chunk-BLM4DAAR.mjs";
44
29
  import {
45
- cn
46
- } from "./chunk-4J6OC4ZQ.mjs";
30
+ getPaywallContent
31
+ } from "./chunk-I5ZGIAIX.mjs";
32
+ import {
33
+ Accordion,
34
+ AccordionContent,
35
+ AccordionItem,
36
+ Header,
37
+ Trigger2
38
+ } from "./chunk-4KLTPVNG.mjs";
39
+ import {
40
+ ArrowRight,
41
+ ChevronDown,
42
+ LoaderCircle
43
+ } from "./chunk-2OHJ6PS6.mjs";
47
44
  import {
48
45
  usePaywall
49
- } from "./chunk-RQFIIPL2.mjs";
46
+ } from "./chunk-HN7ULWIM.mjs";
50
47
  import {
51
48
  usePricingTable
52
- } from "./chunk-R6KU3V35.mjs";
49
+ } from "./chunk-7FMBA5I4.mjs";
53
50
  import {
54
51
  loadingStyles,
55
52
  spinnerStyles
56
53
  } from "./chunk-WVKYZYFT.mjs";
54
+ import {
55
+ cn
56
+ } from "./chunk-4J6OC4ZQ.mjs";
57
57
  import {
58
58
  useCustomer
59
- } from "./chunk-YLBFGNCO.mjs";
59
+ } from "./chunk-Q7LVAQ5K.mjs";
60
60
 
61
61
  // src/libraries/react/components/checkout-dialog/checkout-dialog-synced.tsx
62
- import { useEffect, useState as useState2 } from "react";
63
-
64
- // src/libraries/react/components/paywall-dialog/paywall-dialog-synced.tsx
62
+ import { useEffect, useState } from "react";
65
63
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
66
- function PaywallDialog(params) {
67
- const { data: preview } = usePaywall({
68
- featureId: params?.featureId,
69
- entityId: params?.entityId
70
- });
71
- if (!params || !preview) {
64
+ var formatCurrency = ({
65
+ amount,
66
+ currency
67
+ }) => {
68
+ return new Intl.NumberFormat("en-US", {
69
+ style: "currency",
70
+ currency
71
+ }).format(amount);
72
+ };
73
+ function CheckoutDialog(params) {
74
+ const { attach } = useCustomer();
75
+ const [checkoutResult, setCheckoutResult] = useState(params?.checkoutResult);
76
+ useEffect(() => {
77
+ if (params.checkoutResult) {
78
+ setCheckoutResult(params.checkoutResult);
79
+ }
80
+ }, [params.checkoutResult]);
81
+ const [loading, setLoading] = useState(false);
82
+ if (!checkoutResult) {
72
83
  return /* @__PURE__ */ jsx(Fragment, {});
73
84
  }
74
85
  const { open, setOpen } = params;
75
- const { title, message } = getPaywallContent(preview);
76
- return /* @__PURE__ */ jsx(Dialog, { open, onOpenChange: setOpen, children: /* @__PURE__ */ jsxs(DialogContent, { className: "au-p-0 au-pt-4 au-gap-0 au-text-foreground au-overflow-hidden au-text-sm", children: [
77
- /* @__PURE__ */ jsx(DialogTitle, { className: cn("au-font-bold au-text-xl au-px-6"), children: title }),
78
- /* @__PURE__ */ jsx("div", { className: "au-px-6 au-my-2", children: message }),
79
- /* @__PURE__ */ jsx(DialogFooter, { className: "au-flex au-flex-col sm:au-flex-row au-justify-between au-gap-x-4 au-py-2 au-mt-4 au-pl-6 au-pr-3 au-bg-secondary au-border-t", children: /* @__PURE__ */ jsx(
86
+ const { title, message } = getCheckoutContent(checkoutResult);
87
+ const isFree = checkoutResult?.product.properties?.is_free;
88
+ const isPaid = isFree === false;
89
+ return /* @__PURE__ */ jsx(Dialog, { open, onOpenChange: setOpen, children: /* @__PURE__ */ jsxs(DialogContent, { className: "au-p-0 au-pt-4 au-gap-0 au-text-foreground au-text-sm", children: [
90
+ /* @__PURE__ */ jsx(DialogTitle, { className: "au-px-6 au-mb-1", children: title }),
91
+ /* @__PURE__ */ jsx("div", { className: "au-px-6 au-mt-1 au-mb-4 au-text-muted-foreground", children: message }),
92
+ isPaid && checkoutResult && /* @__PURE__ */ jsx(
93
+ PriceInformation,
94
+ {
95
+ checkoutResult,
96
+ setCheckoutResult
97
+ }
98
+ ),
99
+ /* @__PURE__ */ jsx(DialogFooter, { className: "au-flex au-flex-col sm:au-flex-row au-justify-between au-gap-x-4 au-py-2 au-pl-6 au-pr-3 au-bg-secondary au-border-t au-shadow-inner", children: /* @__PURE__ */ jsx(
80
100
  Button,
81
101
  {
82
102
  size: "sm",
83
- className: "au-font-medium au-shadow au-transition au-min-w-20",
84
103
  onClick: async () => {
104
+ setLoading(true);
105
+ const options = checkoutResult.options.map((option) => {
106
+ return {
107
+ featureId: option.feature_id,
108
+ quantity: option.quantity
109
+ };
110
+ });
111
+ await attach({
112
+ productId: checkoutResult.product.id,
113
+ ...params.checkoutParams || {},
114
+ options
115
+ });
85
116
  setOpen(false);
117
+ setLoading(false);
86
118
  },
87
- children: "Confirm"
119
+ disabled: loading,
120
+ className: "au-min-w-16 au-flex au-items-center au-gap-2",
121
+ children: loading ? /* @__PURE__ */ jsx(LoaderCircle, { className: "au-w-4 au-h-4 au-animate-spin" }) : /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx("span", { className: "au-whitespace-nowrap au-flex au-gap-1", children: "Confirm" }) })
88
122
  }
89
123
  ) })
90
124
  ] }) });
91
125
  }
92
-
93
- // src/libraries/react/components/pricing-table/pricing-table-synced.tsx
94
- import React from "react";
95
- import { createContext, useContext, useState } from "react";
96
- import { Fragment as Fragment2, jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
97
- function PricingTable({
98
- productDetails
126
+ function PriceInformation({
127
+ checkoutResult,
128
+ setCheckoutResult
99
129
  }) {
100
- const { customer, checkout } = useCustomer({ errorOnNotFound: false });
101
- const [isAnnual, setIsAnnual] = useState(false);
102
- const { products, isLoading, error } = usePricingTable({ productDetails });
103
- if (isLoading) {
104
- return /* @__PURE__ */ jsx2("div", { style: loadingStyles, children: /* @__PURE__ */ jsx2(LoaderCircle, { style: spinnerStyles }) });
105
- }
106
- if (error) {
107
- return /* @__PURE__ */ jsx2("div", { children: " Something went wrong..." });
108
- }
109
- const intervals = Array.from(
110
- new Set(
111
- products?.map((p) => p.properties?.interval_group).filter((i) => !!i)
112
- )
130
+ return /* @__PURE__ */ jsxs("div", { className: "au-px-6 au-mb-4 au-flex au-flex-col au-gap-4", children: [
131
+ /* @__PURE__ */ jsx(
132
+ ProductItems,
133
+ {
134
+ checkoutResult,
135
+ setCheckoutResult
136
+ }
137
+ ),
138
+ /* @__PURE__ */ jsxs("div", { className: "au-flex au-flex-col au-gap-2", children: [
139
+ checkoutResult?.has_prorations && checkoutResult.lines.length > 0 && /* @__PURE__ */ jsx(CheckoutLines, { checkoutResult }),
140
+ /* @__PURE__ */ jsx(DueAmounts, { checkoutResult })
141
+ ] })
142
+ ] });
143
+ }
144
+ function DueAmounts({ checkoutResult }) {
145
+ const { next_cycle, product } = checkoutResult;
146
+ const nextCycleAtStr = next_cycle ? new Date(next_cycle.starts_at).toLocaleDateString() : void 0;
147
+ const hasUsagePrice = product.items.some(
148
+ (item) => item.usage_model === "pay_per_use"
113
149
  );
114
- const multiInterval = intervals.length > 1;
115
- const intervalFilter = (product) => {
116
- if (!product.properties?.interval_group) {
117
- return true;
118
- }
119
- if (multiInterval) {
120
- if (isAnnual) {
121
- return product.properties?.interval_group === "year";
122
- } else {
123
- return product.properties?.interval_group === "month";
150
+ const showNextCycle = next_cycle && next_cycle.total !== checkoutResult.total;
151
+ return /* @__PURE__ */ jsxs("div", { className: "au-flex au-flex-col au-gap-1", children: [
152
+ /* @__PURE__ */ jsxs("div", { className: "au-flex au-justify-between", children: [
153
+ /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx("p", { className: "au-font-medium au-text-md", children: "Total due today" }) }),
154
+ /* @__PURE__ */ jsx("p", { className: "au-font-medium au-text-md", children: formatCurrency({
155
+ amount: checkoutResult?.total,
156
+ currency: checkoutResult?.currency
157
+ }) })
158
+ ] }),
159
+ showNextCycle && /* @__PURE__ */ jsxs("div", { className: "au-flex au-justify-between au-text-muted-foreground", children: [
160
+ /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsxs("p", { className: "au-text-md", children: [
161
+ "Due next cycle (",
162
+ nextCycleAtStr,
163
+ ")"
164
+ ] }) }),
165
+ /* @__PURE__ */ jsxs("p", { className: "au-text-md", children: [
166
+ formatCurrency({
167
+ amount: next_cycle.total,
168
+ currency: checkoutResult?.currency
169
+ }),
170
+ hasUsagePrice && /* @__PURE__ */ jsx("span", { children: " + usage prices" })
171
+ ] })
172
+ ] })
173
+ ] });
174
+ }
175
+ function ProductItems({
176
+ checkoutResult,
177
+ setCheckoutResult
178
+ }) {
179
+ const isUpdateQuantity = checkoutResult?.product.scenario === "active" && checkoutResult.product.properties.updateable;
180
+ const isOneOff = checkoutResult?.product.properties.is_one_off;
181
+ return /* @__PURE__ */ jsxs("div", { className: "au-flex au-flex-col au-gap-2", children: [
182
+ /* @__PURE__ */ jsx("p", { className: "au-text-sm au-font-medium", children: "Price" }),
183
+ checkoutResult?.product.items.filter((item) => item.type !== "feature").map((item, index) => {
184
+ if (item.usage_model == "prepaid") {
185
+ return /* @__PURE__ */ jsx(
186
+ PrepaidItem,
187
+ {
188
+ item,
189
+ checkoutResult,
190
+ setCheckoutResult
191
+ },
192
+ index
193
+ );
124
194
  }
125
- }
126
- return true;
127
- };
128
- return /* @__PURE__ */ jsx2("div", { className: cn("au-root"), children: products && /* @__PURE__ */ jsx2(
129
- PricingTableContainer,
130
- {
131
- products,
132
- isAnnualToggle: isAnnual,
133
- setIsAnnualToggle: setIsAnnual,
134
- multiInterval,
135
- children: products.filter(intervalFilter).map((product, index) => /* @__PURE__ */ jsx2(
136
- PricingCard,
195
+ if (isUpdateQuantity) {
196
+ return null;
197
+ }
198
+ return /* @__PURE__ */ jsxs("div", { className: "au-flex au-justify-between", children: [
199
+ /* @__PURE__ */ jsx("p", { className: "au-text-muted-foreground", children: item.feature ? item.feature.name : isOneOff ? "Price" : "Subscription" }),
200
+ /* @__PURE__ */ jsxs("p", { children: [
201
+ item.display?.primary_text,
202
+ " ",
203
+ item.display?.secondary_text
204
+ ] })
205
+ ] }, index);
206
+ })
207
+ ] });
208
+ }
209
+ function CheckoutLines({ checkoutResult }) {
210
+ return /* @__PURE__ */ jsx(Accordion, { type: "single", collapsible: true, children: /* @__PURE__ */ jsxs(AccordionItem, { value: "total", className: "au-border-b-0", children: [
211
+ /* @__PURE__ */ jsx(CustomAccordionTrigger, { className: "au-justify-between au-w-full au-my-0 au-py-0 au-border-none", children: /* @__PURE__ */ jsxs("div", { className: "au-cursor-pointer au-flex au-items-center au-gap-1 au-w-full au-justify-end", children: [
212
+ /* @__PURE__ */ jsx("p", { className: "au-font-light au-text-muted-foreground", children: "View details" }),
213
+ /* @__PURE__ */ jsx(
214
+ ChevronDown,
137
215
  {
138
- productId: product.id,
139
- buttonProps: {
140
- disabled: product.scenario === "active" && !product.properties.updateable || product.scenario === "scheduled",
141
- onClick: async () => {
142
- if (product.id && customer) {
143
- await checkout({
144
- productId: product.id,
145
- dialog: CheckoutDialog
146
- });
147
- } else if (product.display?.button_url) {
148
- window.open(product.display?.button_url, "_blank");
149
- }
150
- }
151
- }
152
- },
153
- index
154
- ))
216
+ className: "au-text-muted-foreground au-mt-0.5 au-rotate-90 au-transition-transform au-duration-200 au-ease-in-out",
217
+ size: 14
218
+ }
219
+ )
220
+ ] }) }),
221
+ /* @__PURE__ */ jsx(AccordionContent, { className: "au-mt-2 au-mb-0 au-pb-2 au-flex au-flex-col au-gap-2", children: checkoutResult?.lines.filter((line) => line.amount != 0).map((line, index) => {
222
+ return /* @__PURE__ */ jsxs("div", { className: "au-flex au-justify-between", children: [
223
+ /* @__PURE__ */ jsx("p", { className: "au-text-muted-foreground", children: line.description }),
224
+ /* @__PURE__ */ jsx("p", { className: "au-text-muted-foreground", children: new Intl.NumberFormat("en-US", {
225
+ style: "currency",
226
+ currency: checkoutResult?.currency
227
+ }).format(line.amount) })
228
+ ] }, index);
229
+ }) })
230
+ ] }) });
231
+ }
232
+ function CustomAccordionTrigger({
233
+ className,
234
+ children,
235
+ ...props
236
+ }) {
237
+ return /* @__PURE__ */ jsx(Header, { className: "au-flex", children: /* @__PURE__ */ jsx(
238
+ Trigger2,
239
+ {
240
+ "data-slot": "accordion-trigger",
241
+ className: cn(
242
+ "focus-visible:au-border-ring focus-visible:au-ring-ring/50 au-flex au-flex-1 au-items-start au-justify-between au-gap-4 au-rounded-md au-py-4 au-text-left au-text-sm au-font-medium au-transition-all au-outline-none focus-visible:au-ring-[3px] disabled:au-pointer-events-none disabled:au-opacity-50 [&[data-state=open]_svg]:au-rotate-0",
243
+ className
244
+ ),
245
+ ...props,
246
+ children
155
247
  }
156
248
  ) });
157
249
  }
158
- var PricingTableContext = createContext({
159
- isAnnualToggle: false,
160
- setIsAnnualToggle: () => {
161
- },
162
- products: [],
163
- showFeatures: true
164
- });
165
- var usePricingTableContext = (componentName) => {
166
- const context = useContext(PricingTableContext);
167
- if (context === void 0) {
168
- throw new Error(`${componentName} must be used within <PricingTable />`);
169
- }
170
- return context;
171
- };
172
- var PricingTableContainer = ({
173
- children,
174
- products,
175
- showFeatures = true,
176
- className,
177
- isAnnualToggle,
178
- setIsAnnualToggle,
179
- multiInterval
250
+ var PrepaidItem = ({
251
+ item,
252
+ checkoutResult,
253
+ setCheckoutResult
254
+ }) => {
255
+ const { quantity = 0, billing_units: billingUnits = 1 } = item;
256
+ const [quantityInput, setQuantityInput] = useState(
257
+ (quantity / billingUnits).toString()
258
+ );
259
+ const { checkout } = useCustomer();
260
+ const [loading, setLoading] = useState(false);
261
+ const [open, setOpen] = useState(false);
262
+ const scenario = checkoutResult.product.scenario;
263
+ const handleSave = async () => {
264
+ setLoading(true);
265
+ try {
266
+ const newOptions = checkoutResult.options.filter((option) => option.feature_id !== item.feature_id).map((option) => {
267
+ return {
268
+ featureId: option.feature_id,
269
+ quantity: option.quantity
270
+ };
271
+ });
272
+ newOptions.push({
273
+ featureId: item.feature_id,
274
+ quantity: Number(quantityInput) * billingUnits
275
+ });
276
+ const { data, error } = await checkout({
277
+ productId: checkoutResult.product.id,
278
+ options: newOptions,
279
+ dialog: CheckoutDialog
280
+ });
281
+ if (error) {
282
+ console.error(error);
283
+ return;
284
+ }
285
+ setCheckoutResult(data);
286
+ } catch (error) {
287
+ console.error(error);
288
+ } finally {
289
+ setLoading(false);
290
+ setOpen(false);
291
+ }
292
+ };
293
+ const disableSelection = scenario === "renew";
294
+ return /* @__PURE__ */ jsxs("div", { className: "au-flex au-justify-between au-gap-2", children: [
295
+ /* @__PURE__ */ jsxs("div", { className: "au-flex au-gap-2 au-items-start", children: [
296
+ /* @__PURE__ */ jsx("p", { className: "au-text-muted-foreground au-whitespace-nowrap", children: item.feature?.name }),
297
+ /* @__PURE__ */ jsxs(Popover, { open, onOpenChange: setOpen, children: [
298
+ /* @__PURE__ */ jsxs(
299
+ PopoverTrigger,
300
+ {
301
+ className: cn(
302
+ "au-text-muted-foreground au-text-xs au-px-1 au-py-0.5 au-rounded-md au-flex au-items-center au-gap-1 au-bg-accent/80 au-shrink-0",
303
+ disableSelection !== true && "hover:au-bg-accent hover:au-text-foreground"
304
+ ),
305
+ disabled: disableSelection,
306
+ children: [
307
+ "Qty: ",
308
+ quantity,
309
+ /* @__PURE__ */ jsx(ChevronDown, { size: 12 })
310
+ ]
311
+ }
312
+ ),
313
+ /* @__PURE__ */ jsxs(
314
+ PopoverContent,
315
+ {
316
+ align: "start",
317
+ className: "au-w-80 au-text-sm au-p-4 au-pt-3 au-flex au-flex-col au-gap-4",
318
+ children: [
319
+ /* @__PURE__ */ jsxs("div", { className: "au-flex au-flex-col au-gap-1", children: [
320
+ /* @__PURE__ */ jsx("p", { className: "au-text-sm au-font-medium", children: item.feature?.name }),
321
+ /* @__PURE__ */ jsxs("p", { className: "au-text-muted-foreground", children: [
322
+ item.display?.primary_text,
323
+ " ",
324
+ item.display?.secondary_text
325
+ ] })
326
+ ] }),
327
+ /* @__PURE__ */ jsxs("div", { className: "au-flex au-justify-between au-items-end", children: [
328
+ /* @__PURE__ */ jsxs("div", { className: "au-flex au-gap-2 au-items-center", children: [
329
+ /* @__PURE__ */ jsx(
330
+ Input,
331
+ {
332
+ className: "au-h-7 au-w-16 focus:!au-ring-2",
333
+ value: quantityInput,
334
+ onChange: (e) => setQuantityInput(e.target.value)
335
+ }
336
+ ),
337
+ /* @__PURE__ */ jsxs("p", { className: "au-text-muted-foreground", children: [
338
+ billingUnits > 1 && `x ${billingUnits} `,
339
+ item.feature?.name
340
+ ] })
341
+ ] }),
342
+ /* @__PURE__ */ jsx(
343
+ Button,
344
+ {
345
+ onClick: handleSave,
346
+ className: "au-w-14 !au-h-7 au-text-sm au-items-center au-bg-white au-text-foreground au-shadow-sm au-border au-border-zinc-200 hover:au-bg-zinc-100",
347
+ disabled: loading,
348
+ children: loading ? /* @__PURE__ */ jsx(LoaderCircle, { className: "au-text-muted-foreground au-animate-spin !au-w-4 !au-h-4" }) : "Save"
349
+ }
350
+ )
351
+ ] })
352
+ ]
353
+ }
354
+ )
355
+ ] })
356
+ ] }),
357
+ /* @__PURE__ */ jsxs("p", { className: "au-text-end", children: [
358
+ item.display?.primary_text,
359
+ " ",
360
+ item.display?.secondary_text
361
+ ] })
362
+ ] });
363
+ };
364
+ var PriceItem = ({
365
+ children,
366
+ className,
367
+ ...props
368
+ }) => {
369
+ return /* @__PURE__ */ jsx(
370
+ "div",
371
+ {
372
+ className: cn(
373
+ "au-flex au-flex-col au-pb-4 sm:au-pb-0 au-gap-1 sm:au-flex-row au-justify-between sm:au-h-7 sm:au-gap-2 sm:au-items-center",
374
+ className
375
+ ),
376
+ ...props,
377
+ children
378
+ }
379
+ );
380
+ };
381
+ var PricingDialogButton = ({
382
+ children,
383
+ size,
384
+ onClick,
385
+ disabled,
386
+ className
387
+ }) => {
388
+ return /* @__PURE__ */ jsxs(
389
+ Button,
390
+ {
391
+ onClick,
392
+ disabled,
393
+ size,
394
+ className: cn(className, "au-shadow-sm au-shadow-stone-400"),
395
+ children: [
396
+ children,
397
+ /* @__PURE__ */ jsx(ArrowRight, { className: "!au-h-3" })
398
+ ]
399
+ }
400
+ );
401
+ };
402
+
403
+ // src/libraries/react/components/pricing-table/pricing-table-synced.tsx
404
+ import React2 from "react";
405
+ import { createContext, useContext, useState as useState2 } from "react";
406
+ import { Fragment as Fragment2, jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
407
+ function PricingTable({
408
+ productDetails
409
+ }) {
410
+ const { customer, checkout } = useCustomer({ errorOnNotFound: false });
411
+ const [isAnnual, setIsAnnual] = useState2(false);
412
+ const { products, isLoading, error } = usePricingTable({ productDetails });
413
+ if (isLoading) {
414
+ return /* @__PURE__ */ jsx2("div", { style: loadingStyles, children: /* @__PURE__ */ jsx2(LoaderCircle, { style: spinnerStyles }) });
415
+ }
416
+ if (error) {
417
+ return /* @__PURE__ */ jsx2("div", { children: " Something went wrong..." });
418
+ }
419
+ const intervals = Array.from(
420
+ new Set(
421
+ products?.map((p) => p.properties?.interval_group).filter((i) => !!i)
422
+ )
423
+ );
424
+ const multiInterval = intervals.length > 1;
425
+ const intervalFilter = (product) => {
426
+ if (!product.properties?.interval_group) {
427
+ return true;
428
+ }
429
+ if (multiInterval) {
430
+ if (isAnnual) {
431
+ return product.properties?.interval_group === "year";
432
+ } else {
433
+ return product.properties?.interval_group === "month";
434
+ }
435
+ }
436
+ return true;
437
+ };
438
+ return /* @__PURE__ */ jsx2("div", { className: cn("au-root"), children: products && /* @__PURE__ */ jsx2(
439
+ PricingTableContainer,
440
+ {
441
+ products,
442
+ isAnnualToggle: isAnnual,
443
+ setIsAnnualToggle: setIsAnnual,
444
+ multiInterval,
445
+ children: products.filter(intervalFilter).map((product, index) => /* @__PURE__ */ jsx2(
446
+ PricingCard,
447
+ {
448
+ productId: product.id,
449
+ buttonProps: {
450
+ disabled: product.scenario === "active" && !product.properties.updateable || product.scenario === "scheduled",
451
+ onClick: async () => {
452
+ if (product.id && customer) {
453
+ await checkout({
454
+ productId: product.id,
455
+ dialog: CheckoutDialog
456
+ });
457
+ } else if (product.display?.button_url) {
458
+ window.open(product.display?.button_url, "_blank");
459
+ }
460
+ }
461
+ }
462
+ },
463
+ index
464
+ ))
465
+ }
466
+ ) });
467
+ }
468
+ var PricingTableContext = createContext({
469
+ isAnnualToggle: false,
470
+ setIsAnnualToggle: () => {
471
+ },
472
+ products: [],
473
+ showFeatures: true
474
+ });
475
+ var usePricingTableContext = (componentName) => {
476
+ const context = useContext(PricingTableContext);
477
+ if (context === void 0) {
478
+ throw new Error(`${componentName} must be used within <PricingTable />`);
479
+ }
480
+ return context;
481
+ };
482
+ var PricingTableContainer = ({
483
+ children,
484
+ products,
485
+ showFeatures = true,
486
+ className,
487
+ isAnnualToggle,
488
+ setIsAnnualToggle,
489
+ multiInterval
180
490
  }) => {
181
491
  if (!products) {
182
492
  throw new Error("products is required in <PricingTable />");
@@ -328,8 +638,8 @@ var PricingFeatureList = ({
328
638
  )) })
329
639
  ] });
330
640
  };
331
- var PricingCardButton = React.forwardRef(({ recommended, children, className, onClick, ...props }, ref) => {
332
- const [loading, setLoading] = useState(false);
641
+ var PricingCardButton = React2.forwardRef(({ recommended, children, className, onClick, ...props }, ref) => {
642
+ const [loading, setLoading] = useState2(false);
333
643
  const handleClick = async (e) => {
334
644
  setLoading(true);
335
645
  try {
@@ -387,351 +697,37 @@ var RecommendedBadge = ({ recommended }) => {
387
697
  return /* @__PURE__ */ jsx2("div", { className: "au-bg-secondary au-absolute au-border au-text-muted-foreground au-text-sm au-font-medium lg:au-rounded-full au-px-3 lg:au-py-0.5 lg:au-top-4 lg:au-right-4 au-top-[-1px] au-right-[-1px] au-rounded-bl-lg", children: recommended });
388
698
  };
389
699
 
390
- // src/libraries/react/components/checkout-dialog/checkout-dialog-synced.tsx
700
+ // src/libraries/react/components/paywall-dialog/paywall-dialog-synced.tsx
391
701
  import { Fragment as Fragment3, jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
392
- var formatCurrency = ({
393
- amount,
394
- currency
395
- }) => {
396
- return new Intl.NumberFormat("en-US", {
397
- style: "currency",
398
- currency
399
- }).format(amount);
400
- };
401
- function CheckoutDialog(params) {
402
- const { attach } = useCustomer();
403
- const [checkoutResult, setCheckoutResult] = useState2(params?.checkoutResult);
404
- useEffect(() => {
405
- if (params.checkoutResult) {
406
- setCheckoutResult(params.checkoutResult);
407
- }
408
- }, [params.checkoutResult]);
409
- const [loading, setLoading] = useState2(false);
410
- if (!checkoutResult) {
702
+ function PaywallDialog(params) {
703
+ const { data: preview } = usePaywall({
704
+ featureId: params?.featureId,
705
+ entityId: params?.entityId
706
+ });
707
+ if (!params || !preview) {
411
708
  return /* @__PURE__ */ jsx3(Fragment3, {});
412
709
  }
413
710
  const { open, setOpen } = params;
414
- const { title, message } = getCheckoutContent(checkoutResult);
415
- const isFree = checkoutResult?.product.properties?.is_free;
416
- const isPaid = isFree === false;
417
- return /* @__PURE__ */ jsx3(Dialog, { open, onOpenChange: setOpen, children: /* @__PURE__ */ jsxs3(DialogContent, { className: "au-p-0 au-pt-4 au-gap-0 au-text-foreground au-text-sm", children: [
418
- /* @__PURE__ */ jsx3(DialogTitle, { className: "au-px-6 au-mb-1", children: title }),
419
- /* @__PURE__ */ jsx3("div", { className: "au-px-6 au-mt-1 au-mb-4 au-text-muted-foreground", children: message }),
420
- isPaid && checkoutResult && /* @__PURE__ */ jsx3(
421
- PriceInformation,
422
- {
423
- checkoutResult,
424
- setCheckoutResult
425
- }
426
- ),
427
- /* @__PURE__ */ jsx3(DialogFooter, { className: "au-flex au-flex-col sm:au-flex-row au-justify-between au-gap-x-4 au-py-2 au-pl-6 au-pr-3 au-bg-secondary au-border-t au-shadow-inner", children: /* @__PURE__ */ jsx3(
711
+ const { title, message } = getPaywallContent(preview);
712
+ return /* @__PURE__ */ jsx3(Dialog, { open, onOpenChange: setOpen, children: /* @__PURE__ */ jsxs3(DialogContent, { className: "au-p-0 au-pt-4 au-gap-0 au-text-foreground au-overflow-hidden au-text-sm", children: [
713
+ /* @__PURE__ */ jsx3(DialogTitle, { className: cn("au-font-bold au-text-xl au-px-6"), children: title }),
714
+ /* @__PURE__ */ jsx3("div", { className: "au-px-6 au-my-2", children: message }),
715
+ /* @__PURE__ */ jsx3(DialogFooter, { className: "au-flex au-flex-col sm:au-flex-row au-justify-between au-gap-x-4 au-py-2 au-mt-4 au-pl-6 au-pr-3 au-bg-secondary au-border-t", children: /* @__PURE__ */ jsx3(
428
716
  Button,
429
717
  {
430
718
  size: "sm",
719
+ className: "au-font-medium au-shadow au-transition au-min-w-20",
431
720
  onClick: async () => {
432
- setLoading(true);
433
- const options = checkoutResult.options.map((option) => {
434
- return {
435
- featureId: option.feature_id,
436
- quantity: option.quantity
437
- };
438
- });
439
- await attach({
440
- productId: checkoutResult.product.id,
441
- ...params.checkoutParams || {},
442
- options
443
- });
444
721
  setOpen(false);
445
- setLoading(false);
446
722
  },
447
- disabled: loading,
448
- className: "au-min-w-16 au-flex au-items-center au-gap-2",
449
- children: loading ? /* @__PURE__ */ jsx3(LoaderCircle, { className: "au-w-4 au-h-4 au-animate-spin" }) : /* @__PURE__ */ jsx3(Fragment3, { children: /* @__PURE__ */ jsx3("span", { className: "au-whitespace-nowrap au-flex au-gap-1", children: "Confirm" }) })
723
+ children: "Confirm"
450
724
  }
451
725
  ) })
452
726
  ] }) });
453
727
  }
454
- function PriceInformation({
455
- checkoutResult,
456
- setCheckoutResult
457
- }) {
458
- return /* @__PURE__ */ jsxs3("div", { className: "au-px-6 au-mb-4 au-flex au-flex-col au-gap-4", children: [
459
- /* @__PURE__ */ jsx3(
460
- ProductItems,
461
- {
462
- checkoutResult,
463
- setCheckoutResult
464
- }
465
- ),
466
- /* @__PURE__ */ jsxs3("div", { className: "au-flex au-flex-col au-gap-2", children: [
467
- checkoutResult?.has_prorations && checkoutResult.lines.length > 0 && /* @__PURE__ */ jsx3(CheckoutLines, { checkoutResult }),
468
- /* @__PURE__ */ jsx3(DueAmounts, { checkoutResult })
469
- ] })
470
- ] });
471
- }
472
- function DueAmounts({ checkoutResult }) {
473
- const { next_cycle, product } = checkoutResult;
474
- const nextCycleAtStr = next_cycle ? new Date(next_cycle.starts_at).toLocaleDateString() : void 0;
475
- const hasUsagePrice = product.items.some(
476
- (item) => item.usage_model === "pay_per_use"
477
- );
478
- const showNextCycle = next_cycle && next_cycle.total !== checkoutResult.total;
479
- return /* @__PURE__ */ jsxs3("div", { className: "au-flex au-flex-col au-gap-1", children: [
480
- /* @__PURE__ */ jsxs3("div", { className: "au-flex au-justify-between", children: [
481
- /* @__PURE__ */ jsx3("div", { children: /* @__PURE__ */ jsx3("p", { className: "au-font-medium au-text-md", children: "Total due today" }) }),
482
- /* @__PURE__ */ jsx3("p", { className: "au-font-medium au-text-md", children: formatCurrency({
483
- amount: checkoutResult?.total,
484
- currency: checkoutResult?.currency
485
- }) })
486
- ] }),
487
- showNextCycle && /* @__PURE__ */ jsxs3("div", { className: "au-flex au-justify-between au-text-muted-foreground", children: [
488
- /* @__PURE__ */ jsx3("div", { children: /* @__PURE__ */ jsxs3("p", { className: "au-text-md", children: [
489
- "Due next cycle (",
490
- nextCycleAtStr,
491
- ")"
492
- ] }) }),
493
- /* @__PURE__ */ jsxs3("p", { className: "au-text-md", children: [
494
- formatCurrency({
495
- amount: next_cycle.total,
496
- currency: checkoutResult?.currency
497
- }),
498
- hasUsagePrice && /* @__PURE__ */ jsx3("span", { children: " + usage prices" })
499
- ] })
500
- ] })
501
- ] });
502
- }
503
- function ProductItems({
504
- checkoutResult,
505
- setCheckoutResult
506
- }) {
507
- const isUpdateQuantity = checkoutResult?.product.scenario === "active" && checkoutResult.product.properties.updateable;
508
- const isOneOff = checkoutResult?.product.properties.is_one_off;
509
- return /* @__PURE__ */ jsxs3("div", { className: "au-flex au-flex-col au-gap-2", children: [
510
- /* @__PURE__ */ jsx3("p", { className: "au-text-sm au-font-medium", children: "Price" }),
511
- checkoutResult?.product.items.filter((item) => item.type !== "feature").map((item, index) => {
512
- if (item.usage_model == "prepaid") {
513
- return /* @__PURE__ */ jsx3(
514
- PrepaidItem,
515
- {
516
- item,
517
- checkoutResult,
518
- setCheckoutResult
519
- },
520
- index
521
- );
522
- }
523
- if (isUpdateQuantity) {
524
- return null;
525
- }
526
- return /* @__PURE__ */ jsxs3("div", { className: "au-flex au-justify-between", children: [
527
- /* @__PURE__ */ jsx3("p", { className: "au-text-muted-foreground", children: item.feature ? item.feature.name : isOneOff ? "Price" : "Subscription" }),
528
- /* @__PURE__ */ jsxs3("p", { children: [
529
- item.display?.primary_text,
530
- " ",
531
- item.display?.secondary_text
532
- ] })
533
- ] }, index);
534
- })
535
- ] });
536
- }
537
- function CheckoutLines({ checkoutResult }) {
538
- return /* @__PURE__ */ jsx3(Accordion, { type: "single", collapsible: true, children: /* @__PURE__ */ jsxs3(AccordionItem, { value: "total", className: "au-border-b-0", children: [
539
- /* @__PURE__ */ jsx3(CustomAccordionTrigger, { className: "au-justify-between au-w-full au-my-0 au-py-0 au-border-none", children: /* @__PURE__ */ jsxs3("div", { className: "au-cursor-pointer au-flex au-items-center au-gap-1 au-w-full au-justify-end", children: [
540
- /* @__PURE__ */ jsx3("p", { className: "au-font-light au-text-muted-foreground", children: "View details" }),
541
- /* @__PURE__ */ jsx3(
542
- ChevronDown,
543
- {
544
- className: "au-text-muted-foreground au-mt-0.5 au-rotate-90 au-transition-transform au-duration-200 au-ease-in-out",
545
- size: 14
546
- }
547
- )
548
- ] }) }),
549
- /* @__PURE__ */ jsx3(AccordionContent, { className: "au-mt-2 au-mb-0 au-pb-2 au-flex au-flex-col au-gap-2", children: checkoutResult?.lines.filter((line) => line.amount != 0).map((line, index) => {
550
- return /* @__PURE__ */ jsxs3("div", { className: "au-flex au-justify-between", children: [
551
- /* @__PURE__ */ jsx3("p", { className: "au-text-muted-foreground", children: line.description }),
552
- /* @__PURE__ */ jsx3("p", { className: "au-text-muted-foreground", children: new Intl.NumberFormat("en-US", {
553
- style: "currency",
554
- currency: checkoutResult?.currency
555
- }).format(line.amount) })
556
- ] }, index);
557
- }) })
558
- ] }) });
559
- }
560
- function CustomAccordionTrigger({
561
- className,
562
- children,
563
- ...props
564
- }) {
565
- return /* @__PURE__ */ jsx3(Header, { className: "au-flex", children: /* @__PURE__ */ jsx3(
566
- Trigger2,
567
- {
568
- "data-slot": "accordion-trigger",
569
- className: cn(
570
- "focus-visible:au-border-ring focus-visible:au-ring-ring/50 au-flex au-flex-1 au-items-start au-justify-between au-gap-4 au-rounded-md au-py-4 au-text-left au-text-sm au-font-medium au-transition-all au-outline-none focus-visible:au-ring-[3px] disabled:au-pointer-events-none disabled:au-opacity-50 [&[data-state=open]_svg]:au-rotate-0",
571
- className
572
- ),
573
- ...props,
574
- children
575
- }
576
- ) });
577
- }
578
- var PrepaidItem = ({
579
- item,
580
- checkoutResult,
581
- setCheckoutResult
582
- }) => {
583
- const { quantity = 0, billing_units: billingUnits = 1 } = item;
584
- const [quantityInput, setQuantityInput] = useState2(
585
- (quantity / billingUnits).toString()
586
- );
587
- const { checkout } = useCustomer();
588
- const [loading, setLoading] = useState2(false);
589
- const [open, setOpen] = useState2(false);
590
- const scenario = checkoutResult.product.scenario;
591
- const handleSave = async () => {
592
- setLoading(true);
593
- try {
594
- const newOptions = checkoutResult.options.filter((option) => option.feature_id !== item.feature_id).map((option) => {
595
- return {
596
- featureId: option.feature_id,
597
- quantity: option.quantity
598
- };
599
- });
600
- newOptions.push({
601
- featureId: item.feature_id,
602
- quantity: Number(quantityInput) * billingUnits
603
- });
604
- const { data, error } = await checkout({
605
- productId: checkoutResult.product.id,
606
- options: newOptions,
607
- dialog: CheckoutDialog
608
- });
609
- if (error) {
610
- console.error(error);
611
- return;
612
- }
613
- setCheckoutResult(data);
614
- } catch (error) {
615
- console.error(error);
616
- } finally {
617
- setLoading(false);
618
- setOpen(false);
619
- }
620
- };
621
- const disableSelection = scenario === "renew";
622
- return /* @__PURE__ */ jsxs3("div", { className: "au-flex au-justify-between au-gap-2", children: [
623
- /* @__PURE__ */ jsxs3("div", { className: "au-flex au-gap-2 au-items-start", children: [
624
- /* @__PURE__ */ jsx3("p", { className: "au-text-muted-foreground au-whitespace-nowrap", children: item.feature?.name }),
625
- /* @__PURE__ */ jsxs3(Popover, { open, onOpenChange: setOpen, children: [
626
- /* @__PURE__ */ jsxs3(
627
- PopoverTrigger,
628
- {
629
- className: cn(
630
- "au-text-muted-foreground au-text-xs au-px-1 au-py-0.5 au-rounded-md au-flex au-items-center au-gap-1 au-bg-accent/80 au-shrink-0",
631
- disableSelection !== true && "hover:au-bg-accent hover:au-text-foreground"
632
- ),
633
- disabled: disableSelection,
634
- children: [
635
- "Qty: ",
636
- quantity,
637
- /* @__PURE__ */ jsx3(ChevronDown, { size: 12 })
638
- ]
639
- }
640
- ),
641
- /* @__PURE__ */ jsxs3(
642
- PopoverContent,
643
- {
644
- align: "start",
645
- className: "au-w-80 au-text-sm au-p-4 au-pt-3 au-flex au-flex-col au-gap-4",
646
- children: [
647
- /* @__PURE__ */ jsxs3("div", { className: "au-flex au-flex-col au-gap-1", children: [
648
- /* @__PURE__ */ jsx3("p", { className: "au-text-sm au-font-medium", children: item.feature?.name }),
649
- /* @__PURE__ */ jsxs3("p", { className: "au-text-muted-foreground", children: [
650
- item.display?.primary_text,
651
- " ",
652
- item.display?.secondary_text
653
- ] })
654
- ] }),
655
- /* @__PURE__ */ jsxs3("div", { className: "au-flex au-justify-between au-items-end", children: [
656
- /* @__PURE__ */ jsxs3("div", { className: "au-flex au-gap-2 au-items-center", children: [
657
- /* @__PURE__ */ jsx3(
658
- Input,
659
- {
660
- className: "au-h-7 au-w-16 focus:!au-ring-2",
661
- value: quantityInput,
662
- onChange: (e) => setQuantityInput(e.target.value)
663
- }
664
- ),
665
- /* @__PURE__ */ jsxs3("p", { className: "au-text-muted-foreground", children: [
666
- billingUnits > 1 && `x ${billingUnits} `,
667
- item.feature?.name
668
- ] })
669
- ] }),
670
- /* @__PURE__ */ jsx3(
671
- Button,
672
- {
673
- onClick: handleSave,
674
- className: "au-w-14 !au-h-7 au-text-sm au-items-center au-bg-white au-text-foreground au-shadow-sm au-border au-border-zinc-200 hover:au-bg-zinc-100",
675
- disabled: loading,
676
- children: loading ? /* @__PURE__ */ jsx3(LoaderCircle, { className: "au-text-muted-foreground au-animate-spin !au-w-4 !au-h-4" }) : "Save"
677
- }
678
- )
679
- ] })
680
- ]
681
- }
682
- )
683
- ] })
684
- ] }),
685
- /* @__PURE__ */ jsxs3("p", { className: "au-text-end", children: [
686
- item.display?.primary_text,
687
- " ",
688
- item.display?.secondary_text
689
- ] })
690
- ] });
691
- };
692
- var PriceItem = ({
693
- children,
694
- className,
695
- ...props
696
- }) => {
697
- return /* @__PURE__ */ jsx3(
698
- "div",
699
- {
700
- className: cn(
701
- "au-flex au-flex-col au-pb-4 sm:au-pb-0 au-gap-1 sm:au-flex-row au-justify-between sm:au-h-7 sm:au-gap-2 sm:au-items-center",
702
- className
703
- ),
704
- ...props,
705
- children
706
- }
707
- );
708
- };
709
- var PricingDialogButton = ({
710
- children,
711
- size,
712
- onClick,
713
- disabled,
714
- className
715
- }) => {
716
- return /* @__PURE__ */ jsxs3(
717
- Button,
718
- {
719
- onClick,
720
- disabled,
721
- size,
722
- className: cn(className, "au-shadow-sm au-shadow-stone-400"),
723
- children: [
724
- children,
725
- /* @__PURE__ */ jsx3(ArrowRight, { className: "!au-h-3" })
726
- ]
727
- }
728
- );
729
- };
730
728
 
731
729
  export {
732
- CheckoutDialog,
733
- PriceItem,
734
- PricingDialogButton,
730
+ PaywallDialog,
735
731
  PricingTable,
736
732
  usePricingTableContext,
737
733
  PricingTableContainer,
@@ -740,5 +736,7 @@ export {
740
736
  PricingCardButton,
741
737
  AnnualSwitch,
742
738
  RecommendedBadge,
743
- PaywallDialog
739
+ CheckoutDialog,
740
+ PriceItem,
741
+ PricingDialogButton
744
742
  };