@tagadapay/headless-sdk 1.8.0-rc.0 → 1.9.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 (141) hide show
  1. package/README.md +216 -1
  2. package/dist/core/client.d.ts +68 -0
  3. package/dist/core/client.d.ts.map +1 -0
  4. package/dist/core/client.js +73 -0
  5. package/dist/core/client.js.map +1 -0
  6. package/dist/core/errors.d.ts +53 -0
  7. package/dist/core/errors.d.ts.map +1 -0
  8. package/dist/core/errors.js +58 -0
  9. package/dist/core/errors.js.map +1 -0
  10. package/dist/core/helpers/autocomplete.d.ts +89 -0
  11. package/dist/core/helpers/autocomplete.d.ts.map +1 -0
  12. package/dist/core/helpers/autocomplete.js +186 -0
  13. package/dist/core/helpers/autocomplete.js.map +1 -0
  14. package/dist/core/helpers/countries.d.ts +45 -0
  15. package/dist/core/helpers/countries.d.ts.map +1 -0
  16. package/dist/core/helpers/countries.js +65 -0
  17. package/dist/core/helpers/countries.js.map +1 -0
  18. package/dist/core/helpers/currency.d.ts +26 -0
  19. package/dist/core/helpers/currency.d.ts.map +1 -0
  20. package/dist/core/helpers/currency.js +72 -0
  21. package/dist/core/helpers/currency.js.map +1 -0
  22. package/dist/core/helpers/index.d.ts +6 -0
  23. package/dist/core/helpers/index.d.ts.map +1 -0
  24. package/dist/core/helpers/index.js +6 -0
  25. package/dist/core/helpers/index.js.map +1 -0
  26. package/dist/core/helpers/iso3166.d.ts +28 -0
  27. package/dist/core/helpers/iso3166.d.ts.map +1 -0
  28. package/dist/core/helpers/iso3166.js +84 -0
  29. package/dist/core/helpers/iso3166.js.map +1 -0
  30. package/dist/core/helpers/walletContact.d.ts +67 -0
  31. package/dist/core/helpers/walletContact.d.ts.map +1 -0
  32. package/dist/core/helpers/walletContact.js +71 -0
  33. package/dist/core/helpers/walletContact.js.map +1 -0
  34. package/dist/core/http.d.ts +27 -0
  35. package/dist/core/http.d.ts.map +1 -0
  36. package/dist/core/http.js +125 -0
  37. package/dist/core/http.js.map +1 -0
  38. package/dist/core/index.d.ts +15 -0
  39. package/dist/core/index.d.ts.map +1 -0
  40. package/dist/core/index.js +13 -0
  41. package/dist/core/index.js.map +1 -0
  42. package/dist/core/modules/catalog.d.ts +27 -0
  43. package/dist/core/modules/catalog.d.ts.map +1 -0
  44. package/dist/core/modules/catalog.js +38 -0
  45. package/dist/core/modules/catalog.js.map +1 -0
  46. package/dist/core/modules/checkout.d.ts +268 -0
  47. package/dist/core/modules/checkout.d.ts.map +1 -0
  48. package/dist/core/modules/checkout.js +470 -0
  49. package/dist/core/modules/checkout.js.map +1 -0
  50. package/dist/core/modules/customer.d.ts +33 -0
  51. package/dist/core/modules/customer.d.ts.map +1 -0
  52. package/dist/core/modules/customer.js +53 -0
  53. package/dist/core/modules/customer.js.map +1 -0
  54. package/dist/core/modules/funnel.d.ts +38 -0
  55. package/dist/core/modules/funnel.d.ts.map +1 -0
  56. package/dist/core/modules/funnel.js +143 -0
  57. package/dist/core/modules/funnel.js.map +1 -0
  58. package/dist/core/modules/offers.d.ts +137 -0
  59. package/dist/core/modules/offers.d.ts.map +1 -0
  60. package/dist/core/modules/offers.js +141 -0
  61. package/dist/core/modules/offers.js.map +1 -0
  62. package/dist/core/modules/payment.d.ts +353 -0
  63. package/dist/core/modules/payment.d.ts.map +1 -0
  64. package/dist/core/modules/payment.js +784 -0
  65. package/dist/core/modules/payment.js.map +1 -0
  66. package/dist/core/modules/rx.d.ts +162 -0
  67. package/dist/core/modules/rx.d.ts.map +1 -0
  68. package/dist/core/modules/rx.js +46 -0
  69. package/dist/core/modules/rx.js.map +1 -0
  70. package/dist/core/types.d.ts +532 -0
  71. package/dist/core/types.d.ts.map +1 -0
  72. package/dist/core/types.js +5 -0
  73. package/dist/core/types.js.map +1 -0
  74. package/dist/index.d.ts.map +1 -0
  75. package/dist/index.js.map +1 -0
  76. package/dist/react/hooks/useCatalog.d.ts +25 -0
  77. package/dist/react/hooks/useCatalog.d.ts.map +1 -0
  78. package/dist/react/hooks/useCatalog.js +58 -0
  79. package/dist/react/hooks/useCatalog.js.map +1 -0
  80. package/dist/react/hooks/useCheckout.d.ts +58 -0
  81. package/dist/react/hooks/useCheckout.d.ts.map +1 -0
  82. package/dist/react/hooks/useCheckout.js +177 -0
  83. package/dist/react/hooks/useCheckout.js.map +1 -0
  84. package/dist/react/hooks/useCustomer.d.ts +28 -0
  85. package/dist/react/hooks/useCustomer.d.ts.map +1 -0
  86. package/dist/react/hooks/useCustomer.js +77 -0
  87. package/dist/react/hooks/useCustomer.js.map +1 -0
  88. package/dist/react/hooks/useGoogleAutocomplete.d.ts +26 -0
  89. package/dist/react/hooks/useGoogleAutocomplete.d.ts.map +1 -0
  90. package/dist/react/hooks/useGoogleAutocomplete.js +70 -0
  91. package/dist/react/hooks/useGoogleAutocomplete.js.map +1 -0
  92. package/dist/react/hooks/useISOData.d.ts +23 -0
  93. package/dist/react/hooks/useISOData.d.ts.map +1 -0
  94. package/dist/react/hooks/useISOData.js +63 -0
  95. package/dist/react/hooks/useISOData.js.map +1 -0
  96. package/dist/react/hooks/useOffers.d.ts +134 -0
  97. package/dist/react/hooks/useOffers.d.ts.map +1 -0
  98. package/dist/react/hooks/useOffers.js +171 -0
  99. package/dist/react/hooks/useOffers.js.map +1 -0
  100. package/dist/react/hooks/usePayment.d.ts +117 -0
  101. package/dist/react/hooks/usePayment.d.ts.map +1 -0
  102. package/dist/react/hooks/usePayment.js +233 -0
  103. package/dist/react/hooks/usePayment.js.map +1 -0
  104. package/dist/react/hooks/useRx.d.ts +64 -0
  105. package/dist/react/hooks/useRx.d.ts.map +1 -0
  106. package/dist/react/hooks/useRx.js +145 -0
  107. package/dist/react/hooks/useRx.js.map +1 -0
  108. package/dist/react/index.d.ts +22 -0
  109. package/dist/react/index.d.ts.map +1 -0
  110. package/dist/react/index.js +12 -0
  111. package/dist/react/index.js.map +1 -0
  112. package/dist/react/internal/redirectGuard.d.ts +9 -0
  113. package/dist/react/internal/redirectGuard.d.ts.map +1 -0
  114. package/dist/react/internal/redirectGuard.js +25 -0
  115. package/dist/react/internal/redirectGuard.js.map +1 -0
  116. package/dist/react/provider.d.ts +31 -0
  117. package/dist/react/provider.d.ts.map +1 -0
  118. package/dist/react/provider.js +32 -0
  119. package/dist/react/provider.js.map +1 -0
  120. package/dist/stripe/StripeExpressButton.d.ts +30 -0
  121. package/dist/stripe/StripeExpressButton.d.ts.map +1 -0
  122. package/dist/stripe/StripeExpressButton.js +32 -0
  123. package/dist/stripe/StripeExpressButton.js.map +1 -0
  124. package/dist/stripe/StripeExpressCheckout.d.ts +109 -0
  125. package/dist/stripe/StripeExpressCheckout.d.ts.map +1 -0
  126. package/dist/stripe/StripeExpressCheckout.js +242 -0
  127. package/dist/stripe/StripeExpressCheckout.js.map +1 -0
  128. package/dist/stripe/index.d.ts +8 -0
  129. package/dist/stripe/index.d.ts.map +1 -0
  130. package/dist/stripe/index.js +15 -0
  131. package/dist/stripe/index.js.map +1 -0
  132. package/dist/stripe/useStripeExpress.d.ts +54 -0
  133. package/dist/stripe/useStripeExpress.d.ts.map +1 -0
  134. package/dist/stripe/useStripeExpress.js +125 -0
  135. package/dist/stripe/useStripeExpress.js.map +1 -0
  136. package/dist/tagada-headless-react.min.js +8 -0
  137. package/dist/tagada-headless-react.min.js.map +7 -0
  138. package/dist/tagada-headless.js +2423 -0
  139. package/dist/tagada-headless.min.js +8 -0
  140. package/dist/tagada-headless.min.js.map +7 -0
  141. package/package.json +79 -73
@@ -0,0 +1,532 @@
1
+ export type Environment = 'production' | 'development' | 'local';
2
+ export interface HeadlessConfig {
3
+ /** Your TagadaPay store ID (e.g. "store_abc123"). */
4
+ storeId: string;
5
+ /**
6
+ * Your TagadaPay account ID (e.g. "acc_abc123"). Required for
7
+ * `funnel.navigate()` — the CMS session + funnel-init endpoints reject calls
8
+ * without it. Optional for pure checkout / payment flows.
9
+ */
10
+ accountId?: string;
11
+ /** Environment. Defaults to "production". */
12
+ environment?: Environment;
13
+ /** Public API key for authenticated requests. Optional -- many flows use checkout tokens instead. */
14
+ apiKey?: string;
15
+ /** Override the base API URL. Auto-resolved from environment if omitted. */
16
+ baseUrl?: string;
17
+ /** Request timeout in ms. Default 30000. */
18
+ timeout?: number;
19
+ }
20
+ export interface HttpRequestOptions {
21
+ method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
22
+ body?: unknown;
23
+ headers?: Record<string, string>;
24
+ params?: Record<string, string | number | boolean | undefined>;
25
+ /** Override the auth token for this single request. */
26
+ token?: string;
27
+ signal?: AbortSignal;
28
+ }
29
+ export interface LineItem {
30
+ variantId: string;
31
+ priceId?: string;
32
+ quantity: number;
33
+ }
34
+ export interface CheckoutSession {
35
+ id: string;
36
+ storeId: string;
37
+ checkoutToken: string;
38
+ currency: string;
39
+ items: CheckoutLineItem[];
40
+ totals: CheckoutTotals;
41
+ customer?: CheckoutCustomer;
42
+ shippingAddress?: Address;
43
+ billingAddress?: Address;
44
+ /**
45
+ * ID of the shipping rate currently selected on the session, if any.
46
+ * Set by `selectShippingRate()` and persisted on the server. Use this
47
+ * to pre-select the radio button in your shipping rate UI after a
48
+ * page refresh — without it the customer has to re-pick the rate
49
+ * every time the form remounts.
50
+ */
51
+ selectedShippingRateId?: string | null;
52
+ promotionCode?: string;
53
+ metadata?: Record<string, unknown>;
54
+ }
55
+ export interface CheckoutLineItem {
56
+ id: string;
57
+ variantId: string;
58
+ priceId?: string;
59
+ productName: string;
60
+ variantName: string;
61
+ quantity: number;
62
+ unitAmount: number;
63
+ totalAmount: number;
64
+ currency: string;
65
+ imageUrl?: string;
66
+ recurring?: {
67
+ interval: string;
68
+ intervalCount: number;
69
+ };
70
+ }
71
+ export interface CheckoutTotals {
72
+ subtotal: number;
73
+ discount: number;
74
+ shipping: number;
75
+ tax: number;
76
+ total: number;
77
+ currency: string;
78
+ }
79
+ export interface CheckoutCustomer {
80
+ id?: string;
81
+ email?: string;
82
+ firstName?: string;
83
+ lastName?: string;
84
+ phone?: string;
85
+ }
86
+ export interface Address {
87
+ firstName?: string;
88
+ lastName?: string;
89
+ line1?: string;
90
+ line2?: string;
91
+ city?: string;
92
+ state?: string;
93
+ postalCode?: string;
94
+ country?: string;
95
+ phone?: string;
96
+ }
97
+ export interface ShippingRate {
98
+ id: string;
99
+ name: string;
100
+ description?: string;
101
+ amount: number;
102
+ currency: string;
103
+ estimatedDays?: number;
104
+ }
105
+ export interface PaymentMethodConfig {
106
+ enabled: boolean;
107
+ method: string;
108
+ provider?: string;
109
+ type?: string;
110
+ label?: string;
111
+ logoUrl?: string;
112
+ description?: string;
113
+ express?: boolean;
114
+ paymentFlowId?: string;
115
+ processorId?: string;
116
+ integrationId?: string;
117
+ publishableKey?: string;
118
+ /** Map of express method keys to their enabled state (e.g. apple_pay, google_pay). */
119
+ methods?: Record<string, {
120
+ enabled: boolean;
121
+ }>;
122
+ metadata?: Record<string, unknown>;
123
+ }
124
+ export type PaymentSetupConfig = Record<string, PaymentMethodConfig>;
125
+ export interface ExpressMethod {
126
+ type: string;
127
+ available: boolean;
128
+ processorId?: string;
129
+ publishableKey?: string;
130
+ metadata?: Record<string, unknown>;
131
+ }
132
+ export interface ExpressMethods {
133
+ applePay?: ExpressMethod;
134
+ googlePay?: ExpressMethod;
135
+ paypal?: ExpressMethod;
136
+ klarna?: ExpressMethod;
137
+ link?: ExpressMethod;
138
+ }
139
+ /**
140
+ * Options for initializing the Stripe Express Checkout Element.
141
+ * Used by `StripeExpressCheckout` (vanilla) and `useStripeExpress` (React).
142
+ */
143
+ export interface StripeExpressOptions {
144
+ /** Stripe publishable key (pk_xxx). Obtained from `getExpressMethods()`. */
145
+ publishableKey: string;
146
+ /** Processor ID for the Stripe express integration. */
147
+ processorId: string;
148
+ /** Which express methods to show: 'apple_pay', 'google_pay', 'link', 'klarna_express'. */
149
+ enabledMethods?: string[];
150
+ /** Button height in pixels. Default: 48. */
151
+ buttonHeight?: number;
152
+ /** Button type for Apple Pay / Google Pay. Default: 'buy'. */
153
+ buttonType?: 'buy' | 'plain' | 'book' | 'donate' | 'checkout';
154
+ /** Require email from the wallet. Default: true. */
155
+ emailRequired?: boolean;
156
+ /** Require billing address from the wallet. Default: true. */
157
+ billingAddressRequired?: boolean;
158
+ /**
159
+ * Ask the wallet sheet for a delivery address. Default: false.
160
+ *
161
+ * Turn this on for carts that ship — whatever the buyer approves is written
162
+ * to the session before the charge, so the order carries a destination
163
+ * (#TAG-1989). The billing address is captured either way.
164
+ */
165
+ shippingAddressRequired?: boolean;
166
+ }
167
+ export interface StoreConfig {
168
+ threedsEnabled: boolean;
169
+ paymentFlowId?: string;
170
+ [key: string]: unknown;
171
+ }
172
+ export interface PayResult {
173
+ payment: {
174
+ id: string;
175
+ amount: number;
176
+ currency: string;
177
+ status: 'succeeded' | 'pending' | 'failed' | 'declined' | 'requires_action';
178
+ requireAction?: 'none' | 'threeds_auth' | 'redirect';
179
+ requireActionData?: {
180
+ type: string;
181
+ processed?: boolean;
182
+ redirectUrl?: string;
183
+ metadata?: {
184
+ type?: string;
185
+ redirect?: {
186
+ redirectUrl: string;
187
+ returnUrl: string;
188
+ method?: string;
189
+ data?: Record<string, string>;
190
+ };
191
+ threedsSession?: {
192
+ externalSessionId: string;
193
+ acsChallengeUrl: string;
194
+ acsTransID: string;
195
+ messageVersion: string;
196
+ };
197
+ [key: string]: unknown;
198
+ };
199
+ resumeToken?: string;
200
+ message?: string;
201
+ errorCode?: string;
202
+ };
203
+ };
204
+ order?: {
205
+ id: string;
206
+ checkoutSessionId?: string;
207
+ };
208
+ redirectUrl?: string;
209
+ }
210
+ /**
211
+ * Options for `processPayment()`. Same as `PayOptions` with an optional
212
+ * `returnUrl` that the processor will redirect back to after 3DS / auth.
213
+ * If omitted, the SDK uses `window.location.href` (browser) or throws (Node).
214
+ */
215
+ export interface ProcessPaymentOptions extends PayOptions {
216
+ /**
217
+ * URL the bank / PSP redirects back to after 3DS or processor auth.
218
+ * The URL will receive query params: `paymentAction`, `paymentActionStatus`, `paymentId`.
219
+ * Default: current page URL (browser only).
220
+ */
221
+ returnUrl?: string;
222
+ }
223
+ /**
224
+ * Discriminated union returned by `processPayment()`.
225
+ *
226
+ * - `succeeded` — payment is confirmed. Show a success screen.
227
+ * - `requires_redirect` — user must be redirected to a URL (3DS, processor auth, APM).
228
+ * In React, `usePayment().processPayment()` handles this automatically.
229
+ * - `failed` — payment was declined or errored.
230
+ * - `pending` — payment is still processing (rare edge case if polling timed out).
231
+ */
232
+ export type ProcessPaymentResult = {
233
+ status: 'succeeded';
234
+ payment: PayResult['payment'];
235
+ order?: PayResult['order'];
236
+ } | {
237
+ status: 'requires_redirect';
238
+ redirectUrl: string;
239
+ method?: 'GET' | 'POST';
240
+ postData?: Record<string, string>;
241
+ paymentId: string;
242
+ } | {
243
+ status: 'failed';
244
+ error: string;
245
+ payment?: PayResult['payment'];
246
+ } | {
247
+ status: 'pending';
248
+ paymentId: string;
249
+ };
250
+ export interface PayOptions {
251
+ checkoutSessionId: string;
252
+ /** Base64-encoded TagadaToken from tokenizeCard(). Instrument is auto-created. */
253
+ tagadaToken?: string;
254
+ /** Existing payment instrument ID (skip instrument creation). */
255
+ paymentInstrumentId?: string;
256
+ paymentFlowId?: string;
257
+ threedsSessionId?: string;
258
+ processorId?: string;
259
+ paymentMethod?: string;
260
+ isExpress?: boolean;
261
+ metadata?: Record<string, unknown>;
262
+ /**
263
+ * URL the bank / PSP redirects back to after 3DS or processor auth.
264
+ * If omitted during `processPayment()`, defaults to `window.location.href`.
265
+ */
266
+ returnUrl?: string;
267
+ }
268
+ export interface PayDirectOptions {
269
+ checkoutSessionId: string;
270
+ paymentInstrumentId?: string;
271
+ paymentFlowId?: string;
272
+ processorId?: string;
273
+ paymentMethod?: string;
274
+ isExpress?: boolean;
275
+ threedsSessionId?: string;
276
+ returnUrl?: string;
277
+ }
278
+ export interface CreateInstrumentOptions {
279
+ tagadaToken: string;
280
+ storeId: string;
281
+ customerData?: {
282
+ email?: string;
283
+ firstName?: string;
284
+ lastName?: string;
285
+ };
286
+ customerId?: string;
287
+ }
288
+ export interface PaymentInstrument {
289
+ id: string;
290
+ type: string;
291
+ customerId: string;
292
+ card?: {
293
+ last4: string;
294
+ brand: string;
295
+ expMonth: number;
296
+ expYear: number;
297
+ };
298
+ }
299
+ export interface ThreedsSession {
300
+ id: string;
301
+ externalSessionId: string;
302
+ provider: string;
303
+ status: string;
304
+ paymentInstrumentId: string;
305
+ }
306
+ export interface PaymentStatus {
307
+ id: string;
308
+ amount: number;
309
+ currency: string;
310
+ status: 'succeeded' | 'pending' | 'failed' | 'declined';
311
+ subStatus?: string;
312
+ requireAction?: string;
313
+ requireActionData?: PayResult['payment']['requireActionData'];
314
+ order?: {
315
+ id: string;
316
+ checkoutSessionId?: string;
317
+ };
318
+ }
319
+ export interface Offer {
320
+ id: string;
321
+ type: 'upsell' | 'downsell' | 'orderbump';
322
+ title: string;
323
+ titleTrans?: Record<string, string>;
324
+ description?: string;
325
+ lineItems: OfferLineItem[];
326
+ pricing?: {
327
+ amount: number;
328
+ currency: string;
329
+ compareAtAmount?: number;
330
+ };
331
+ metadata?: Record<string, unknown>;
332
+ }
333
+ export interface OfferLineItem {
334
+ id: string;
335
+ priceId: string;
336
+ productId?: string;
337
+ variantId?: string;
338
+ quantity: number;
339
+ productName?: string;
340
+ variantName?: string;
341
+ imageUrl?: string;
342
+ unitAmount?: number;
343
+ currency?: string;
344
+ }
345
+ export interface OfferPreview {
346
+ items: OfferPreviewItem[];
347
+ totalAmount: number;
348
+ totalAdjustedAmount: number;
349
+ currency: string;
350
+ }
351
+ export interface OfferPreviewItem {
352
+ id: string;
353
+ productId: string;
354
+ productName: string;
355
+ variantId: string;
356
+ variantName: string;
357
+ imageUrl?: string;
358
+ quantity: number;
359
+ unitAmount: number;
360
+ currency: string;
361
+ }
362
+ /**
363
+ * Response shape from `POST /api/v1/offers/:offerId/pay-preview`.
364
+ *
365
+ * The server pipeline runs preview → transform-to-checkout → prepare-order →
366
+ * payOrder, then returns each intermediate object so the client can either:
367
+ * - inspect `payment.status` to know if the upsell charge succeeded,
368
+ * - read `order.id` to chain to a follow-up upsell, or
369
+ * - read `payment.requireAction` to handle a 3DS challenge inline.
370
+ *
371
+ * Mirrors the structure of `PayResult` (`{ payment, order }`) plus the
372
+ * `preview` and `checkout` artifacts. Lifecycle helpers like
373
+ * `processPayment()` are NOT used internally by `pay-preview` — if the
374
+ * upsell card requires 3DS, callers should read `payment.requireActionData`
375
+ * and either redirect or fall back to a customer-present retry.
376
+ */
377
+ export interface OfferPayResult {
378
+ /** Pricing breakdown that was previewed before charging. */
379
+ preview: OfferPreview;
380
+ /** Newly-created upsell checkout session (linked to `mainOrderId`). */
381
+ checkout: {
382
+ checkoutUrl: string;
383
+ customerId?: string;
384
+ checkoutSessionId?: string;
385
+ checkoutToken?: string;
386
+ };
387
+ /**
388
+ * Payment outcome from the upsell charge.
389
+ * Same shape as `PayResult['payment']` returned by `pay()`.
390
+ */
391
+ payment: PayResult['payment'];
392
+ /** Newly-created upsell order (`order.id` chains to the next upsell as `mainOrderId`). */
393
+ order?: {
394
+ id: string;
395
+ status?: string;
396
+ checkoutSessionId?: string;
397
+ };
398
+ }
399
+ export interface CatalogProduct {
400
+ id: string;
401
+ name: string;
402
+ description?: string;
403
+ active: boolean;
404
+ variants: CatalogVariant[];
405
+ }
406
+ export interface CatalogVariant {
407
+ id: string;
408
+ productId: string;
409
+ name: string;
410
+ description?: string;
411
+ sku?: string;
412
+ price?: number;
413
+ currency?: string;
414
+ compareAtPrice?: number;
415
+ imageUrl?: string;
416
+ active: boolean;
417
+ inStock: boolean;
418
+ prices: CatalogPrice[];
419
+ }
420
+ export interface CurrencyOption {
421
+ amount: number;
422
+ compareAtAmount?: number;
423
+ }
424
+ export interface CatalogPrice {
425
+ id: string;
426
+ variantId?: string;
427
+ default: boolean;
428
+ currencyOptions: Record<string, CurrencyOption>;
429
+ recurring: boolean;
430
+ interval?: string;
431
+ intervalCount?: number;
432
+ }
433
+ export interface Customer {
434
+ id: string;
435
+ email: string;
436
+ firstName?: string;
437
+ lastName?: string;
438
+ phone?: string;
439
+ tags?: string[];
440
+ metadata?: Record<string, unknown>;
441
+ createdAt?: string;
442
+ }
443
+ export interface Order {
444
+ id: string;
445
+ storeId: string;
446
+ customerId: string;
447
+ amount: number;
448
+ currency: string;
449
+ status: string;
450
+ items: OrderItem[];
451
+ createdAt: string;
452
+ }
453
+ export interface OrderItem {
454
+ id: string;
455
+ productName: string;
456
+ variantName: string;
457
+ quantity: number;
458
+ unitAmount: number;
459
+ totalAmount: number;
460
+ }
461
+ export interface Subscription {
462
+ id: string;
463
+ customerId: string;
464
+ storeId: string;
465
+ status: 'trialing' | 'active' | 'past_due' | 'paused' | 'canceled';
466
+ priceId: string;
467
+ currency: string;
468
+ amount: number;
469
+ interval: string;
470
+ intervalCount: number;
471
+ currentPeriodStart: string;
472
+ currentPeriodEnd: string;
473
+ cancelAtPeriodEnd: boolean;
474
+ }
475
+ export interface FunnelNavigateInput {
476
+ /** Funnel ID to enter (e.g. "fnlv2_..."). */
477
+ funnelId: string;
478
+ /**
479
+ * Funnel step to land on. Used for both `entryStepId` and `funnelStepId`,
480
+ * matching the WooCommerce plugin behaviour.
481
+ */
482
+ stepId: string;
483
+ /** Where the funnel should send the shopper back to after checkout. */
484
+ returnUrl?: string;
485
+ /**
486
+ * Customer overrides. Defaults are sourced from the currently-loaded
487
+ * `CheckoutSession` (`session.customer.email`, `session.currency`).
488
+ */
489
+ customer?: {
490
+ email?: string;
491
+ currency?: string;
492
+ locale?: string;
493
+ };
494
+ /**
495
+ * Discount codes to apply. Defaults to the session's `promotionCode` if set.
496
+ */
497
+ discountCodes?: string[];
498
+ /** Arbitrary metadata forwarded to the funnel-navigate event. */
499
+ metadata?: Record<string, unknown>;
500
+ /**
501
+ * Shipping amount already settled on by the source storefront, in minor units
502
+ * (e.g. `{ amount: 1200, currency: 'USD' }` for $12.00).
503
+ *
504
+ * When set, the checkout session is pinned to a rate matching this exact
505
+ * amount — an existing rate if one matches, otherwise a dynamically created
506
+ * one — so the shopper is charged the shipping they agreed to on your
507
+ * storefront instead of whatever rate the platform would auto-select.
508
+ *
509
+ * Only send this once your storefront has genuinely computed shipping.
510
+ * `{ amount: 0 }` means *free shipping* and pins a free rate; it is not a
511
+ * stand-in for "not known yet". Omit the field entirely while shipping is
512
+ * unresolved, and the platform selects a rate as before.
513
+ */
514
+ externalShipping?: {
515
+ amount: number;
516
+ currency: string;
517
+ };
518
+ /**
519
+ * Override the page URL recorded by the funnel. Defaults to
520
+ * `globalThis.location?.href` when running in a browser.
521
+ */
522
+ currentUrl?: string;
523
+ /** Override `accountId` per-call. Falls back to `HeadlessConfig.accountId`. */
524
+ accountId?: string;
525
+ }
526
+ export interface FunnelNavigateResult {
527
+ /** Fully-qualified URL the caller should redirect the shopper to. */
528
+ url: string;
529
+ /** Funnel session id (`context.sessionId` from `/funnel/initialize`). */
530
+ funnelSessionId: string;
531
+ }
532
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Configuration
3
+ // ---------------------------------------------------------------------------
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,gBAAgB;AAChB,8EAA8E"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,25 @@
1
+ import type { CatalogProduct } from '../../core/types.js';
2
+ export interface UseCatalogReturn {
3
+ products: CatalogProduct[];
4
+ isLoading: boolean;
5
+ error: Error | null;
6
+ /** Fetch all products for the store. */
7
+ loadProducts: (opts?: {
8
+ productIds?: string[];
9
+ variantIds?: string[];
10
+ }) => Promise<CatalogProduct[]>;
11
+ /** Fetch a single product by ID. */
12
+ loadProduct: (productId: string) => Promise<CatalogProduct | null>;
13
+ }
14
+ /**
15
+ * React hook for browsing the store's product catalog.
16
+ *
17
+ * @example
18
+ * ```tsx
19
+ * const { products, isLoading, loadProducts } = useCatalog();
20
+ *
21
+ * useEffect(() => { loadProducts(); }, []);
22
+ * ```
23
+ */
24
+ export declare function useCatalog(): UseCatalogReturn;
25
+ //# sourceMappingURL=useCatalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCatalog.d.ts","sourceRoot":"","sources":["../../../src/react/hooks/useCatalog.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,wCAAwC;IACxC,YAAY,EAAE,CAAC,IAAI,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,KAAK,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IACrG,oCAAoC;IACpC,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;CACpE;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,IAAI,gBAAgB,CA2C7C"}
@@ -0,0 +1,58 @@
1
+ import { useState, useCallback } from 'react';
2
+ import { useHeadlessClient } from '../provider.js';
3
+ /**
4
+ * React hook for browsing the store's product catalog.
5
+ *
6
+ * @example
7
+ * ```tsx
8
+ * const { products, isLoading, loadProducts } = useCatalog();
9
+ *
10
+ * useEffect(() => { loadProducts(); }, []);
11
+ * ```
12
+ */
13
+ export function useCatalog() {
14
+ const client = useHeadlessClient();
15
+ const [products, setProducts] = useState([]);
16
+ const [isLoading, setIsLoading] = useState(false);
17
+ const [error, setError] = useState(null);
18
+ const loadProducts = useCallback(async (opts) => {
19
+ setIsLoading(true);
20
+ setError(null);
21
+ try {
22
+ const items = await client.catalog.getProducts(opts);
23
+ setProducts(items);
24
+ return items;
25
+ }
26
+ catch (err) {
27
+ const e = err instanceof Error ? err : new Error(String(err));
28
+ setError(e);
29
+ throw e;
30
+ }
31
+ finally {
32
+ setIsLoading(false);
33
+ }
34
+ }, [client]);
35
+ const loadProduct = useCallback(async (productId) => {
36
+ setIsLoading(true);
37
+ setError(null);
38
+ try {
39
+ return await client.catalog.getProduct(productId);
40
+ }
41
+ catch (err) {
42
+ const e = err instanceof Error ? err : new Error(String(err));
43
+ setError(e);
44
+ throw e;
45
+ }
46
+ finally {
47
+ setIsLoading(false);
48
+ }
49
+ }, [client]);
50
+ return {
51
+ products,
52
+ isLoading,
53
+ error,
54
+ loadProducts,
55
+ loadProduct,
56
+ };
57
+ }
58
+ //# sourceMappingURL=useCatalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCatalog.js","sourceRoot":"","sources":["../../../src/react/hooks/useCatalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAanD;;;;;;;;;GASG;AACH,MAAM,UAAU,UAAU;IACxB,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;IACnC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAmB,EAAE,CAAC,CAAC;IAC/D,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAe,IAAI,CAAC,CAAC;IAEvD,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,EAAE,IAAuD,EAAE,EAAE;QACjG,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACrD,WAAW,CAAC,KAAK,CAAC,CAAC;YACnB,OAAO,KAAK,CAAC;QACf,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9D,QAAQ,CAAC,CAAC,CAAC,CAAC;YACZ,MAAM,CAAC,CAAC;QACV,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,EAAE,SAAiB,EAAE,EAAE;QAC1D,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,IAAI,CAAC;YACH,OAAO,MAAM,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9D,QAAQ,CAAC,CAAC,CAAC,CAAC;YACZ,MAAM,CAAC,CAAC;QACV,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,OAAO;QACL,QAAQ;QACR,SAAS;QACT,KAAK;QACL,YAAY;QACZ,WAAW;KACZ,CAAC;AACJ,CAAC"}