@tagadapay/headless-sdk 1.0.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 (79) hide show
  1. package/README.md +110 -0
  2. package/dist/core/client.d.ts +48 -0
  3. package/dist/core/client.d.ts.map +1 -0
  4. package/dist/core/client.js +61 -0
  5. package/dist/core/client.js.map +1 -0
  6. package/dist/core/errors.d.ts +46 -0
  7. package/dist/core/errors.d.ts.map +1 -0
  8. package/dist/core/errors.js +57 -0
  9. package/dist/core/errors.js.map +1 -0
  10. package/dist/core/http.d.ts +27 -0
  11. package/dist/core/http.d.ts.map +1 -0
  12. package/dist/core/http.js +116 -0
  13. package/dist/core/http.js.map +1 -0
  14. package/dist/core/index.d.ts +10 -0
  15. package/dist/core/index.d.ts.map +1 -0
  16. package/dist/core/index.js +9 -0
  17. package/dist/core/index.js.map +1 -0
  18. package/dist/core/modules/analytics.d.ts +79 -0
  19. package/dist/core/modules/analytics.d.ts.map +1 -0
  20. package/dist/core/modules/analytics.js +265 -0
  21. package/dist/core/modules/analytics.js.map +1 -0
  22. package/dist/core/modules/checkout.d.ts +67 -0
  23. package/dist/core/modules/checkout.d.ts.map +1 -0
  24. package/dist/core/modules/checkout.js +164 -0
  25. package/dist/core/modules/checkout.js.map +1 -0
  26. package/dist/core/modules/customer.d.ts +33 -0
  27. package/dist/core/modules/customer.d.ts.map +1 -0
  28. package/dist/core/modules/customer.js +53 -0
  29. package/dist/core/modules/customer.js.map +1 -0
  30. package/dist/core/modules/offers.d.ts +43 -0
  31. package/dist/core/modules/offers.d.ts.map +1 -0
  32. package/dist/core/modules/offers.js +56 -0
  33. package/dist/core/modules/offers.js.map +1 -0
  34. package/dist/core/modules/payment.d.ts +123 -0
  35. package/dist/core/modules/payment.d.ts.map +1 -0
  36. package/dist/core/modules/payment.js +279 -0
  37. package/dist/core/modules/payment.js.map +1 -0
  38. package/dist/core/types.d.ts +276 -0
  39. package/dist/core/types.d.ts.map +1 -0
  40. package/dist/core/types.js +5 -0
  41. package/dist/core/types.js.map +1 -0
  42. package/dist/index.d.ts +2 -0
  43. package/dist/index.d.ts.map +1 -0
  44. package/dist/index.js +2 -0
  45. package/dist/index.js.map +1 -0
  46. package/dist/react/hooks/useAnalytics.d.ts +59 -0
  47. package/dist/react/hooks/useAnalytics.d.ts.map +1 -0
  48. package/dist/react/hooks/useAnalytics.js +49 -0
  49. package/dist/react/hooks/useAnalytics.js.map +1 -0
  50. package/dist/react/hooks/useCheckout.d.ts +45 -0
  51. package/dist/react/hooks/useCheckout.d.ts.map +1 -0
  52. package/dist/react/hooks/useCheckout.js +113 -0
  53. package/dist/react/hooks/useCheckout.js.map +1 -0
  54. package/dist/react/hooks/useCustomer.d.ts +28 -0
  55. package/dist/react/hooks/useCustomer.d.ts.map +1 -0
  56. package/dist/react/hooks/useCustomer.js +77 -0
  57. package/dist/react/hooks/useCustomer.js.map +1 -0
  58. package/dist/react/hooks/useOffers.d.ts +45 -0
  59. package/dist/react/hooks/useOffers.d.ts.map +1 -0
  60. package/dist/react/hooks/useOffers.js +88 -0
  61. package/dist/react/hooks/useOffers.js.map +1 -0
  62. package/dist/react/hooks/usePayment.d.ts +63 -0
  63. package/dist/react/hooks/usePayment.d.ts.map +1 -0
  64. package/dist/react/hooks/usePayment.js +114 -0
  65. package/dist/react/hooks/usePayment.js.map +1 -0
  66. package/dist/react/index.d.ts +14 -0
  67. package/dist/react/index.d.ts.map +1 -0
  68. package/dist/react/index.js +7 -0
  69. package/dist/react/index.js.map +1 -0
  70. package/dist/react/provider.d.ts +31 -0
  71. package/dist/react/provider.d.ts.map +1 -0
  72. package/dist/react/provider.js +32 -0
  73. package/dist/react/provider.js.map +1 -0
  74. package/dist/tagada-headless-react.min.js +8 -0
  75. package/dist/tagada-headless-react.min.js.map +7 -0
  76. package/dist/tagada-headless.js +1093 -0
  77. package/dist/tagada-headless.min.js +8 -0
  78. package/dist/tagada-headless.min.js.map +7 -0
  79. package/package.json +72 -0
@@ -0,0 +1,276 @@
1
+ export type Environment = 'production' | 'development' | 'local';
2
+ export interface HeadlessConfig {
3
+ /** Your TagadaPay store ID (e.g. "store_abc123"). */
4
+ storeId: string;
5
+ /** Environment. Defaults to "production". */
6
+ environment?: Environment;
7
+ /** Public API key for authenticated requests. Optional -- many flows use checkout tokens instead. */
8
+ apiKey?: string;
9
+ /** Override the base API URL. Auto-resolved from environment if omitted. */
10
+ baseUrl?: string;
11
+ /** Request timeout in ms. Default 30000. */
12
+ timeout?: number;
13
+ }
14
+ export interface HttpRequestOptions {
15
+ method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
16
+ body?: unknown;
17
+ headers?: Record<string, string>;
18
+ params?: Record<string, string | number | boolean | undefined>;
19
+ /** Override the auth token for this single request. */
20
+ token?: string;
21
+ signal?: AbortSignal;
22
+ }
23
+ export interface LineItem {
24
+ variantId: string;
25
+ priceId?: string;
26
+ quantity: number;
27
+ }
28
+ export interface CheckoutSession {
29
+ id: string;
30
+ storeId: string;
31
+ checkoutToken: string;
32
+ currency: string;
33
+ items: CheckoutLineItem[];
34
+ totals: CheckoutTotals;
35
+ customer?: CheckoutCustomer;
36
+ shippingAddress?: Address;
37
+ billingAddress?: Address;
38
+ promotionCode?: string;
39
+ metadata?: Record<string, unknown>;
40
+ }
41
+ export interface CheckoutLineItem {
42
+ id: string;
43
+ variantId: string;
44
+ priceId?: string;
45
+ productName: string;
46
+ variantName: string;
47
+ quantity: number;
48
+ unitAmount: number;
49
+ totalAmount: number;
50
+ currency: string;
51
+ imageUrl?: string;
52
+ recurring?: {
53
+ interval: string;
54
+ intervalCount: number;
55
+ };
56
+ }
57
+ export interface CheckoutTotals {
58
+ subtotal: number;
59
+ discount: number;
60
+ shipping: number;
61
+ tax: number;
62
+ total: number;
63
+ currency: string;
64
+ }
65
+ export interface CheckoutCustomer {
66
+ id?: string;
67
+ email?: string;
68
+ firstName?: string;
69
+ lastName?: string;
70
+ phone?: string;
71
+ }
72
+ export interface Address {
73
+ line1?: string;
74
+ line2?: string;
75
+ city?: string;
76
+ state?: string;
77
+ postalCode?: string;
78
+ country?: string;
79
+ }
80
+ export interface ShippingRate {
81
+ id: string;
82
+ name: string;
83
+ description?: string;
84
+ amount: number;
85
+ currency: string;
86
+ estimatedDays?: number;
87
+ }
88
+ export interface PaymentMethodConfig {
89
+ enabled: boolean;
90
+ method: string;
91
+ provider?: string;
92
+ type?: string;
93
+ label?: string;
94
+ logoUrl?: string;
95
+ description?: string;
96
+ express?: boolean;
97
+ paymentFlowId?: string;
98
+ processorId?: string;
99
+ integrationId?: string;
100
+ publishableKey?: string;
101
+ metadata?: Record<string, unknown>;
102
+ }
103
+ export type PaymentSetupConfig = Record<string, PaymentMethodConfig>;
104
+ export interface ExpressMethod {
105
+ type: string;
106
+ available: boolean;
107
+ processorId?: string;
108
+ publishableKey?: string;
109
+ metadata?: Record<string, unknown>;
110
+ }
111
+ export interface ExpressMethods {
112
+ applePay?: ExpressMethod;
113
+ googlePay?: ExpressMethod;
114
+ paypal?: ExpressMethod;
115
+ klarna?: ExpressMethod;
116
+ link?: ExpressMethod;
117
+ }
118
+ export interface StoreConfig {
119
+ threedsEnabled: boolean;
120
+ paymentFlowId?: string;
121
+ [key: string]: unknown;
122
+ }
123
+ export interface PayResult {
124
+ payment: {
125
+ id: string;
126
+ amount: number;
127
+ currency: string;
128
+ status: 'succeeded' | 'pending' | 'failed' | 'declined' | 'requires_action';
129
+ requireAction?: 'none' | 'threeds_auth' | 'redirect';
130
+ requireActionData?: {
131
+ type: string;
132
+ redirectUrl?: string;
133
+ metadata?: Record<string, unknown>;
134
+ };
135
+ };
136
+ }
137
+ export interface PayOptions {
138
+ checkoutSessionId: string;
139
+ /** Base64-encoded TagadaToken from tokenizeCard(). Instrument is auto-created. */
140
+ tagadaToken?: string;
141
+ /** Existing payment instrument ID (skip instrument creation). */
142
+ paymentInstrumentId?: string;
143
+ paymentFlowId?: string;
144
+ threedsSessionId?: string;
145
+ processorId?: string;
146
+ paymentMethod?: string;
147
+ isExpress?: boolean;
148
+ metadata?: Record<string, unknown>;
149
+ }
150
+ export interface PayDirectOptions {
151
+ checkoutSessionId: string;
152
+ paymentInstrumentId?: string;
153
+ paymentFlowId?: string;
154
+ processorId?: string;
155
+ paymentMethod?: string;
156
+ isExpress?: boolean;
157
+ threedsSessionId?: string;
158
+ }
159
+ export interface CreateInstrumentOptions {
160
+ tagadaToken: string;
161
+ storeId: string;
162
+ customerData?: {
163
+ email?: string;
164
+ firstName?: string;
165
+ lastName?: string;
166
+ };
167
+ customerId?: string;
168
+ }
169
+ export interface PaymentInstrument {
170
+ id: string;
171
+ type: string;
172
+ customerId: string;
173
+ card?: {
174
+ last4: string;
175
+ brand: string;
176
+ expMonth: number;
177
+ expYear: number;
178
+ };
179
+ }
180
+ export interface ThreedsSession {
181
+ id: string;
182
+ externalSessionId: string;
183
+ provider: string;
184
+ status: string;
185
+ paymentInstrumentId: string;
186
+ }
187
+ export interface PaymentStatus {
188
+ id: string;
189
+ amount: number;
190
+ currency: string;
191
+ status: 'succeeded' | 'pending' | 'failed' | 'declined';
192
+ requireAction?: string;
193
+ }
194
+ export interface AnalyticsEvent {
195
+ event: string;
196
+ data?: Record<string, unknown>;
197
+ timestamp?: number;
198
+ }
199
+ export interface PixelConfig {
200
+ metaPixelId?: string;
201
+ tiktokPixelId?: string;
202
+ snapchatPixelId?: string;
203
+ pinterestTagId?: string;
204
+ gtmId?: string;
205
+ gaId?: string;
206
+ }
207
+ export interface Offer {
208
+ id: string;
209
+ type: 'upsell' | 'downsell' | 'orderbump';
210
+ title: string;
211
+ titleTrans?: Record<string, string>;
212
+ description?: string;
213
+ lineItems: OfferLineItem[];
214
+ pricing?: {
215
+ amount: number;
216
+ currency: string;
217
+ compareAtAmount?: number;
218
+ };
219
+ metadata?: Record<string, unknown>;
220
+ }
221
+ export interface OfferLineItem {
222
+ priceId: string;
223
+ quantity: number;
224
+ productName?: string;
225
+ variantName?: string;
226
+ amount?: number;
227
+ }
228
+ export interface OfferResult {
229
+ success: boolean;
230
+ orderId?: string;
231
+ paymentId?: string;
232
+ error?: string;
233
+ }
234
+ export interface Customer {
235
+ id: string;
236
+ email: string;
237
+ firstName?: string;
238
+ lastName?: string;
239
+ phone?: string;
240
+ tags?: string[];
241
+ metadata?: Record<string, unknown>;
242
+ createdAt?: string;
243
+ }
244
+ export interface Order {
245
+ id: string;
246
+ storeId: string;
247
+ customerId: string;
248
+ amount: number;
249
+ currency: string;
250
+ status: string;
251
+ items: OrderItem[];
252
+ createdAt: string;
253
+ }
254
+ export interface OrderItem {
255
+ id: string;
256
+ productName: string;
257
+ variantName: string;
258
+ quantity: number;
259
+ unitAmount: number;
260
+ totalAmount: number;
261
+ }
262
+ export interface Subscription {
263
+ id: string;
264
+ customerId: string;
265
+ storeId: string;
266
+ status: 'trialing' | 'active' | 'past_due' | 'paused' | 'canceled';
267
+ priceId: string;
268
+ currency: string;
269
+ amount: number;
270
+ interval: string;
271
+ intervalCount: number;
272
+ currentPeriodStart: string;
273
+ currentPeriodEnd: string;
274
+ cancelAtPeriodEnd: boolean;
275
+ }
276
+ //# 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,2 @@
1
+ export * from './core/index.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export * from './core/index.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,59 @@
1
+ import type { PixelConfig } from '../../core/types.js';
2
+ export interface UseAnalyticsReturn {
3
+ trackPageView: (page?: string) => void;
4
+ trackViewContent: (data: {
5
+ productId?: string;
6
+ variantId?: string;
7
+ value?: number;
8
+ currency?: string;
9
+ }) => void;
10
+ trackAddToCart: (data: {
11
+ variantId: string;
12
+ quantity?: number;
13
+ amount?: number;
14
+ currency?: string;
15
+ }) => void;
16
+ trackInitiateCheckout: (data?: {
17
+ sessionId?: string;
18
+ value?: number;
19
+ currency?: string;
20
+ }) => void;
21
+ trackAddPaymentInfo: (data?: {
22
+ paymentMethod?: string;
23
+ }) => void;
24
+ trackPurchase: (data: {
25
+ orderId: string;
26
+ amount: number;
27
+ currency: string;
28
+ }) => void;
29
+ trackStep: (data: {
30
+ stepName: string;
31
+ stepIndex?: number;
32
+ }) => void;
33
+ trackConversion: (data: {
34
+ orderId: string;
35
+ amount: number;
36
+ currency: string;
37
+ }) => void;
38
+ trackCustomEvent: (event: string, data?: Record<string, unknown>) => void;
39
+ }
40
+ /**
41
+ * React hook for analytics and pixel tracking.
42
+ *
43
+ * Auto-initializes on mount, loading pixel config from the store.
44
+ * All track methods fire events to configured pixels (Meta, TikTok, Snap, GTM, GA).
45
+ *
46
+ * @example
47
+ * ```tsx
48
+ * const { trackPageView, trackPurchase } = useAnalytics();
49
+ *
50
+ * useEffect(() => { trackPageView('/checkout'); }, []);
51
+ *
52
+ * // After payment
53
+ * trackPurchase({ orderId: 'ord_xxx', amount: 4900, currency: 'USD' });
54
+ * ```
55
+ */
56
+ export declare function useAnalytics(opts?: {
57
+ pixelConfig?: PixelConfig;
58
+ }): UseAnalyticsReturn;
59
+ //# sourceMappingURL=useAnalytics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAnalytics.d.ts","sourceRoot":"","sources":["../../../src/react/hooks/useAnalytics.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,gBAAgB,EAAE,CAAC,IAAI,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAChH,cAAc,EAAE,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC7G,qBAAqB,EAAE,CAAC,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAClG,mBAAmB,EAAE,CAAC,IAAI,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACjE,aAAa,EAAE,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACrF,SAAS,EAAE,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACpE,eAAe,EAAE,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACvF,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CAC3E;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,CAAC,IAAI,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,WAAW,CAAA;CAAE,GAAG,kBAAkB,CAuErF"}
@@ -0,0 +1,49 @@
1
+ import { useEffect, useCallback, useRef } from 'react';
2
+ import { useHeadlessClient } from '../provider.js';
3
+ /**
4
+ * React hook for analytics and pixel tracking.
5
+ *
6
+ * Auto-initializes on mount, loading pixel config from the store.
7
+ * All track methods fire events to configured pixels (Meta, TikTok, Snap, GTM, GA).
8
+ *
9
+ * @example
10
+ * ```tsx
11
+ * const { trackPageView, trackPurchase } = useAnalytics();
12
+ *
13
+ * useEffect(() => { trackPageView('/checkout'); }, []);
14
+ *
15
+ * // After payment
16
+ * trackPurchase({ orderId: 'ord_xxx', amount: 4900, currency: 'USD' });
17
+ * ```
18
+ */
19
+ export function useAnalytics(opts) {
20
+ const client = useHeadlessClient();
21
+ const initRef = useRef(false);
22
+ useEffect(() => {
23
+ if (initRef.current)
24
+ return;
25
+ initRef.current = true;
26
+ client.analytics.init({ pixelConfig: opts?.pixelConfig });
27
+ }, [client, opts?.pixelConfig]);
28
+ const trackPageView = useCallback((page) => client.analytics.trackPageView(page), [client]);
29
+ const trackViewContent = useCallback((data) => client.analytics.trackViewContent(data), [client]);
30
+ const trackAddToCart = useCallback((data) => client.analytics.trackAddToCart(data), [client]);
31
+ const trackInitiateCheckout = useCallback((data) => client.analytics.trackInitiateCheckout(data), [client]);
32
+ const trackAddPaymentInfo = useCallback((data) => client.analytics.trackAddPaymentInfo(data), [client]);
33
+ const trackPurchase = useCallback((data) => client.analytics.trackPurchase(data), [client]);
34
+ const trackStep = useCallback((data) => client.analytics.trackStep(data), [client]);
35
+ const trackConversion = useCallback((data) => client.analytics.trackConversion(data), [client]);
36
+ const trackCustomEvent = useCallback((event, data) => client.analytics.trackCustomEvent(event, data), [client]);
37
+ return {
38
+ trackPageView,
39
+ trackViewContent,
40
+ trackAddToCart,
41
+ trackInitiateCheckout,
42
+ trackAddPaymentInfo,
43
+ trackPurchase,
44
+ trackStep,
45
+ trackConversion,
46
+ trackCustomEvent,
47
+ };
48
+ }
49
+ //# sourceMappingURL=useAnalytics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAnalytics.js","sourceRoot":"","sources":["../../../src/react/hooks/useAnalytics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAenD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,YAAY,CAAC,IAAoC;IAC/D,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;IACnC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAE9B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO,CAAC,OAAO;YAAE,OAAO;QAC5B,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;QACvB,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IAC5D,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;IAEhC,MAAM,aAAa,GAAG,WAAW,CAC/B,CAAC,IAAa,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,EACvD,CAAC,MAAM,CAAC,CACT,CAAC;IAEF,MAAM,gBAAgB,GAAG,WAAW,CAClC,CAAC,IAAmF,EAAE,EAAE,CACtF,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,EACzC,CAAC,MAAM,CAAC,CACT,CAAC;IAEF,MAAM,cAAc,GAAG,WAAW,CAChC,CAAC,IAAkF,EAAE,EAAE,CACrF,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,EACvC,CAAC,MAAM,CAAC,CACT,CAAC;IAEF,MAAM,qBAAqB,GAAG,WAAW,CACvC,CAAC,IAAgE,EAAE,EAAE,CACnE,MAAM,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAC9C,CAAC,MAAM,CAAC,CACT,CAAC;IAEF,MAAM,mBAAmB,GAAG,WAAW,CACrC,CAAC,IAAiC,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,EACjF,CAAC,MAAM,CAAC,CACT,CAAC;IAEF,MAAM,aAAa,GAAG,WAAW,CAC/B,CAAC,IAA2D,EAAE,EAAE,CAC9D,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,EACtC,CAAC,MAAM,CAAC,CACT,CAAC;IAEF,MAAM,SAAS,GAAG,WAAW,CAC3B,CAAC,IAA8C,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,EACpF,CAAC,MAAM,CAAC,CACT,CAAC;IAEF,MAAM,eAAe,GAAG,WAAW,CACjC,CAAC,IAA2D,EAAE,EAAE,CAC9D,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,EACxC,CAAC,MAAM,CAAC,CACT,CAAC;IAEF,MAAM,gBAAgB,GAAG,WAAW,CAClC,CAAC,KAAa,EAAE,IAA8B,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,EACjG,CAAC,MAAM,CAAC,CACT,CAAC;IAEF,OAAO;QACL,aAAa;QACb,gBAAgB;QAChB,cAAc;QACd,qBAAqB;QACrB,mBAAmB;QACnB,aAAa;QACb,SAAS;QACT,eAAe;QACf,gBAAgB;KACjB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,45 @@
1
+ import type { CheckoutSession, LineItem, ShippingRate, Address, CheckoutCustomer } from '../../core/types.js';
2
+ export interface UseCheckoutReturn {
3
+ session: CheckoutSession | null;
4
+ isLoading: boolean;
5
+ error: Error | null;
6
+ /** Reload the session from the server. */
7
+ refresh: () => Promise<void>;
8
+ /** Create a new checkout session (auto-loads it after creation). */
9
+ createSession: (opts: {
10
+ items: LineItem[];
11
+ currency?: string;
12
+ returnUrl?: string;
13
+ customerEmail?: string;
14
+ }) => Promise<void>;
15
+ /** Replace cart items. */
16
+ updateCart: (items: LineItem[]) => Promise<void>;
17
+ /** Update customer info on the session. */
18
+ updateCustomer: (customer: Partial<CheckoutCustomer>) => Promise<void>;
19
+ /** Update address on the session. */
20
+ updateAddress: (addresses: {
21
+ shippingAddress?: Address;
22
+ billingAddress?: Address;
23
+ }) => Promise<void>;
24
+ /** Apply a promo code. */
25
+ applyPromo: (code: string) => Promise<void>;
26
+ /** Remove the applied promo code. */
27
+ removePromo: () => Promise<void>;
28
+ /** Fetch shipping rates. */
29
+ getShippingRates: () => Promise<ShippingRate[]>;
30
+ /** Select a shipping rate. */
31
+ selectShippingRate: (rateId: string) => Promise<void>;
32
+ }
33
+ /**
34
+ * React hook for checkout session management.
35
+ *
36
+ * @param checkoutToken - The checkout token from the URL (e.g. `?checkoutToken=xxx`).
37
+ * @param sessionToken - Optional JWT session token (from URL param `token`).
38
+ *
39
+ * @example
40
+ * ```tsx
41
+ * const { session, isLoading, applyPromo, createSession } = useCheckout(checkoutToken, sessionToken);
42
+ * ```
43
+ */
44
+ export declare function useCheckout(checkoutToken: string | null | undefined, sessionToken?: string): UseCheckoutReturn;
45
+ //# sourceMappingURL=useCheckout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCheckout.d.ts","sourceRoot":"","sources":["../../../src/react/hooks/useCheckout.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE9G,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;IAChC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,0CAA0C;IAC1C,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,oEAAoE;IACpE,aAAa,EAAE,CAAC,IAAI,EAAE;QACpB,KAAK,EAAE,QAAQ,EAAE,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB,0BAA0B;IAC1B,UAAU,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,2CAA2C;IAC3C,cAAc,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,gBAAgB,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvE,qCAAqC;IACrC,aAAa,EAAE,CAAC,SAAS,EAAE;QAAE,eAAe,CAAC,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrG,0BAA0B;IAC1B,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,qCAAqC;IACrC,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,4BAA4B;IAC5B,gBAAgB,EAAE,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAChD,8BAA8B;IAC9B,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CACzB,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACxC,YAAY,CAAC,EAAE,MAAM,GACpB,iBAAiB,CAwGnB"}
@@ -0,0 +1,113 @@
1
+ import { useState, useEffect, useCallback } from 'react';
2
+ import { useHeadlessClient } from '../provider.js';
3
+ /**
4
+ * React hook for checkout session management.
5
+ *
6
+ * @param checkoutToken - The checkout token from the URL (e.g. `?checkoutToken=xxx`).
7
+ * @param sessionToken - Optional JWT session token (from URL param `token`).
8
+ *
9
+ * @example
10
+ * ```tsx
11
+ * const { session, isLoading, applyPromo, createSession } = useCheckout(checkoutToken, sessionToken);
12
+ * ```
13
+ */
14
+ export function useCheckout(checkoutToken, sessionToken) {
15
+ const client = useHeadlessClient();
16
+ const [session, setSession] = useState(null);
17
+ const [isLoading, setIsLoading] = useState(false);
18
+ const [error, setError] = useState(null);
19
+ const loadSession = useCallback(async () => {
20
+ if (!checkoutToken)
21
+ return;
22
+ setIsLoading(true);
23
+ setError(null);
24
+ try {
25
+ const s = await client.checkout.loadSession(checkoutToken, sessionToken);
26
+ setSession(s);
27
+ }
28
+ catch (err) {
29
+ setError(err instanceof Error ? err : new Error(String(err)));
30
+ }
31
+ finally {
32
+ setIsLoading(false);
33
+ }
34
+ }, [client, checkoutToken, sessionToken]);
35
+ useEffect(() => {
36
+ loadSession();
37
+ }, [loadSession]);
38
+ const createSession = useCallback(async (opts) => {
39
+ setIsLoading(true);
40
+ setError(null);
41
+ try {
42
+ const result = await client.checkout.createSession(opts);
43
+ const newUrl = new URL(window.location.href);
44
+ newUrl.searchParams.set('checkoutToken', result.checkoutToken);
45
+ newUrl.searchParams.set('token', result.sessionToken);
46
+ window.history.replaceState({}, '', newUrl.toString());
47
+ const s = await client.checkout.loadSession(result.checkoutToken, result.sessionToken);
48
+ setSession(s);
49
+ }
50
+ catch (err) {
51
+ setError(err instanceof Error ? err : new Error(String(err)));
52
+ }
53
+ finally {
54
+ setIsLoading(false);
55
+ }
56
+ }, [client]);
57
+ const updateCart = useCallback(async (items) => {
58
+ if (!session)
59
+ return;
60
+ const updated = await client.checkout.updateCart(session.id, items);
61
+ setSession(updated);
62
+ }, [client, session]);
63
+ const updateCustomer = useCallback(async (customer) => {
64
+ if (!session)
65
+ return;
66
+ const updated = await client.checkout.updateCustomer(session.id, customer);
67
+ setSession(updated);
68
+ }, [client, session]);
69
+ const updateAddress = useCallback(async (addresses) => {
70
+ if (!session)
71
+ return;
72
+ const updated = await client.checkout.updateAddress(session.id, addresses);
73
+ setSession(updated);
74
+ }, [client, session]);
75
+ const applyPromo = useCallback(async (code) => {
76
+ if (!session)
77
+ return;
78
+ const updated = await client.checkout.applyPromoCode(session.id, code);
79
+ setSession(updated);
80
+ }, [client, session]);
81
+ const removePromo = useCallback(async () => {
82
+ if (!session)
83
+ return;
84
+ const updated = await client.checkout.removePromoCode(session.id);
85
+ setSession(updated);
86
+ }, [client, session]);
87
+ const getShippingRates = useCallback(async () => {
88
+ if (!session)
89
+ return [];
90
+ return client.checkout.getShippingRates(session.id);
91
+ }, [client, session]);
92
+ const selectShippingRate = useCallback(async (rateId) => {
93
+ if (!session)
94
+ return;
95
+ const updated = await client.checkout.selectShippingRate(session.id, rateId);
96
+ setSession(updated);
97
+ }, [client, session]);
98
+ return {
99
+ session,
100
+ isLoading,
101
+ error,
102
+ refresh: loadSession,
103
+ createSession,
104
+ updateCart,
105
+ updateCustomer,
106
+ updateAddress,
107
+ applyPromo,
108
+ removePromo,
109
+ getShippingRates,
110
+ selectShippingRate,
111
+ };
112
+ }
113
+ //# sourceMappingURL=useCheckout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCheckout.js","sourceRoot":"","sources":["../../../src/react/hooks/useCheckout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { Customer, Order, Subscription } from '../../core/types.js';
2
+ export interface UseCustomerReturn {
3
+ customer: Customer | null;
4
+ orders: Order[];
5
+ subscriptions: Subscription[];
6
+ isLoading: boolean;
7
+ error: Error | null;
8
+ /** Load customer profile by ID. */
9
+ loadCustomer: (customerId: string) => Promise<void>;
10
+ /** Load customer orders. */
11
+ loadOrders: (customerId: string) => Promise<void>;
12
+ /** Load customer subscriptions. */
13
+ loadSubscriptions: (customerId: string) => Promise<void>;
14
+ /** Update customer profile. */
15
+ updateProfile: (customerId: string, data: Partial<Pick<Customer, 'email' | 'firstName' | 'lastName' | 'phone'>>) => Promise<void>;
16
+ }
17
+ /**
18
+ * React hook for customer data -- profile, orders, subscriptions.
19
+ *
20
+ * @param customerId - Auto-loads the customer profile when provided.
21
+ *
22
+ * @example
23
+ * ```tsx
24
+ * const { customer, orders, loadOrders } = useCustomer(session?.customer?.id);
25
+ * ```
26
+ */
27
+ export declare function useCustomer(customerId?: string | null): UseCustomerReturn;
28
+ //# sourceMappingURL=useCustomer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCustomer.d.ts","sourceRoot":"","sources":["../../../src/react/hooks/useCustomer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEzE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,mCAAmC;IACnC,YAAY,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,4BAA4B;IAC5B,UAAU,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,mCAAmC;IACnC,iBAAiB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,+BAA+B;IAC/B,aAAa,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,GAAG,WAAW,GAAG,UAAU,GAAG,OAAO,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACnI;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,iBAAiB,CAkEzE"}