@ss-dev/agnostic-checkout 0.1.12

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 (94) hide show
  1. package/README.md +439 -0
  2. package/dist/components/accordion-layout.d.ts +3 -0
  3. package/dist/components/accordion-layout.d.ts.map +1 -0
  4. package/dist/components/checkout-content.d.ts +5 -0
  5. package/dist/components/checkout-content.d.ts.map +1 -0
  6. package/dist/components/checkout-layout.d.ts +3 -0
  7. package/dist/components/checkout-layout.d.ts.map +1 -0
  8. package/dist/components/checkout.d.ts +4 -0
  9. package/dist/components/checkout.d.ts.map +1 -0
  10. package/dist/components/dev-tools.d.ts +3 -0
  11. package/dist/components/dev-tools.d.ts.map +1 -0
  12. package/dist/components/feedback-screen.d.ts +3 -0
  13. package/dist/components/feedback-screen.d.ts.map +1 -0
  14. package/dist/components/mobile-bar.d.ts +3 -0
  15. package/dist/components/mobile-bar.d.ts.map +1 -0
  16. package/dist/components/mobile-order-bar.d.ts +3 -0
  17. package/dist/components/mobile-order-bar.d.ts.map +1 -0
  18. package/dist/components/order-sidebar-summary.d.ts +3 -0
  19. package/dist/components/order-sidebar-summary.d.ts.map +1 -0
  20. package/dist/components/order-summary.d.ts +4 -0
  21. package/dist/components/order-summary.d.ts.map +1 -0
  22. package/dist/components/payment-form.d.ts +2 -0
  23. package/dist/components/payment-form.d.ts.map +1 -0
  24. package/dist/components/payment-methods.d.ts +4 -0
  25. package/dist/components/payment-methods.d.ts.map +1 -0
  26. package/dist/components/shipping-methods.d.ts +3 -0
  27. package/dist/components/shipping-methods.d.ts.map +1 -0
  28. package/dist/components/types.d.ts +105 -0
  29. package/dist/components/types.d.ts.map +1 -0
  30. package/dist/components/ui/badge.d.ts +9 -0
  31. package/dist/components/ui/badge.d.ts.map +1 -0
  32. package/dist/components/ui/button.d.ts +16 -0
  33. package/dist/components/ui/button.d.ts.map +1 -0
  34. package/dist/components/ui/card.d.ts +19 -0
  35. package/dist/components/ui/card.d.ts.map +1 -0
  36. package/dist/components/ui/index.d.ts +6 -0
  37. package/dist/components/ui/index.d.ts.map +1 -0
  38. package/dist/components/ui/selectable-card.d.ts +15 -0
  39. package/dist/components/ui/selectable-card.d.ts.map +1 -0
  40. package/dist/components/ui/spinner.d.ts +7 -0
  41. package/dist/components/ui/spinner.d.ts.map +1 -0
  42. package/dist/core/checkout-context.d.ts +67 -0
  43. package/dist/core/checkout-context.d.ts.map +1 -0
  44. package/dist/core/checkout-machine.d.ts +3 -0
  45. package/dist/core/checkout-machine.d.ts.map +1 -0
  46. package/dist/core/event-system.d.ts +35 -0
  47. package/dist/core/event-system.d.ts.map +1 -0
  48. package/dist/core/i18n-context.d.ts +17 -0
  49. package/dist/core/i18n-context.d.ts.map +1 -0
  50. package/dist/core/license.d.ts +18 -0
  51. package/dist/core/license.d.ts.map +1 -0
  52. package/dist/core/provider.interface.d.ts +7 -0
  53. package/dist/core/provider.interface.d.ts.map +1 -0
  54. package/dist/core/types.d.ts +76 -0
  55. package/dist/core/types.d.ts.map +1 -0
  56. package/dist/hooks/useCheckout.d.ts +37 -0
  57. package/dist/hooks/useCheckout.d.ts.map +1 -0
  58. package/dist/hooks/useLicense.d.ts +8 -0
  59. package/dist/hooks/useLicense.d.ts.map +1 -0
  60. package/dist/index.cjs +157 -0
  61. package/dist/index.d.ts +21 -0
  62. package/dist/index.d.ts.map +1 -0
  63. package/dist/index.js +5069 -0
  64. package/dist/locales/en.d.ts +3 -0
  65. package/dist/locales/en.d.ts.map +1 -0
  66. package/dist/locales/es.d.ts +3 -0
  67. package/dist/locales/es.d.ts.map +1 -0
  68. package/dist/locales/index.d.ts +14 -0
  69. package/dist/locales/index.d.ts.map +1 -0
  70. package/dist/locales/pt-BR.d.ts +3 -0
  71. package/dist/locales/pt-BR.d.ts.map +1 -0
  72. package/dist/locales/types.d.ts +46 -0
  73. package/dist/locales/types.d.ts.map +1 -0
  74. package/dist/plugins/cart-edit-plugin.d.ts +10 -0
  75. package/dist/plugins/cart-edit-plugin.d.ts.map +1 -0
  76. package/dist/plugins/discount-plugin.d.ts +4 -0
  77. package/dist/plugins/discount-plugin.d.ts.map +1 -0
  78. package/dist/plugins/index.d.ts +8 -0
  79. package/dist/plugins/index.d.ts.map +1 -0
  80. package/dist/plugins/plugin-context.d.ts +10 -0
  81. package/dist/plugins/plugin-context.d.ts.map +1 -0
  82. package/dist/plugins/shipping-plugin.d.ts +27 -0
  83. package/dist/plugins/shipping-plugin.d.ts.map +1 -0
  84. package/dist/plugins/types.d.ts +35 -0
  85. package/dist/plugins/types.d.ts.map +1 -0
  86. package/dist/theme/color-utils.d.ts +39 -0
  87. package/dist/theme/color-utils.d.ts.map +1 -0
  88. package/dist/theme/theme-provider.d.ts +11 -0
  89. package/dist/theme/theme-provider.d.ts.map +1 -0
  90. package/dist/theme/tokens.d.ts +30 -0
  91. package/dist/theme/tokens.d.ts.map +1 -0
  92. package/dist/utils/utils.d.ts +7 -0
  93. package/dist/utils/utils.d.ts.map +1 -0
  94. package/package.json +56 -0
@@ -0,0 +1,9 @@
1
+ import { ReactNode } from 'react';
2
+ interface BadgeProps {
3
+ children: ReactNode;
4
+ variant?: "default" | "success" | "error" | "primary" | "outline";
5
+ className?: string;
6
+ }
7
+ export declare const Badge: ({ children, variant, className }: BadgeProps) => import("react/jsx-runtime").JSX.Element;
8
+ export {};
9
+ //# sourceMappingURL=badge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../../src/components/ui/badge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,UAAU,UAAU;IAChB,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;IAClE,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,KAAK,GAAI,kCAA8C,UAAU,4CAgB7E,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { ReactNode } from 'react';
2
+ interface ButtonProps {
3
+ label: string;
4
+ onPress?: (e: React.MouseEvent<HTMLButtonElement>) => void;
5
+ variant?: "solid" | "outline" | "ghost" | "primary";
6
+ size?: "sm" | "md" | "lg";
7
+ icon?: ReactNode;
8
+ loading?: boolean;
9
+ disabled?: boolean;
10
+ className?: string;
11
+ type?: "button" | "submit" | "reset";
12
+ id?: string;
13
+ }
14
+ export declare const Button: ({ label, onPress, variant, size, icon, loading, disabled, className, type, id, }: ButtonProps) => import("react/jsx-runtime").JSX.Element;
15
+ export {};
16
+ //# sourceMappingURL=button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../../src/components/ui/button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,UAAU,WAAW;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAC3D,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IACpD,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;IACrC,EAAE,CAAC,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,MAAM,GAAI,kFAWpB,WAAW,4CA8Bb,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { ReactNode } from 'react';
2
+ interface CardProps {
3
+ children: ReactNode;
4
+ className?: string;
5
+ variant?: "default" | "active" | "flat";
6
+ onClick?: () => void;
7
+ id?: string;
8
+ }
9
+ export declare const Card: ({ children, className, variant, onClick, id }: CardProps) => import("react/jsx-runtime").JSX.Element;
10
+ export declare const CardContent: ({ children, className }: {
11
+ children: ReactNode;
12
+ className?: string;
13
+ }) => import("react/jsx-runtime").JSX.Element;
14
+ export declare const CardHeader: ({ children, className }: {
15
+ children: ReactNode;
16
+ className?: string;
17
+ }) => import("react/jsx-runtime").JSX.Element;
18
+ export {};
19
+ //# sourceMappingURL=card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../../src/components/ui/card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,UAAU,SAAS;IACf,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;IACxC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,EAAE,CAAC,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,IAAI,GAAI,+CAA2D,SAAS,4CAiBxF,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,yBAAyB;IAAE,QAAQ,EAAE,SAAS,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,4CAE/F,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,yBAAyB;IAAE,QAAQ,EAAE,SAAS,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,4CAE9F,CAAC"}
@@ -0,0 +1,6 @@
1
+ export * from './button';
2
+ export * from './card';
3
+ export * from './badge';
4
+ export * from './selectable-card';
5
+ export * from './spinner';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ui/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { ReactNode } from 'react';
2
+ interface SelectableCardProps {
3
+ isSelected: boolean;
4
+ onClick: () => void;
5
+ icon?: ReactNode;
6
+ title: string;
7
+ description?: ReactNode;
8
+ rightElement?: ReactNode;
9
+ children?: ReactNode;
10
+ className?: string;
11
+ disabled?: boolean;
12
+ }
13
+ export declare const SelectableCard: ({ isSelected, onClick, icon, title, description, rightElement, children, className, disabled }: SelectableCardProps) => import("react/jsx-runtime").JSX.Element;
14
+ export {};
15
+ //# sourceMappingURL=selectable-card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selectable-card.d.ts","sourceRoot":"","sources":["../../../src/components/ui/selectable-card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,UAAU,mBAAmB;IACzB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,eAAO,MAAM,cAAc,GAAI,gGAU5B,mBAAmB,4CA+CrB,CAAC"}
@@ -0,0 +1,7 @@
1
+ interface SpinnerProps {
2
+ className?: string;
3
+ size?: "sm" | "md" | "lg";
4
+ }
5
+ export declare const Spinner: ({ className, size }: SpinnerProps) => import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=spinner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../../src/components/ui/spinner.tsx"],"names":[],"mappings":"AAGA,UAAU,YAAY;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;CAC7B;AAED,eAAO,MAAM,OAAO,GAAI,qBAA4B,YAAY,4CAY/D,CAAC"}
@@ -0,0 +1,67 @@
1
+ import { default as React, ReactNode } from 'react';
2
+ import { CheckoutState } from './checkout-machine';
3
+ import { CheckoutItem, PaymentMethod, CheckoutTotals, CartController, CartState, PaymentResult } from './types';
4
+ import { PaymentProvider } from './provider.interface';
5
+ import { CheckoutEvent, EventHandler } from './event-system';
6
+ import { CheckoutTheme } from '../theme/tokens';
7
+ interface CheckoutContextState {
8
+ items: CheckoutItem[];
9
+ paymentMethods: PaymentMethod[];
10
+ provider: PaymentProvider;
11
+ currency: string;
12
+ locale: string;
13
+ step: CheckoutState;
14
+ selectedMethodId: string | null;
15
+ selectedShippingMethodId: string | null;
16
+ totals: CheckoutTotals;
17
+ cartController?: CartController;
18
+ theme?: CheckoutTheme;
19
+ error: string | null;
20
+ paymentResult?: PaymentResult;
21
+ readyMap: Record<string, boolean>;
22
+ }
23
+ type Action = {
24
+ type: "SET_STEP";
25
+ step: CheckoutState;
26
+ } | {
27
+ type: "SELECT_METHOD";
28
+ methodId: string;
29
+ } | {
30
+ type: "SELECT_SHIPPING_METHOD";
31
+ methodId: string;
32
+ } | {
33
+ type: "SET_ERROR";
34
+ error: string | null;
35
+ } | {
36
+ type: "SET_CART";
37
+ cartState: CartState;
38
+ } | {
39
+ type: "SYNC_PROPS";
40
+ items: CheckoutItem[];
41
+ totals: CheckoutTotals;
42
+ } | {
43
+ type: "SET_PAYMENT_RESULT";
44
+ result: PaymentResult;
45
+ } | {
46
+ type: "SET_METHOD_READY";
47
+ methodId: string;
48
+ ready: boolean;
49
+ };
50
+ export declare const CheckoutProvider: ({ children, config, initialStatus, onEvent, defaultShippingMethodId, defaultPaymentMethodId, }: {
51
+ children: ReactNode;
52
+ config: Omit<CheckoutContextState, "step" | "selectedMethodId" | "selectedShippingMethodId" | "error" | "paymentResult" | "readyMap">;
53
+ initialStatus?: Extract<PaymentResult, {
54
+ status: "success" | "error" | "pending";
55
+ }>;
56
+ onEvent?: EventHandler;
57
+ defaultShippingMethodId?: string;
58
+ defaultPaymentMethodId?: string;
59
+ }) => import("react/jsx-runtime").JSX.Element;
60
+ export declare const useCheckoutContext: () => {
61
+ state: CheckoutContextState;
62
+ dispatch: React.Dispatch<Action>;
63
+ emitEvent: (event: CheckoutEvent) => void;
64
+ eventLog: string[];
65
+ };
66
+ export {};
67
+ //# sourceMappingURL=checkout-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkout-context.d.ts","sourceRoot":"","sources":["../../src/core/checkout-context.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwE,MAAM,OAAO,CAAC;AAC7F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACrH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,UAAU,oBAAoB;IAC1B,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,QAAQ,EAAE,eAAe,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,aAAa,CAAC;IACpB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,MAAM,EAAE,cAAc,CAAC;IACvB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED,KAAK,MAAM,GACL;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,aAAa,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,wBAAwB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,SAAS,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,YAAY,EAAE,CAAC;IAAC,MAAM,EAAE,cAAc,CAAA;CAAE,GACrE;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,MAAM,EAAE,aAAa,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC;AAgCrE,eAAO,MAAM,gBAAgB,GAAI,gGAO9B;IACC,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE,MAAM,GAAG,kBAAkB,GAAG,0BAA0B,GAAG,OAAO,GAAG,eAAe,GAAG,UAAU,CAAC,CAAC;IACtI,aAAa,CAAC,EAAE,OAAO,CAAC,aAAa,EAAE;QAAE,MAAM,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAAA;KAAE,CAAC,CAAC;IACpF,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACnC,4CA8BA,CAAC;AAEF,eAAO,MAAM,kBAAkB;WA3EpB,oBAAoB;cACjB,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;eACrB,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI;cAC/B,MAAM,EAAE;CAgFrB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export type CheckoutState = "review" | "shipping_method" | "payment_method" | "payment_details" | "processing" | "pending" | "redirect" | "success" | "error";
2
+ export declare const isValidTransition: (from: CheckoutState, to: CheckoutState) => boolean;
3
+ //# sourceMappingURL=checkout-machine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkout-machine.d.ts","sourceRoot":"","sources":["../../src/core/checkout-machine.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GACnB,QAAQ,GACR,iBAAiB,GACjB,gBAAgB,GAChB,iBAAiB,GACjB,YAAY,GACZ,SAAS,GACT,UAAU,GACV,SAAS,GACT,OAAO,CAAC;AAEd,eAAO,MAAM,iBAAiB,GAAI,MAAM,aAAa,EAAE,IAAI,aAAa,KAAG,OAc1E,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { CheckoutState } from './checkout-machine';
2
+ export type CheckoutEvent = {
3
+ type: "CHECKOUT_VIEWED";
4
+ } | {
5
+ type: "STEP_CHANGED";
6
+ step: CheckoutState;
7
+ } | {
8
+ type: "PAYMENT_METHOD_SELECTED";
9
+ methodId: string;
10
+ } | {
11
+ type: "SHIPPING_METHOD_SELECTED";
12
+ methodId: string;
13
+ } | {
14
+ type: "PAYMENT_SUBMITTED";
15
+ } | {
16
+ type: "PAYMENT_SUCCESS";
17
+ transactionId: string;
18
+ } | {
19
+ type: "PAYMENT_ERROR";
20
+ error: string;
21
+ } | {
22
+ type: "COUPON_APPLY_REQUESTED";
23
+ code: string;
24
+ } | {
25
+ type: "COUPON_REMOVE_REQUESTED";
26
+ } | {
27
+ type: "ITEM_QUANTITY_UPDATE_REQUESTED";
28
+ itemId: string;
29
+ quantity: number;
30
+ } | {
31
+ type: "ITEM_REMOVE_REQUESTED";
32
+ itemId: string;
33
+ };
34
+ export type EventHandler = (event: CheckoutEvent) => void;
35
+ //# sourceMappingURL=event-system.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-system.d.ts","sourceRoot":"","sources":["../../src/core/event-system.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,MAAM,aAAa,GACnB;IAAE,IAAI,EAAE,iBAAiB,CAAA;CAAE,GAC3B;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,IAAI,EAAE,aAAa,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,yBAAyB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,0BAA0B,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,mBAAmB,CAAA;CAAE,GAC7B;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GAClD;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,wBAAwB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,yBAAyB,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,gCAAgC,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC5E;IAAE,IAAI,EAAE,uBAAuB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAExD,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { ReactNode } from 'react';
2
+ import { CheckoutMessages, CheckoutFormatters } from '../locales/types';
3
+ interface I18nContextValue {
4
+ t: CheckoutMessages;
5
+ fmt: (amount: number) => string;
6
+ }
7
+ export interface I18nProviderProps {
8
+ locale: string;
9
+ currency: string;
10
+ messages?: Partial<CheckoutMessages>;
11
+ formatters?: CheckoutFormatters;
12
+ children: ReactNode;
13
+ }
14
+ export declare const I18nProvider: ({ locale, currency, messages, formatters, children }: I18nProviderProps) => import("react/jsx-runtime").JSX.Element;
15
+ export declare const useI18n: () => I18nContextValue;
16
+ export {};
17
+ //# sourceMappingURL=i18n-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n-context.d.ts","sourceRoot":"","sources":["../../src/core/i18n-context.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAI7E,UAAU,gBAAgB;IACtB,CAAC,EAAE,gBAAgB,CAAC;IACpB,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;CACnC;AAID,MAAM,WAAW,iBAAiB;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACrC,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC,QAAQ,EAAE,SAAS,CAAC;CACvB;AAED,eAAO,MAAM,YAAY,GAAI,sDAAsD,iBAAiB,4CAYnG,CAAC;AAEF,eAAO,MAAM,OAAO,QAAO,gBAM1B,CAAC"}
@@ -0,0 +1,18 @@
1
+ export interface LicenseInitOptions {
2
+ licenseKey: string;
3
+ }
4
+ export type PlanType = "basic" | "pro";
5
+ export interface LicenseState {
6
+ isValid: boolean;
7
+ plan: PlanType;
8
+ loading: boolean;
9
+ reason?: string;
10
+ }
11
+ export declare const featuresByPlan: Record<PlanType, string[]>;
12
+ type Subscriber = (state: LicenseState) => void;
13
+ export declare const subscribeLicense: (sub: Subscriber) => () => void;
14
+ export declare const getLicenseState: () => LicenseState;
15
+ export declare const hasFeature: (feature: string) => boolean;
16
+ export declare const initCheckout: ({ licenseKey, }: LicenseInitOptions) => Promise<void>;
17
+ export {};
18
+ //# sourceMappingURL=license.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"license.d.ts","sourceRoot":"","sources":["../../src/core/license.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IAC/B,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,KAAK,CAAC;AAEvC,MAAM,WAAW,YAAY;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,CAGrD,CAAC;AAYF,KAAK,UAAU,GAAG,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;AAOhD,eAAO,MAAM,gBAAgB,GAAI,KAAK,UAAU,eAK/C,CAAC;AAEF,eAAO,MAAM,eAAe,oBAA4B,CAAC;AAEzD,eAAO,MAAM,UAAU,GAAI,SAAS,MAAM,KAAG,OAG5C,CAAC;AAEF,eAAO,MAAM,YAAY,GAAU,iBAEhC,kBAAkB,kBAoFpB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { PaymentPayload, PaymentResult } from './types';
2
+ export interface PaymentProvider {
3
+ initialize?(config: unknown): Promise<void>;
4
+ createPayment(data: PaymentPayload): Promise<PaymentResult>;
5
+ confirmPayment?(data: unknown): Promise<PaymentResult>;
6
+ }
7
+ //# sourceMappingURL=provider.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.interface.d.ts","sourceRoot":"","sources":["../../src/core/provider.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7D,MAAM,WAAW,eAAe;IAC5B,UAAU,CAAC,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,aAAa,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAC5D,cAAc,CAAC,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CAC1D"}
@@ -0,0 +1,76 @@
1
+ import { ReactNode } from 'react';
2
+ import { ButtonProps } from '../components/types';
3
+ export interface CheckoutItem {
4
+ id: string;
5
+ name: string;
6
+ quantity: number;
7
+ unitPrice: number;
8
+ discount?: {
9
+ type: "percentage" | "fixed";
10
+ value: number;
11
+ label?: string;
12
+ };
13
+ total: number;
14
+ image?: string;
15
+ }
16
+ export interface CheckoutTotals {
17
+ subtotal: number;
18
+ discount?: number;
19
+ taxes?: number;
20
+ shipping?: number;
21
+ total: number;
22
+ }
23
+ export interface CartState {
24
+ items: CheckoutItem[];
25
+ totals: CheckoutTotals;
26
+ }
27
+ export interface CartController {
28
+ updateQuantity: (id: string, qty: number) => Promise<CartState>;
29
+ removeItem: (id: string) => Promise<CartState>;
30
+ applyCoupon: (code: string) => Promise<CartState>;
31
+ removeCoupon?: () => Promise<CartState>;
32
+ }
33
+ export interface PaymentMethodComponentProps {
34
+ /** Call this to enable or disable the Pay button while the user fills in the form */
35
+ onReadyChange: (ready: boolean) => void;
36
+ }
37
+ export interface PaymentMethod {
38
+ id: string;
39
+ label: string;
40
+ type: string;
41
+ icon?: string;
42
+ /**
43
+ * Optional renderer for inline payment UI (card form, wallet picker, etc.).
44
+ * If provided, the Pay button starts disabled until `onReadyChange(true)` is called.
45
+ */
46
+ renderComponent?: (props: PaymentMethodComponentProps) => ReactNode;
47
+ }
48
+ /**
49
+ * Props the integrator can return from createPayment to control
50
+ * what the FeedbackScreen displays after a payment attempt.
51
+ * `variant` is always derived by the framework.
52
+ */
53
+ export interface FeedbackProps {
54
+ title: string;
55
+ description?: string;
56
+ actions?: ButtonProps[];
57
+ actionsLayout?: "row" | "column";
58
+ children?: ReactNode;
59
+ }
60
+ export type PaymentResult = {
61
+ status: "success";
62
+ feedback?: FeedbackProps;
63
+ } | {
64
+ status: "pending";
65
+ feedback?: FeedbackProps;
66
+ } | {
67
+ status: "error";
68
+ feedback?: FeedbackProps;
69
+ } | {
70
+ status: "redirect";
71
+ url: string;
72
+ feedback?: FeedbackProps;
73
+ };
74
+ export type FractalButtonVariant = "solid" | "outline" | "ghost";
75
+ export type PaymentPayload = unknown;
76
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAIvD,MAAM,WAAW,YAAY;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAElB,QAAQ,CAAC,EAAE;QACP,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC;QAC7B,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IAEF,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACtB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,MAAM,EAAE,cAAc,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC3B,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IAChE,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IAC/C,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IAClD,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC;CAC3C;AAID,MAAM,WAAW,2BAA2B;IACxC,qFAAqF;IACrF,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CAC3C;AAED,MAAM,WAAW,aAAa;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,2BAA2B,KAAK,SAAS,CAAC;CACvE;AAID;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IACxB,aAAa,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IACjC,QAAQ,CAAC,EAAE,SAAS,CAAC;CACxB;AAID,MAAM,MAAM,aAAa,GACnB;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,aAAa,CAAA;CAAE,GAC/C;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,aAAa,CAAA;CAAE,GAC/C;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,aAAa,CAAA;CAAE,GAC7C;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,aAAa,CAAA;CAAE,CAAC;AAIpE,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AAGjE,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { CheckoutState } from '../core/checkout-machine';
2
+ export declare const useCheckout: () => {
3
+ totals: {
4
+ subtotal: number;
5
+ discount?: number;
6
+ taxes?: number;
7
+ shipping?: number;
8
+ total: number;
9
+ };
10
+ setStep: (step: CheckoutState) => void;
11
+ selectMethod: (methodId: string) => void;
12
+ selectShippingMethod: (methodId: string) => void;
13
+ submitPayment: (data: unknown) => Promise<void>;
14
+ setError: (error: string) => void;
15
+ setMethodReady: (methodId: string, ready: boolean) => void;
16
+ isMethodReady: boolean;
17
+ updateQuantity: (id: string, qty: number) => Promise<void>;
18
+ removeItem: (id: string) => Promise<void>;
19
+ applyCoupon: (code: string) => Promise<boolean>;
20
+ removeCoupon: () => Promise<boolean>;
21
+ hasCartController: boolean;
22
+ hasRemoveCoupon: boolean;
23
+ items: import('..').CheckoutItem[];
24
+ paymentMethods: import('..').PaymentMethod[];
25
+ provider: import('..').PaymentProvider;
26
+ currency: string;
27
+ locale: string;
28
+ step: CheckoutState;
29
+ selectedMethodId: string | null;
30
+ selectedShippingMethodId: string | null;
31
+ cartController?: import('..').CartController;
32
+ theme?: import('..').CheckoutTheme;
33
+ error: string | null;
34
+ paymentResult?: import('..').PaymentResult;
35
+ readyMap: Record<string, boolean>;
36
+ };
37
+ //# sourceMappingURL=useCheckout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCheckout.d.ts","sourceRoot":"","sources":["../../src/hooks/useCheckout.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,eAAO,MAAM,WAAW;;;;;;;;oBAIG,aAAa;6BAKJ,MAAM;qCAKE,MAAM;0BAgBX,OAAO;sBAyCjB,MAAM;+BApDG,MAAM,SAAS,OAAO;;yBAyDtB,MAAM,OAAO,MAAM;qBAMvB,MAAM;wBAMH,MAAM,KAAG,OAAO,CAAC,OAAO,CAAC;wBAW3B,OAAO,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;CAgDlD,CAAC"}
@@ -0,0 +1,8 @@
1
+ export declare function useLicense(): {
2
+ isValid: boolean;
3
+ plan: import('..').PlanType;
4
+ loading: boolean;
5
+ reason: string | undefined;
6
+ hasFeature: (feature: string) => boolean;
7
+ };
8
+ //# sourceMappingURL=useLicense.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLicense.d.ts","sourceRoot":"","sources":["../../src/hooks/useLicense.ts"],"names":[],"mappings":"AAQA,wBAAgB,UAAU;;;;;;EAezB"}