@commercengine/checkout 0.1.6 → 0.2.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.
package/README.md CHANGED
@@ -245,6 +245,12 @@ initCheckout({
245
245
  // Theme (default: "system")
246
246
  theme: "light", // or "dark" or "system"
247
247
 
248
+ // Drawer direction per viewport
249
+ drawerDirection: {
250
+ mobile: "bottom", // "bottom" | "top" | "left" | "right" | "modal"
251
+ desktop: "right", // "bottom" | "top" | "left" | "right" | "modal"
252
+ },
253
+
248
254
  // Appearance
249
255
  appearance: {
250
256
  zIndex: 99999,
@@ -343,6 +349,8 @@ import type {
343
349
  // Configuration
344
350
  CheckoutConfig,
345
351
  CheckoutFeatures,
352
+ DrawerDirection,
353
+ DrawerDirectionConfig,
346
354
  Environment,
347
355
  AuthMode,
348
356
  SessionMode,
package/dist/index.d.mts CHANGED
@@ -1,3 +1,3 @@
1
1
  import { a as destroyCheckout, c as subscribeToCheckout, i as checkoutStore, n as CheckoutState, o as getCheckout, r as CheckoutStore, s as initCheckout, t as CheckoutActions } from "./store.mjs";
2
- import { AddToCartItem, AuthLoginData, AuthLogoutData, AuthMode, AuthRefreshData, CartData, Channel, CheckoutConfig, CheckoutEventType, CheckoutFeatures, Environment, ErrorData, LoginMethod, OrderData, QuickBuyConfig, SessionMode, UserInfo } from "@commercengine/js";
3
- export { type AddToCartItem, type AuthLoginData, type AuthLogoutData, type AuthMode, type AuthRefreshData, type CartData, type Channel, type CheckoutActions, type CheckoutConfig, type CheckoutEventType, type CheckoutFeatures, type CheckoutState, type CheckoutStore, type Environment, type ErrorData, type LoginMethod, type OrderData, type QuickBuyConfig, type SessionMode, type UserInfo, checkoutStore, destroyCheckout, getCheckout, initCheckout, subscribeToCheckout };
2
+ import { AddToCartItem, AuthLoginData, AuthLogoutData, AuthMode, AuthRefreshData, CartData, Channel, CheckoutConfig, CheckoutEventType, CheckoutFeatures, DrawerDirection, DrawerDirectionConfig, Environment, ErrorData, LoginMethod, OrderData, QuickBuyConfig, SessionMode, UserInfo } from "@commercengine/js";
3
+ export { type AddToCartItem, type AuthLoginData, type AuthLogoutData, type AuthMode, type AuthRefreshData, type CartData, type Channel, type CheckoutActions, type CheckoutConfig, type CheckoutEventType, type CheckoutFeatures, type CheckoutState, type CheckoutStore, type DrawerDirection, type DrawerDirectionConfig, type Environment, type ErrorData, type LoginMethod, type OrderData, type QuickBuyConfig, type SessionMode, type UserInfo, checkoutStore, destroyCheckout, getCheckout, initCheckout, subscribeToCheckout };
package/dist/react.d.mts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { a as destroyCheckout, c as subscribeToCheckout, i as checkoutStore, n as CheckoutState, o as getCheckout, r as CheckoutStore, s as initCheckout, t as CheckoutActions } from "./store.mjs";
2
- import { AddToCartItem, AuthLoginData, AuthLogoutData, AuthMode, AuthRefreshData, CartData, Channel, CheckoutConfig, CheckoutEventType, Environment, ErrorData, LoginMethod, OrderData, QuickBuyConfig, SessionMode, UserInfo, UserInfo as UserInfo$1 } from "@commercengine/js";
2
+ import { AddToCartItem, AuthLoginData, AuthLogoutData, AuthMode, AuthRefreshData, CartData, Channel, CheckoutConfig, CheckoutEventType, CheckoutFeatures, DrawerDirection, DrawerDirectionConfig, Environment, ErrorData, LoginMethod, OrderData, QuickBuyConfig, SessionMode, UserInfo, UserInfo as UserInfo$1 } from "@commercengine/js";
3
3
 
4
4
  //#region src/react.d.ts
5
5
  /**
@@ -67,5 +67,5 @@ interface UseCheckoutReturn {
67
67
  */
68
68
  declare function useCheckout(): UseCheckoutReturn;
69
69
  //#endregion
70
- export { type AddToCartItem, type AuthLoginData, type AuthLogoutData, type AuthMode, type AuthRefreshData, type CartData, type Channel, type CheckoutActions, type CheckoutConfig, type CheckoutEventType, type CheckoutState, type CheckoutStore, type Environment, type ErrorData, type LoginMethod, type OrderData, type QuickBuyConfig, type SessionMode, UseCheckoutReturn, type UserInfo, checkoutStore, destroyCheckout, getCheckout, initCheckout, subscribeToCheckout, useCheckout };
70
+ export { type AddToCartItem, type AuthLoginData, type AuthLogoutData, type AuthMode, type AuthRefreshData, type CartData, type Channel, type CheckoutActions, type CheckoutConfig, type CheckoutEventType, type CheckoutFeatures, type CheckoutState, type CheckoutStore, type DrawerDirection, type DrawerDirectionConfig, type Environment, type ErrorData, type LoginMethod, type OrderData, type QuickBuyConfig, type SessionMode, UseCheckoutReturn, type UserInfo, checkoutStore, destroyCheckout, getCheckout, initCheckout, subscribeToCheckout, useCheckout };
71
71
  //# sourceMappingURL=react.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"react.d.mts","names":[],"sources":["../src/react.ts"],"mappings":";;;;;;;UAiFiB,iBAAA;;EAEf,OAAA;;EAEA,MAAA;;EAEA,SAAA;;EAEA,SAAA;;EAEA,YAAA;;EAEA,UAAA;;EAEA,IAAA,EAAM,UAAA;;EAEN,QAAA;;EAEA,YAAA;;EAEA,KAAA;;EAEA,SAAA,GAAY,SAAA,UAAmB,SAAA,iBAA0B,QAAA;;EAEzD,YAAA,GAAe,WAAA,UAAqB,YAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAyCtB,WAAA,CAAA,GAAe,iBAAA"}
1
+ {"version":3,"file":"react.d.mts","names":[],"sources":["../src/react.ts"],"mappings":";;;;;;;UAoFiB,iBAAA;;EAEf,OAAA;;EAEA,MAAA;;EAEA,SAAA;;EAEA,SAAA;;EAEA,YAAA;;EAEA,UAAA;;EAEA,IAAA,EAAM,UAAA;;EAEN,QAAA;;EAEA,YAAA;;EAEA,KAAA;;EAEA,SAAA,GAAY,SAAA,UAAmB,SAAA,iBAA0B,QAAA;;EAEzD,YAAA,GAAe,WAAA,UAAqB,YAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAyCtB,WAAA,CAAA,GAAe,iBAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"react.mjs","names":[],"sources":["../src/react.ts"],"sourcesContent":["/**\n * Commerce Engine Checkout - React Binding\n *\n * React hook for checkout integration with automatic state synchronization.\n *\n * @example\n * ```tsx\n * import { useCheckout, initCheckout } from \"@commercengine/checkout/react\";\n *\n * // Initialize once at app root\n * function App() {\n * useEffect(() => {\n * initCheckout({\n * storeId: \"store_xxx\",\n * apiKey: \"ak_xxx\",\n * onComplete: (order) => router.push(\"/thank-you\"),\n * });\n * return () => destroyCheckout();\n * }, []);\n *\n * return <>{children}</>;\n * }\n *\n * // Use anywhere - no provider needed\n * function Header() {\n * const { cartCount, openCart, isReady } = useCheckout();\n *\n * return (\n * <button onClick={openCart} disabled={!isReady}>\n * Cart ({cartCount})\n * </button>\n * );\n * }\n * ```\n *\n * @packageDocumentation\n */\n\nimport type { UserInfo } from \"@commercengine/js\";\nimport { useStore } from \"zustand\";\nimport { useShallow } from \"zustand/react/shallow\";\nimport { type CheckoutActions, type CheckoutState, checkoutStore } from \"./store\";\n\n// Re-export types from @commercengine/js\nexport type {\n AddToCartItem,\n AuthLoginData,\n AuthLogoutData,\n AuthMode,\n AuthRefreshData,\n CartData,\n Channel,\n CheckoutConfig,\n CheckoutEventType,\n Environment,\n ErrorData,\n LoginMethod,\n OrderData,\n QuickBuyConfig,\n SessionMode,\n UserInfo,\n} from \"@commercengine/js\";\n// Re-export everything from vanilla for convenience\nexport {\n type CheckoutActions,\n type CheckoutState,\n type CheckoutStore,\n checkoutStore,\n destroyCheckout,\n getCheckout,\n initCheckout,\n subscribeToCheckout,\n} from \"./store\";\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/**\n * Return type from useCheckout hook\n */\nexport interface UseCheckoutReturn {\n /** Whether checkout is ready to use */\n isReady: boolean;\n /** Whether checkout overlay is currently open */\n isOpen: boolean;\n /** Number of items in cart */\n cartCount: number;\n /** Cart subtotal amount */\n cartTotal: number;\n /** Cart currency code */\n cartCurrency: string;\n /** Whether user is logged in */\n isLoggedIn: boolean;\n /** Current user info (null if not logged in) */\n user: UserInfo | null;\n /** Open the cart drawer */\n openCart: () => void;\n /** Open the checkout drawer directly */\n openCheckout: () => void;\n /** Close the checkout overlay */\n close: () => void;\n /** Add item to cart */\n addToCart: (productId: string, variantId: string | null, quantity?: number) => void;\n /** Update authentication tokens */\n updateTokens: (accessToken: string, refreshToken?: string) => void;\n}\n\n// =============================================================================\n// HOOK\n// =============================================================================\n\n/**\n * React hook for checkout integration\n *\n * Provides reactive access to checkout state and methods.\n * No provider required - works anywhere in your component tree.\n *\n * @returns Checkout state and methods\n *\n * @example Basic usage\n * ```tsx\n * function CartButton() {\n * const { cartCount, openCart, isReady } = useCheckout();\n *\n * return (\n * <button onClick={openCart} disabled={!isReady}>\n * Cart ({cartCount})\n * </button>\n * );\n * }\n * ```\n *\n * @example Add to cart\n * ```tsx\n * function ProductCard({ product }) {\n * const { addToCart } = useCheckout();\n *\n * return (\n * <button onClick={() => addToCart(product.id, product.variantId, 1)}>\n * Add to Cart\n * </button>\n * );\n * }\n * ```\n */\nexport function useCheckout(): UseCheckoutReturn {\n // Subscribe to state with shallow comparison to prevent unnecessary re-renders\n const state = useStore(\n checkoutStore,\n useShallow((s: CheckoutState) => ({\n isReady: s.isReady,\n isOpen: s.isOpen,\n cartCount: s.cartCount,\n cartTotal: s.cartTotal,\n cartCurrency: s.cartCurrency,\n isLoggedIn: s.isLoggedIn,\n user: s.user,\n }))\n );\n\n // Actions are stable references from the store\n const actions = useStore(\n checkoutStore,\n useShallow((s: CheckoutActions) => ({\n openCart: s.openCart,\n openCheckout: s.openCheckout,\n close: s.close,\n addToCart: s.addToCart,\n updateTokens: s.updateTokens,\n }))\n );\n\n return {\n ...state,\n ...actions,\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkJA,SAAgB,cAAiC;CAE/C,MAAM,QAAQ,SACZ,eACA,YAAY,OAAsB;EAChC,SAAS,EAAE;EACX,QAAQ,EAAE;EACV,WAAW,EAAE;EACb,WAAW,EAAE;EACb,cAAc,EAAE;EAChB,YAAY,EAAE;EACd,MAAM,EAAE;EACT,EAAE,CACJ;CAGD,MAAM,UAAU,SACd,eACA,YAAY,OAAwB;EAClC,UAAU,EAAE;EACZ,cAAc,EAAE;EAChB,OAAO,EAAE;EACT,WAAW,EAAE;EACb,cAAc,EAAE;EACjB,EAAE,CACJ;AAED,QAAO;EACL,GAAG;EACH,GAAG;EACJ"}
1
+ {"version":3,"file":"react.mjs","names":[],"sources":["../src/react.ts"],"sourcesContent":["/**\n * Commerce Engine Checkout - React Binding\n *\n * React hook for checkout integration with automatic state synchronization.\n *\n * @example\n * ```tsx\n * import { useCheckout, initCheckout } from \"@commercengine/checkout/react\";\n *\n * // Initialize once at app root\n * function App() {\n * useEffect(() => {\n * initCheckout({\n * storeId: \"store_xxx\",\n * apiKey: \"ak_xxx\",\n * onComplete: (order) => router.push(\"/thank-you\"),\n * });\n * return () => destroyCheckout();\n * }, []);\n *\n * return <>{children}</>;\n * }\n *\n * // Use anywhere - no provider needed\n * function Header() {\n * const { cartCount, openCart, isReady } = useCheckout();\n *\n * return (\n * <button onClick={openCart} disabled={!isReady}>\n * Cart ({cartCount})\n * </button>\n * );\n * }\n * ```\n *\n * @packageDocumentation\n */\n\nimport type { UserInfo } from \"@commercengine/js\";\nimport { useStore } from \"zustand\";\nimport { useShallow } from \"zustand/react/shallow\";\nimport { type CheckoutActions, type CheckoutState, checkoutStore } from \"./store\";\n\n// Re-export types from @commercengine/js\nexport type {\n AddToCartItem,\n AuthLoginData,\n AuthLogoutData,\n AuthMode,\n AuthRefreshData,\n CartData,\n Channel,\n CheckoutConfig,\n CheckoutEventType,\n CheckoutFeatures,\n DrawerDirection,\n DrawerDirectionConfig,\n Environment,\n ErrorData,\n LoginMethod,\n OrderData,\n QuickBuyConfig,\n SessionMode,\n UserInfo,\n} from \"@commercengine/js\";\n// Re-export everything from vanilla for convenience\nexport {\n type CheckoutActions,\n type CheckoutState,\n type CheckoutStore,\n checkoutStore,\n destroyCheckout,\n getCheckout,\n initCheckout,\n subscribeToCheckout,\n} from \"./store\";\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/**\n * Return type from useCheckout hook\n */\nexport interface UseCheckoutReturn {\n /** Whether checkout is ready to use */\n isReady: boolean;\n /** Whether checkout overlay is currently open */\n isOpen: boolean;\n /** Number of items in cart */\n cartCount: number;\n /** Cart subtotal amount */\n cartTotal: number;\n /** Cart currency code */\n cartCurrency: string;\n /** Whether user is logged in */\n isLoggedIn: boolean;\n /** Current user info (null if not logged in) */\n user: UserInfo | null;\n /** Open the cart drawer */\n openCart: () => void;\n /** Open the checkout drawer directly */\n openCheckout: () => void;\n /** Close the checkout overlay */\n close: () => void;\n /** Add item to cart */\n addToCart: (productId: string, variantId: string | null, quantity?: number) => void;\n /** Update authentication tokens */\n updateTokens: (accessToken: string, refreshToken?: string) => void;\n}\n\n// =============================================================================\n// HOOK\n// =============================================================================\n\n/**\n * React hook for checkout integration\n *\n * Provides reactive access to checkout state and methods.\n * No provider required - works anywhere in your component tree.\n *\n * @returns Checkout state and methods\n *\n * @example Basic usage\n * ```tsx\n * function CartButton() {\n * const { cartCount, openCart, isReady } = useCheckout();\n *\n * return (\n * <button onClick={openCart} disabled={!isReady}>\n * Cart ({cartCount})\n * </button>\n * );\n * }\n * ```\n *\n * @example Add to cart\n * ```tsx\n * function ProductCard({ product }) {\n * const { addToCart } = useCheckout();\n *\n * return (\n * <button onClick={() => addToCart(product.id, product.variantId, 1)}>\n * Add to Cart\n * </button>\n * );\n * }\n * ```\n */\nexport function useCheckout(): UseCheckoutReturn {\n // Subscribe to state with shallow comparison to prevent unnecessary re-renders\n const state = useStore(\n checkoutStore,\n useShallow((s: CheckoutState) => ({\n isReady: s.isReady,\n isOpen: s.isOpen,\n cartCount: s.cartCount,\n cartTotal: s.cartTotal,\n cartCurrency: s.cartCurrency,\n isLoggedIn: s.isLoggedIn,\n user: s.user,\n }))\n );\n\n // Actions are stable references from the store\n const actions = useStore(\n checkoutStore,\n useShallow((s: CheckoutActions) => ({\n openCart: s.openCart,\n openCheckout: s.openCheckout,\n close: s.close,\n addToCart: s.addToCart,\n updateTokens: s.updateTokens,\n }))\n );\n\n return {\n ...state,\n ...actions,\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqJA,SAAgB,cAAiC;CAE/C,MAAM,QAAQ,SACZ,eACA,YAAY,OAAsB;EAChC,SAAS,EAAE;EACX,QAAQ,EAAE;EACV,WAAW,EAAE;EACb,WAAW,EAAE;EACb,cAAc,EAAE;EAChB,YAAY,EAAE;EACd,MAAM,EAAE;EACT,EAAE,CACJ;CAGD,MAAM,UAAU,SACd,eACA,YAAY,OAAwB;EAClC,UAAU,EAAE;EACZ,cAAc,EAAE;EAChB,OAAO,EAAE;EACT,WAAW,EAAE;EACb,cAAc,EAAE;EACjB,EAAE,CACJ;AAED,QAAO;EACL,GAAG;EACH,GAAG;EACJ"}
package/dist/solid.d.mts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { a as destroyCheckout, c as subscribeToCheckout, i as checkoutStore, n as CheckoutState, o as getCheckout, r as CheckoutStore, s as initCheckout, t as CheckoutActions } from "./store.mjs";
2
- import { AddToCartItem, AuthLoginData, AuthLogoutData, AuthMode, AuthRefreshData, CartData, Channel, CheckoutConfig, CheckoutEventType, Environment, ErrorData, LoginMethod, OrderData, QuickBuyConfig, SessionMode, UserInfo, UserInfo as UserInfo$1 } from "@commercengine/js";
2
+ import { AddToCartItem, AuthLoginData, AuthLogoutData, AuthMode, AuthRefreshData, CartData, Channel, CheckoutConfig, CheckoutEventType, CheckoutFeatures, DrawerDirection, DrawerDirectionConfig, Environment, ErrorData, LoginMethod, OrderData, QuickBuyConfig, SessionMode, UserInfo, UserInfo as UserInfo$1 } from "@commercengine/js";
3
3
  import { Accessor } from "solid-js";
4
4
 
5
5
  //#region src/solid.d.ts
@@ -90,5 +90,5 @@ declare function createCartCountSignal(): Accessor<number>;
90
90
  */
91
91
  declare function createIsReadySignal(): Accessor<boolean>;
92
92
  //#endregion
93
- export { type AddToCartItem, type AuthLoginData, type AuthLogoutData, type AuthMode, type AuthRefreshData, type CartData, type Channel, type CheckoutActions, type CheckoutConfig, type CheckoutEventType, type CheckoutState, type CheckoutStore, type Environment, type ErrorData, type LoginMethod, type OrderData, type QuickBuyConfig, type SessionMode, UseCheckoutReturn, type UserInfo, checkoutStore, createCartCountSignal, createIsReadySignal, destroyCheckout, getCheckout, initCheckout, subscribeToCheckout, useCheckout };
93
+ export { type AddToCartItem, type AuthLoginData, type AuthLogoutData, type AuthMode, type AuthRefreshData, type CartData, type Channel, type CheckoutActions, type CheckoutConfig, type CheckoutEventType, type CheckoutFeatures, type CheckoutState, type CheckoutStore, type DrawerDirection, type DrawerDirectionConfig, type Environment, type ErrorData, type LoginMethod, type OrderData, type QuickBuyConfig, type SessionMode, UseCheckoutReturn, type UserInfo, checkoutStore, createCartCountSignal, createIsReadySignal, destroyCheckout, getCheckout, initCheckout, subscribeToCheckout, useCheckout };
94
94
  //# sourceMappingURL=solid.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"solid.d.mts","names":[],"sources":["../src/solid.ts"],"mappings":";;;;;;;;;;;UAkFiB,iBAAA;;WAEN,OAAA;;WAEA,MAAA;;WAEA,SAAA;;WAEA,SAAA;;WAEA,YAAA;;WAEA,UAAA;;WAEA,IAAA,EAAM,UAAA;;EAEf,QAAA;;EAEA,YAAA;;EAEA,KAAA;;EAEA,SAAA,GAAY,SAAA,UAAmB,SAAA,iBAA0B,QAAA;;EAEzD,YAAA,GAAe,WAAA,UAAqB,YAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA0CtB,WAAA,CAAA,GAAe,iBAAA;;;;;;;;;;;;;;iBA8Ef,qBAAA,CAAA,GAAyB,QAAA;;;;iBAmBzB,mBAAA,CAAA,GAAuB,QAAA"}
1
+ {"version":3,"file":"solid.d.mts","names":[],"sources":["../src/solid.ts"],"mappings":";;;;;;;;;;;UAqFiB,iBAAA;;WAEN,OAAA;;WAEA,MAAA;;WAEA,SAAA;;WAEA,SAAA;;WAEA,YAAA;;WAEA,UAAA;;WAEA,IAAA,EAAM,UAAA;;EAEf,QAAA;;EAEA,YAAA;;EAEA,KAAA;;EAEA,SAAA,GAAY,SAAA,UAAmB,SAAA,iBAA0B,QAAA;;EAEzD,YAAA,GAAe,WAAA,UAAqB,YAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA0CtB,WAAA,CAAA,GAAe,iBAAA;;;;;;;;;;;;;;iBA8Ef,qBAAA,CAAA,GAAyB,QAAA;;;;iBAmBzB,mBAAA,CAAA,GAAuB,QAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"solid.mjs","names":[],"sources":["../src/solid.ts"],"sourcesContent":["/**\n * Commerce Engine Checkout - Solid Binding\n *\n * Solid.js primitive for checkout integration with fine-grained reactivity.\n *\n * @example\n * ```tsx\n * import { useCheckout, initCheckout } from \"@commercengine/checkout/solid\";\n * import { onMount, onCleanup } from \"solid-js\";\n *\n * // Initialize once at app root\n * function App() {\n * onMount(() => {\n * initCheckout({\n * storeId: \"store_xxx\",\n * apiKey: \"ak_xxx\",\n * });\n * });\n *\n * return <>{props.children}</>;\n * }\n *\n * // Use anywhere\n * function Header() {\n * const checkout = useCheckout();\n *\n * return (\n * <button onClick={() => checkout.openCart()} disabled={!checkout.isReady}>\n * Cart ({checkout.cartCount})\n * </button>\n * );\n * }\n * ```\n *\n * @packageDocumentation\n */\n\nimport type { UserInfo } from \"@commercengine/js\";\nimport { type Accessor, createSignal, onCleanup } from \"solid-js\";\nimport { checkoutStore } from \"./store\";\n\n// Re-export types from @commercengine/js\nexport type {\n AddToCartItem,\n AuthLoginData,\n AuthLogoutData,\n AuthMode,\n AuthRefreshData,\n CartData,\n Channel,\n CheckoutConfig,\n CheckoutEventType,\n Environment,\n ErrorData,\n LoginMethod,\n OrderData,\n QuickBuyConfig,\n SessionMode,\n UserInfo,\n} from \"@commercengine/js\";\n// Re-export everything from vanilla for convenience\nexport {\n type CheckoutActions,\n type CheckoutState,\n type CheckoutStore,\n checkoutStore,\n destroyCheckout,\n getCheckout,\n initCheckout,\n subscribeToCheckout,\n} from \"./store\";\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/**\n * Return type from useCheckout\n *\n * State properties are getters that return reactive values.\n * Actions are regular functions.\n */\nexport interface UseCheckoutReturn {\n /** Whether checkout is ready to use (reactive getter) */\n readonly isReady: boolean;\n /** Whether checkout overlay is currently open (reactive getter) */\n readonly isOpen: boolean;\n /** Number of items in cart (reactive getter) */\n readonly cartCount: number;\n /** Cart subtotal amount (reactive getter) */\n readonly cartTotal: number;\n /** Cart currency code (reactive getter) */\n readonly cartCurrency: string;\n /** Whether user is logged in (reactive getter) */\n readonly isLoggedIn: boolean;\n /** Current user info (reactive getter, null if not logged in) */\n readonly user: UserInfo | null;\n /** Open the cart drawer */\n openCart: () => void;\n /** Open the checkout drawer directly */\n openCheckout: () => void;\n /** Close the checkout overlay */\n close: () => void;\n /** Add item to cart */\n addToCart: (productId: string, variantId: string | null, quantity?: number) => void;\n /** Update authentication tokens */\n updateTokens: (accessToken: string, refreshToken?: string) => void;\n}\n\n// =============================================================================\n// PRIMITIVE\n// =============================================================================\n\n/**\n * Solid.js primitive for checkout integration\n *\n * Returns an object with reactive getters for state and methods for actions.\n * Uses Solid's fine-grained reactivity - components only re-render when\n * accessed values change.\n *\n * @returns Checkout state (reactive getters) and methods\n *\n * @example Basic usage\n * ```tsx\n * function CartButton() {\n * const checkout = useCheckout();\n *\n * return (\n * <button onClick={() => checkout.openCart()} disabled={!checkout.isReady}>\n * Cart ({checkout.cartCount})\n * </button>\n * );\n * }\n * ```\n *\n * @example Add to cart\n * ```tsx\n * function ProductCard(props) {\n * const checkout = useCheckout();\n *\n * return (\n * <button onClick={() => checkout.addToCart(props.product.id, props.product.variantId, 1)}>\n * Add to Cart\n * </button>\n * );\n * }\n * ```\n */\nexport function useCheckout(): UseCheckoutReturn {\n // Create signals for each piece of state\n const initialState = checkoutStore.getState();\n\n const [isReady, setIsReady] = createSignal(initialState.isReady);\n const [isOpen, setIsOpen] = createSignal(initialState.isOpen);\n const [cartCount, setCartCount] = createSignal(initialState.cartCount);\n const [cartTotal, setCartTotal] = createSignal(initialState.cartTotal);\n const [cartCurrency, setCartCurrency] = createSignal(initialState.cartCurrency);\n const [isLoggedIn, setIsLoggedIn] = createSignal(initialState.isLoggedIn);\n const [user, setUser] = createSignal(initialState.user);\n\n // Subscribe to store changes\n const unsubscribe = checkoutStore.subscribe((state) => {\n setIsReady(state.isReady);\n setIsOpen(state.isOpen);\n setCartCount(state.cartCount);\n setCartTotal(state.cartTotal);\n setCartCurrency(state.cartCurrency);\n setIsLoggedIn(state.isLoggedIn);\n setUser(state.user);\n });\n\n // Cleanup on component unmount\n onCleanup(() => {\n unsubscribe();\n });\n\n // Return object with reactive getters\n return {\n get isReady() {\n return isReady();\n },\n get isOpen() {\n return isOpen();\n },\n get cartCount() {\n return cartCount();\n },\n get cartTotal() {\n return cartTotal();\n },\n get cartCurrency() {\n return cartCurrency();\n },\n get isLoggedIn() {\n return isLoggedIn();\n },\n get user() {\n return user();\n },\n openCart: () => checkoutStore.getState().openCart(),\n openCheckout: () => checkoutStore.getState().openCheckout(),\n close: () => checkoutStore.getState().close(),\n addToCart: (productId, variantId, quantity) =>\n checkoutStore.getState().addToCart(productId, variantId, quantity),\n updateTokens: (accessToken, refreshToken) =>\n checkoutStore.getState().updateTokens(accessToken, refreshToken),\n };\n}\n\n// =============================================================================\n// INDIVIDUAL SIGNALS (for fine-grained subscriptions)\n// =============================================================================\n\n/**\n * Create a reactive signal for cart count only\n *\n * Use this when you only need cart count and want minimal re-renders.\n *\n * @example\n * ```tsx\n * function Badge() {\n * const count = createCartCountSignal();\n * return <span class=\"badge\">{count()}</span>;\n * }\n * ```\n */\nexport function createCartCountSignal(): Accessor<number> {\n const [cartCount, setCartCount] = createSignal(checkoutStore.getState().cartCount);\n\n const unsubscribe = checkoutStore.subscribe((state, prevState) => {\n if (state.cartCount !== prevState.cartCount) {\n setCartCount(state.cartCount);\n }\n });\n\n onCleanup(() => {\n unsubscribe();\n });\n\n return cartCount;\n}\n\n/**\n * Create a reactive signal for ready state only\n */\nexport function createIsReadySignal(): Accessor<boolean> {\n const [isReady, setIsReady] = createSignal(checkoutStore.getState().isReady);\n\n const unsubscribe = checkoutStore.subscribe((state, prevState) => {\n if (state.isReady !== prevState.isReady) {\n setIsReady(state.isReady);\n }\n });\n\n onCleanup(() => {\n unsubscribe();\n });\n\n return isReady;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoJA,SAAgB,cAAiC;CAE/C,MAAM,eAAe,cAAc,UAAU;CAE7C,MAAM,CAAC,SAAS,cAAc,aAAa,aAAa,QAAQ;CAChE,MAAM,CAAC,QAAQ,aAAa,aAAa,aAAa,OAAO;CAC7D,MAAM,CAAC,WAAW,gBAAgB,aAAa,aAAa,UAAU;CACtE,MAAM,CAAC,WAAW,gBAAgB,aAAa,aAAa,UAAU;CACtE,MAAM,CAAC,cAAc,mBAAmB,aAAa,aAAa,aAAa;CAC/E,MAAM,CAAC,YAAY,iBAAiB,aAAa,aAAa,WAAW;CACzE,MAAM,CAAC,MAAM,WAAW,aAAa,aAAa,KAAK;CAGvD,MAAM,cAAc,cAAc,WAAW,UAAU;AACrD,aAAW,MAAM,QAAQ;AACzB,YAAU,MAAM,OAAO;AACvB,eAAa,MAAM,UAAU;AAC7B,eAAa,MAAM,UAAU;AAC7B,kBAAgB,MAAM,aAAa;AACnC,gBAAc,MAAM,WAAW;AAC/B,UAAQ,MAAM,KAAK;GACnB;AAGF,iBAAgB;AACd,eAAa;GACb;AAGF,QAAO;EACL,IAAI,UAAU;AACZ,UAAO,SAAS;;EAElB,IAAI,SAAS;AACX,UAAO,QAAQ;;EAEjB,IAAI,YAAY;AACd,UAAO,WAAW;;EAEpB,IAAI,YAAY;AACd,UAAO,WAAW;;EAEpB,IAAI,eAAe;AACjB,UAAO,cAAc;;EAEvB,IAAI,aAAa;AACf,UAAO,YAAY;;EAErB,IAAI,OAAO;AACT,UAAO,MAAM;;EAEf,gBAAgB,cAAc,UAAU,CAAC,UAAU;EACnD,oBAAoB,cAAc,UAAU,CAAC,cAAc;EAC3D,aAAa,cAAc,UAAU,CAAC,OAAO;EAC7C,YAAY,WAAW,WAAW,aAChC,cAAc,UAAU,CAAC,UAAU,WAAW,WAAW,SAAS;EACpE,eAAe,aAAa,iBAC1B,cAAc,UAAU,CAAC,aAAa,aAAa,aAAa;EACnE;;;;;;;;;;;;;;;AAoBH,SAAgB,wBAA0C;CACxD,MAAM,CAAC,WAAW,gBAAgB,aAAa,cAAc,UAAU,CAAC,UAAU;CAElF,MAAM,cAAc,cAAc,WAAW,OAAO,cAAc;AAChE,MAAI,MAAM,cAAc,UAAU,UAChC,cAAa,MAAM,UAAU;GAE/B;AAEF,iBAAgB;AACd,eAAa;GACb;AAEF,QAAO;;;;;AAMT,SAAgB,sBAAyC;CACvD,MAAM,CAAC,SAAS,cAAc,aAAa,cAAc,UAAU,CAAC,QAAQ;CAE5E,MAAM,cAAc,cAAc,WAAW,OAAO,cAAc;AAChE,MAAI,MAAM,YAAY,UAAU,QAC9B,YAAW,MAAM,QAAQ;GAE3B;AAEF,iBAAgB;AACd,eAAa;GACb;AAEF,QAAO"}
1
+ {"version":3,"file":"solid.mjs","names":[],"sources":["../src/solid.ts"],"sourcesContent":["/**\n * Commerce Engine Checkout - Solid Binding\n *\n * Solid.js primitive for checkout integration with fine-grained reactivity.\n *\n * @example\n * ```tsx\n * import { useCheckout, initCheckout } from \"@commercengine/checkout/solid\";\n * import { onMount, onCleanup } from \"solid-js\";\n *\n * // Initialize once at app root\n * function App() {\n * onMount(() => {\n * initCheckout({\n * storeId: \"store_xxx\",\n * apiKey: \"ak_xxx\",\n * });\n * });\n *\n * return <>{props.children}</>;\n * }\n *\n * // Use anywhere\n * function Header() {\n * const checkout = useCheckout();\n *\n * return (\n * <button onClick={() => checkout.openCart()} disabled={!checkout.isReady}>\n * Cart ({checkout.cartCount})\n * </button>\n * );\n * }\n * ```\n *\n * @packageDocumentation\n */\n\nimport type { UserInfo } from \"@commercengine/js\";\nimport { type Accessor, createSignal, onCleanup } from \"solid-js\";\nimport { checkoutStore } from \"./store\";\n\n// Re-export types from @commercengine/js\nexport type {\n AddToCartItem,\n AuthLoginData,\n AuthLogoutData,\n AuthMode,\n AuthRefreshData,\n CartData,\n Channel,\n CheckoutConfig,\n CheckoutEventType,\n CheckoutFeatures,\n DrawerDirection,\n DrawerDirectionConfig,\n Environment,\n ErrorData,\n LoginMethod,\n OrderData,\n QuickBuyConfig,\n SessionMode,\n UserInfo,\n} from \"@commercengine/js\";\n// Re-export everything from vanilla for convenience\nexport {\n type CheckoutActions,\n type CheckoutState,\n type CheckoutStore,\n checkoutStore,\n destroyCheckout,\n getCheckout,\n initCheckout,\n subscribeToCheckout,\n} from \"./store\";\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/**\n * Return type from useCheckout\n *\n * State properties are getters that return reactive values.\n * Actions are regular functions.\n */\nexport interface UseCheckoutReturn {\n /** Whether checkout is ready to use (reactive getter) */\n readonly isReady: boolean;\n /** Whether checkout overlay is currently open (reactive getter) */\n readonly isOpen: boolean;\n /** Number of items in cart (reactive getter) */\n readonly cartCount: number;\n /** Cart subtotal amount (reactive getter) */\n readonly cartTotal: number;\n /** Cart currency code (reactive getter) */\n readonly cartCurrency: string;\n /** Whether user is logged in (reactive getter) */\n readonly isLoggedIn: boolean;\n /** Current user info (reactive getter, null if not logged in) */\n readonly user: UserInfo | null;\n /** Open the cart drawer */\n openCart: () => void;\n /** Open the checkout drawer directly */\n openCheckout: () => void;\n /** Close the checkout overlay */\n close: () => void;\n /** Add item to cart */\n addToCart: (productId: string, variantId: string | null, quantity?: number) => void;\n /** Update authentication tokens */\n updateTokens: (accessToken: string, refreshToken?: string) => void;\n}\n\n// =============================================================================\n// PRIMITIVE\n// =============================================================================\n\n/**\n * Solid.js primitive for checkout integration\n *\n * Returns an object with reactive getters for state and methods for actions.\n * Uses Solid's fine-grained reactivity - components only re-render when\n * accessed values change.\n *\n * @returns Checkout state (reactive getters) and methods\n *\n * @example Basic usage\n * ```tsx\n * function CartButton() {\n * const checkout = useCheckout();\n *\n * return (\n * <button onClick={() => checkout.openCart()} disabled={!checkout.isReady}>\n * Cart ({checkout.cartCount})\n * </button>\n * );\n * }\n * ```\n *\n * @example Add to cart\n * ```tsx\n * function ProductCard(props) {\n * const checkout = useCheckout();\n *\n * return (\n * <button onClick={() => checkout.addToCart(props.product.id, props.product.variantId, 1)}>\n * Add to Cart\n * </button>\n * );\n * }\n * ```\n */\nexport function useCheckout(): UseCheckoutReturn {\n // Create signals for each piece of state\n const initialState = checkoutStore.getState();\n\n const [isReady, setIsReady] = createSignal(initialState.isReady);\n const [isOpen, setIsOpen] = createSignal(initialState.isOpen);\n const [cartCount, setCartCount] = createSignal(initialState.cartCount);\n const [cartTotal, setCartTotal] = createSignal(initialState.cartTotal);\n const [cartCurrency, setCartCurrency] = createSignal(initialState.cartCurrency);\n const [isLoggedIn, setIsLoggedIn] = createSignal(initialState.isLoggedIn);\n const [user, setUser] = createSignal(initialState.user);\n\n // Subscribe to store changes\n const unsubscribe = checkoutStore.subscribe((state) => {\n setIsReady(state.isReady);\n setIsOpen(state.isOpen);\n setCartCount(state.cartCount);\n setCartTotal(state.cartTotal);\n setCartCurrency(state.cartCurrency);\n setIsLoggedIn(state.isLoggedIn);\n setUser(state.user);\n });\n\n // Cleanup on component unmount\n onCleanup(() => {\n unsubscribe();\n });\n\n // Return object with reactive getters\n return {\n get isReady() {\n return isReady();\n },\n get isOpen() {\n return isOpen();\n },\n get cartCount() {\n return cartCount();\n },\n get cartTotal() {\n return cartTotal();\n },\n get cartCurrency() {\n return cartCurrency();\n },\n get isLoggedIn() {\n return isLoggedIn();\n },\n get user() {\n return user();\n },\n openCart: () => checkoutStore.getState().openCart(),\n openCheckout: () => checkoutStore.getState().openCheckout(),\n close: () => checkoutStore.getState().close(),\n addToCart: (productId, variantId, quantity) =>\n checkoutStore.getState().addToCart(productId, variantId, quantity),\n updateTokens: (accessToken, refreshToken) =>\n checkoutStore.getState().updateTokens(accessToken, refreshToken),\n };\n}\n\n// =============================================================================\n// INDIVIDUAL SIGNALS (for fine-grained subscriptions)\n// =============================================================================\n\n/**\n * Create a reactive signal for cart count only\n *\n * Use this when you only need cart count and want minimal re-renders.\n *\n * @example\n * ```tsx\n * function Badge() {\n * const count = createCartCountSignal();\n * return <span class=\"badge\">{count()}</span>;\n * }\n * ```\n */\nexport function createCartCountSignal(): Accessor<number> {\n const [cartCount, setCartCount] = createSignal(checkoutStore.getState().cartCount);\n\n const unsubscribe = checkoutStore.subscribe((state, prevState) => {\n if (state.cartCount !== prevState.cartCount) {\n setCartCount(state.cartCount);\n }\n });\n\n onCleanup(() => {\n unsubscribe();\n });\n\n return cartCount;\n}\n\n/**\n * Create a reactive signal for ready state only\n */\nexport function createIsReadySignal(): Accessor<boolean> {\n const [isReady, setIsReady] = createSignal(checkoutStore.getState().isReady);\n\n const unsubscribe = checkoutStore.subscribe((state, prevState) => {\n if (state.isReady !== prevState.isReady) {\n setIsReady(state.isReady);\n }\n });\n\n onCleanup(() => {\n unsubscribe();\n });\n\n return isReady;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuJA,SAAgB,cAAiC;CAE/C,MAAM,eAAe,cAAc,UAAU;CAE7C,MAAM,CAAC,SAAS,cAAc,aAAa,aAAa,QAAQ;CAChE,MAAM,CAAC,QAAQ,aAAa,aAAa,aAAa,OAAO;CAC7D,MAAM,CAAC,WAAW,gBAAgB,aAAa,aAAa,UAAU;CACtE,MAAM,CAAC,WAAW,gBAAgB,aAAa,aAAa,UAAU;CACtE,MAAM,CAAC,cAAc,mBAAmB,aAAa,aAAa,aAAa;CAC/E,MAAM,CAAC,YAAY,iBAAiB,aAAa,aAAa,WAAW;CACzE,MAAM,CAAC,MAAM,WAAW,aAAa,aAAa,KAAK;CAGvD,MAAM,cAAc,cAAc,WAAW,UAAU;AACrD,aAAW,MAAM,QAAQ;AACzB,YAAU,MAAM,OAAO;AACvB,eAAa,MAAM,UAAU;AAC7B,eAAa,MAAM,UAAU;AAC7B,kBAAgB,MAAM,aAAa;AACnC,gBAAc,MAAM,WAAW;AAC/B,UAAQ,MAAM,KAAK;GACnB;AAGF,iBAAgB;AACd,eAAa;GACb;AAGF,QAAO;EACL,IAAI,UAAU;AACZ,UAAO,SAAS;;EAElB,IAAI,SAAS;AACX,UAAO,QAAQ;;EAEjB,IAAI,YAAY;AACd,UAAO,WAAW;;EAEpB,IAAI,YAAY;AACd,UAAO,WAAW;;EAEpB,IAAI,eAAe;AACjB,UAAO,cAAc;;EAEvB,IAAI,aAAa;AACf,UAAO,YAAY;;EAErB,IAAI,OAAO;AACT,UAAO,MAAM;;EAEf,gBAAgB,cAAc,UAAU,CAAC,UAAU;EACnD,oBAAoB,cAAc,UAAU,CAAC,cAAc;EAC3D,aAAa,cAAc,UAAU,CAAC,OAAO;EAC7C,YAAY,WAAW,WAAW,aAChC,cAAc,UAAU,CAAC,UAAU,WAAW,WAAW,SAAS;EACpE,eAAe,aAAa,iBAC1B,cAAc,UAAU,CAAC,aAAa,aAAa,aAAa;EACnE;;;;;;;;;;;;;;;AAoBH,SAAgB,wBAA0C;CACxD,MAAM,CAAC,WAAW,gBAAgB,aAAa,cAAc,UAAU,CAAC,UAAU;CAElF,MAAM,cAAc,cAAc,WAAW,OAAO,cAAc;AAChE,MAAI,MAAM,cAAc,UAAU,UAChC,cAAa,MAAM,UAAU;GAE/B;AAEF,iBAAgB;AACd,eAAa;GACb;AAEF,QAAO;;;;;AAMT,SAAgB,sBAAyC;CACvD,MAAM,CAAC,SAAS,cAAc,aAAa,cAAc,UAAU,CAAC,QAAQ;CAE5E,MAAM,cAAc,cAAc,WAAW,OAAO,cAAc;AAChE,MAAI,MAAM,YAAY,UAAU,QAC9B,YAAW,MAAM,QAAQ;GAE3B;AAEF,iBAAgB;AACd,eAAa;GACb;AAEF,QAAO"}
package/dist/store.d.mts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Checkout, CheckoutConfig, UserInfo } from "@commercengine/js";
2
- import * as zustand0 from "zustand";
2
+ import * as zustand from "zustand";
3
3
 
4
4
  //#region src/store.d.ts
5
5
  /**
@@ -89,7 +89,7 @@ type CheckoutStore = CheckoutState & CheckoutActions;
89
89
  * checkoutStore.getState().openCart();
90
90
  * ```
91
91
  */
92
- declare const checkoutStore: Omit<zustand0.StoreApi<CheckoutStore>, "subscribe"> & {
92
+ declare const checkoutStore: Omit<zustand.StoreApi<CheckoutStore>, "subscribe"> & {
93
93
  subscribe: {
94
94
  (listener: (selectedState: CheckoutStore, previousSelectedState: CheckoutStore) => void): () => void;
95
95
  <U>(selector: (state: CheckoutStore) => U, listener: (selectedState: U, previousSelectedState: U) => void, options?: {
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.mts","names":[],"sources":["../src/store.ts"],"mappings":";;;;;;;UA6CiB,aAAA;EAqCf;EAnCA,QAAA,EAAU,QAAA;EA6CV;EA3CA,OAAA;EAmDY;EAjDZ,MAAA;EAiDyD;EA/CzD,SAAA;EAqDe;EAnDf,SAAA;EAmDyD;EAjDzD,YAAA;EAuDU;EArDV,UAAA;;EAEA,IAAA,EAAM,QAAA;AAAA;AAgGR;;;AAAA,UA1FiB,eAAA;EA0FS;;;;EArFxB,IAAA,GAAO,MAAA,EAAQ,cAAA;;;;EAKf,OAAA;;;;EAKA,QAAA;EA2EwB;;;EAtExB,YAAA;;;;EAKA,KAAA;;;;;;;EAQA,SAAA,GAAY,SAAA,UAAmB,SAAA,iBAA0B,QAAA;;;;;EAMzD,YAAA,GAAe,WAAA,UAAqB,YAAA;AAAA;;;;KAM1B,aAAA,GAAgB,aAAA,GAAgB,eAAA;;;AAoK5C;;;;;AAcA;;;;;AAuBA;;;;;AAwCA;;;;;;;cApMa,aAAA,EAAa,IAAA,CAAA,QAAA,CAAA,QAAA,CAAA,aAAA;;;;;;;;;;;;;;;;;;;;;;;iBAuHV,YAAA,CAAa,MAAA,EAAQ,cAAA;;;;;;;;;;;iBAcrB,eAAA,CAAA;;;;;;;;;;;;;;;;;;;;iBAuBA,WAAA,CAAA,GAAe,IAAA,CAAK,aAAA;;;;;;;;;;;;;;;;;;;;;;;cAwCvB,mBAAA;EAAA"}
1
+ {"version":3,"file":"store.d.mts","names":[],"sources":["../src/store.ts"],"mappings":";;;;;;;UA6CiB,aAAA;EAqCf;EAnCA,QAAA,EAAU,QAAA;EA6CV;EA3CA,OAAA;EAmDY;EAjDZ,MAAA;EAiDyD;EA/CzD,SAAA;EAqDe;EAnDf,SAAA;EAmDyD;EAjDzD,YAAA;EAuDU;EArDV,UAAA;;EAEA,IAAA,EAAM,QAAA;AAAA;AAgGR;;;AAAA,UA1FiB,eAAA;EA0FS;;;;EArFxB,IAAA,GAAO,MAAA,EAAQ,cAAA;;;;EAKf,OAAA;;;;EAKA,QAAA;EA2EwB;;;EAtExB,YAAA;;;;EAKA,KAAA;;;;;;;EAQA,SAAA,GAAY,SAAA,UAAmB,SAAA,iBAA0B,QAAA;;;;;EAMzD,YAAA,GAAe,WAAA,UAAqB,YAAA;AAAA;;;;KAM1B,aAAA,GAAgB,aAAA,GAAgB,eAAA;;;AAoK5C;;;;;AAcA;;;;;AAuBA;;;;;AAwCA;;;;;;;cApMa,aAAA,EAAa,IAAA,CAAA,OAAA,CAAA,QAAA,CAAA,aAAA;;;;;;;;;;;;;;;;;;;;;;;iBAuHV,YAAA,CAAa,MAAA,EAAQ,cAAA;;;;;;;;;;;iBAcrB,eAAA,CAAA;;;;;;;;;;;;;;;;;;;;iBAuBA,WAAA,CAAA,GAAe,IAAA,CAAK,aAAA;;;;;;;;;;;;;;;;;;;;;;;cAwCvB,mBAAA;EAAA"}
package/dist/svelte.d.mts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { a as destroyCheckout, c as subscribeToCheckout, i as checkoutStore, n as CheckoutState, o as getCheckout, r as CheckoutStore, s as initCheckout, t as CheckoutActions } from "./store.mjs";
2
- import { AddToCartItem, AuthLoginData, AuthLogoutData, AuthMode, AuthRefreshData, CartData, Channel, CheckoutConfig, CheckoutEventType, Environment, ErrorData, LoginMethod, OrderData, QuickBuyConfig, SessionMode, UserInfo, UserInfo as UserInfo$1 } from "@commercengine/js";
2
+ import { AddToCartItem, AuthLoginData, AuthLogoutData, AuthMode, AuthRefreshData, CartData, Channel, CheckoutConfig, CheckoutEventType, CheckoutFeatures, DrawerDirection, DrawerDirectionConfig, Environment, ErrorData, LoginMethod, OrderData, QuickBuyConfig, SessionMode, UserInfo, UserInfo as UserInfo$1 } from "@commercengine/js";
3
3
  import { Readable } from "svelte/store";
4
4
 
5
5
  //#region src/svelte.d.ts
@@ -75,5 +75,5 @@ declare const isReady: Readable<boolean>;
75
75
  */
76
76
  declare const isOpen: Readable<boolean>;
77
77
  //#endregion
78
- export { type AddToCartItem, type AuthLoginData, type AuthLogoutData, type AuthMode, type AuthRefreshData, type CartData, type Channel, type CheckoutActions, type CheckoutConfig, type CheckoutEventType, type CheckoutState, type CheckoutStore, CheckoutValue, type Environment, type ErrorData, type LoginMethod, type OrderData, type QuickBuyConfig, type SessionMode, type UserInfo, cartCount, cartTotal, checkout, checkoutStore, destroyCheckout, getCheckout, initCheckout, isOpen, isReady, subscribeToCheckout };
78
+ export { type AddToCartItem, type AuthLoginData, type AuthLogoutData, type AuthMode, type AuthRefreshData, type CartData, type Channel, type CheckoutActions, type CheckoutConfig, type CheckoutEventType, type CheckoutFeatures, type CheckoutState, type CheckoutStore, CheckoutValue, type DrawerDirection, type DrawerDirectionConfig, type Environment, type ErrorData, type LoginMethod, type OrderData, type QuickBuyConfig, type SessionMode, type UserInfo, cartCount, cartTotal, checkout, checkoutStore, destroyCheckout, getCheckout, initCheckout, isOpen, isReady, subscribeToCheckout };
79
79
  //# sourceMappingURL=svelte.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"svelte.d.mts","names":[],"sources":["../src/svelte.ts"],"mappings":";;;;;;;;UAsEiB,aAAA;EA6Ff;EA3FA,OAAA;EAqFsB;EAnFtB,MAAA;EA8FW;EA5FX,SAAA;;EAEA,SAAA;EA0F8B;EAxF9B,YAAA;EAyGA;EAvGA,UAAA;EAiGoB;EA/FpB,IAAA,EAAM,UAAA;EA0GK;EAxGX,QAAA;;EAEA,YAAA;EAsG2B;EApG3B,KAAA;;EAEA,SAAA,GAAY,SAAA,UAAmB,SAAA,iBAA0B,QAAA;;EAEzD,YAAA,GAAe,WAAA,UAAqB,YAAA;AAAA;;;;;;;;;;;;;;;;;cA4CzB,QAAA,EAAU,QAAA,CAAS,aAAA;;;;;;;;;;;;;cAmBnB,SAAA,EAAW,QAAA;;;;cAWX,SAAA,EAAW,QAAA;;;;cAWX,OAAA,EAAS,QAAA;;;;cAWT,MAAA,EAAQ,QAAA"}
1
+ {"version":3,"file":"svelte.d.mts","names":[],"sources":["../src/svelte.ts"],"mappings":";;;;;;;;UAyEiB,aAAA;EA6Ff;EA3FA,OAAA;EAqFsB;EAnFtB,MAAA;EA8FW;EA5FX,SAAA;;EAEA,SAAA;EA0F8B;EAxF9B,YAAA;EAyGA;EAvGA,UAAA;EAiGoB;EA/FpB,IAAA,EAAM,UAAA;EA0GK;EAxGX,QAAA;;EAEA,YAAA;EAsG2B;EApG3B,KAAA;;EAEA,SAAA,GAAY,SAAA,UAAmB,SAAA,iBAA0B,QAAA;;EAEzD,YAAA,GAAe,WAAA,UAAqB,YAAA;AAAA;;;;;;;;;;;;;;;;;cA4CzB,QAAA,EAAU,QAAA,CAAS,aAAA;;;;;;;;;;;;;cAmBnB,SAAA,EAAW,QAAA;;;;cAWX,SAAA,EAAW,QAAA;;;;cAWX,OAAA,EAAS,QAAA;;;;cAWT,MAAA,EAAQ,QAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"svelte.mjs","names":[],"sources":["../src/svelte.ts"],"sourcesContent":["/**\n * Commerce Engine Checkout - Svelte Binding\n *\n * Svelte stores for checkout integration with automatic reactivity.\n *\n * @example\n * ```svelte\n * <script>\n * import { checkout, initCheckout } from \"@commercengine/checkout/svelte\";\n * import { onMount } from \"svelte\";\n *\n * // Initialize once at app root (+layout.svelte)\n * onMount(() => {\n * initCheckout({\n * storeId: \"store_xxx\",\n * apiKey: \"ak_xxx\",\n * });\n * });\n * </script>\n *\n * <button on:click={() => $checkout.openCart()} disabled={!$checkout.isReady}>\n * Cart ({$checkout.cartCount})\n * </button>\n * ```\n *\n * @packageDocumentation\n */\n\nimport type { UserInfo } from \"@commercengine/js\";\nimport { type Readable, readable } from \"svelte/store\";\nimport { checkoutStore } from \"./store\";\n\n// Re-export types from @commercengine/js\nexport type {\n AddToCartItem,\n AuthLoginData,\n AuthLogoutData,\n AuthMode,\n AuthRefreshData,\n CartData,\n Channel,\n CheckoutConfig,\n CheckoutEventType,\n Environment,\n ErrorData,\n LoginMethod,\n OrderData,\n QuickBuyConfig,\n SessionMode,\n UserInfo,\n} from \"@commercengine/js\";\n// Re-export everything from vanilla for convenience\nexport {\n type CheckoutActions,\n type CheckoutState,\n type CheckoutStore,\n checkoutStore,\n destroyCheckout,\n getCheckout,\n initCheckout,\n subscribeToCheckout,\n} from \"./store\";\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/**\n * Checkout store value type\n */\nexport interface CheckoutValue {\n /** Whether checkout is ready to use */\n isReady: boolean;\n /** Whether checkout overlay is currently open */\n isOpen: boolean;\n /** Number of items in cart */\n cartCount: number;\n /** Cart subtotal amount */\n cartTotal: number;\n /** Cart currency code */\n cartCurrency: string;\n /** Whether user is logged in */\n isLoggedIn: boolean;\n /** Current user info (null if not logged in) */\n user: UserInfo | null;\n /** Open the cart drawer */\n openCart: () => void;\n /** Open the checkout drawer directly */\n openCheckout: () => void;\n /** Close the checkout overlay */\n close: () => void;\n /** Add item to cart */\n addToCart: (productId: string, variantId: string | null, quantity?: number) => void;\n /** Update authentication tokens */\n updateTokens: (accessToken: string, refreshToken?: string) => void;\n}\n\n// =============================================================================\n// STORES\n// =============================================================================\n\n/**\n * Get current checkout value from Zustand store\n */\nfunction getCheckoutValue(): CheckoutValue {\n const state = checkoutStore.getState();\n return {\n isReady: state.isReady,\n isOpen: state.isOpen,\n cartCount: state.cartCount,\n cartTotal: state.cartTotal,\n cartCurrency: state.cartCurrency,\n isLoggedIn: state.isLoggedIn,\n user: state.user,\n openCart: state.openCart,\n openCheckout: state.openCheckout,\n close: state.close,\n addToCart: state.addToCart,\n updateTokens: state.updateTokens,\n };\n}\n\n/**\n * Svelte readable store for checkout state and actions\n *\n * Syncs with the Zustand store automatically.\n *\n * @example\n * ```svelte\n * <script>\n * import { checkout } from \"@commercengine/checkout/svelte\";\n * </script>\n *\n * <button on:click={() => $checkout.openCart()} disabled={!$checkout.isReady}>\n * Cart ({$checkout.cartCount})\n * </button>\n * ```\n */\nexport const checkout: Readable<CheckoutValue> = readable(getCheckoutValue(), (set) => {\n // Subscribe to Zustand store and update Svelte store\n return checkoutStore.subscribe(() => {\n set(getCheckoutValue());\n });\n});\n\n/**\n * Individual store for cart count (for fine-grained reactivity)\n *\n * @example\n * ```svelte\n * <script>\n * import { cartCount } from \"@commercengine/checkout/svelte\";\n * </script>\n *\n * <span class=\"badge\">{$cartCount}</span>\n * ```\n */\nexport const cartCount: Readable<number> = readable(checkoutStore.getState().cartCount, (set) => {\n return checkoutStore.subscribe((state, prevState) => {\n if (state.cartCount !== prevState.cartCount) {\n set(state.cartCount);\n }\n });\n});\n\n/**\n * Individual store for cart total\n */\nexport const cartTotal: Readable<number> = readable(checkoutStore.getState().cartTotal, (set) => {\n return checkoutStore.subscribe((state, prevState) => {\n if (state.cartTotal !== prevState.cartTotal) {\n set(state.cartTotal);\n }\n });\n});\n\n/**\n * Individual store for ready state\n */\nexport const isReady: Readable<boolean> = readable(checkoutStore.getState().isReady, (set) => {\n return checkoutStore.subscribe((state, prevState) => {\n if (state.isReady !== prevState.isReady) {\n set(state.isReady);\n }\n });\n});\n\n/**\n * Individual store for open state\n */\nexport const isOpen: Readable<boolean> = readable(checkoutStore.getState().isOpen, (set) => {\n return checkoutStore.subscribe((state, prevState) => {\n if (state.isOpen !== prevState.isOpen) {\n set(state.isOpen);\n }\n });\n});\n"],"mappings":";;;;;;;AAwGA,SAAS,mBAAkC;CACzC,MAAM,QAAQ,cAAc,UAAU;AACtC,QAAO;EACL,SAAS,MAAM;EACf,QAAQ,MAAM;EACd,WAAW,MAAM;EACjB,WAAW,MAAM;EACjB,cAAc,MAAM;EACpB,YAAY,MAAM;EAClB,MAAM,MAAM;EACZ,UAAU,MAAM;EAChB,cAAc,MAAM;EACpB,OAAO,MAAM;EACb,WAAW,MAAM;EACjB,cAAc,MAAM;EACrB;;;;;;;;;;;;;;;;;;AAmBH,MAAa,WAAoC,SAAS,kBAAkB,GAAG,QAAQ;AAErF,QAAO,cAAc,gBAAgB;AACnC,MAAI,kBAAkB,CAAC;GACvB;EACF;;;;;;;;;;;;;AAcF,MAAa,YAA8B,SAAS,cAAc,UAAU,CAAC,YAAY,QAAQ;AAC/F,QAAO,cAAc,WAAW,OAAO,cAAc;AACnD,MAAI,MAAM,cAAc,UAAU,UAChC,KAAI,MAAM,UAAU;GAEtB;EACF;;;;AAKF,MAAa,YAA8B,SAAS,cAAc,UAAU,CAAC,YAAY,QAAQ;AAC/F,QAAO,cAAc,WAAW,OAAO,cAAc;AACnD,MAAI,MAAM,cAAc,UAAU,UAChC,KAAI,MAAM,UAAU;GAEtB;EACF;;;;AAKF,MAAa,UAA6B,SAAS,cAAc,UAAU,CAAC,UAAU,QAAQ;AAC5F,QAAO,cAAc,WAAW,OAAO,cAAc;AACnD,MAAI,MAAM,YAAY,UAAU,QAC9B,KAAI,MAAM,QAAQ;GAEpB;EACF;;;;AAKF,MAAa,SAA4B,SAAS,cAAc,UAAU,CAAC,SAAS,QAAQ;AAC1F,QAAO,cAAc,WAAW,OAAO,cAAc;AACnD,MAAI,MAAM,WAAW,UAAU,OAC7B,KAAI,MAAM,OAAO;GAEnB;EACF"}
1
+ {"version":3,"file":"svelte.mjs","names":[],"sources":["../src/svelte.ts"],"sourcesContent":["/**\n * Commerce Engine Checkout - Svelte Binding\n *\n * Svelte stores for checkout integration with automatic reactivity.\n *\n * @example\n * ```svelte\n * <script>\n * import { checkout, initCheckout } from \"@commercengine/checkout/svelte\";\n * import { onMount } from \"svelte\";\n *\n * // Initialize once at app root (+layout.svelte)\n * onMount(() => {\n * initCheckout({\n * storeId: \"store_xxx\",\n * apiKey: \"ak_xxx\",\n * });\n * });\n * </script>\n *\n * <button on:click={() => $checkout.openCart()} disabled={!$checkout.isReady}>\n * Cart ({$checkout.cartCount})\n * </button>\n * ```\n *\n * @packageDocumentation\n */\n\nimport type { UserInfo } from \"@commercengine/js\";\nimport { type Readable, readable } from \"svelte/store\";\nimport { checkoutStore } from \"./store\";\n\n// Re-export types from @commercengine/js\nexport type {\n AddToCartItem,\n AuthLoginData,\n AuthLogoutData,\n AuthMode,\n AuthRefreshData,\n CartData,\n Channel,\n CheckoutConfig,\n CheckoutEventType,\n CheckoutFeatures,\n DrawerDirection,\n DrawerDirectionConfig,\n Environment,\n ErrorData,\n LoginMethod,\n OrderData,\n QuickBuyConfig,\n SessionMode,\n UserInfo,\n} from \"@commercengine/js\";\n// Re-export everything from vanilla for convenience\nexport {\n type CheckoutActions,\n type CheckoutState,\n type CheckoutStore,\n checkoutStore,\n destroyCheckout,\n getCheckout,\n initCheckout,\n subscribeToCheckout,\n} from \"./store\";\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/**\n * Checkout store value type\n */\nexport interface CheckoutValue {\n /** Whether checkout is ready to use */\n isReady: boolean;\n /** Whether checkout overlay is currently open */\n isOpen: boolean;\n /** Number of items in cart */\n cartCount: number;\n /** Cart subtotal amount */\n cartTotal: number;\n /** Cart currency code */\n cartCurrency: string;\n /** Whether user is logged in */\n isLoggedIn: boolean;\n /** Current user info (null if not logged in) */\n user: UserInfo | null;\n /** Open the cart drawer */\n openCart: () => void;\n /** Open the checkout drawer directly */\n openCheckout: () => void;\n /** Close the checkout overlay */\n close: () => void;\n /** Add item to cart */\n addToCart: (productId: string, variantId: string | null, quantity?: number) => void;\n /** Update authentication tokens */\n updateTokens: (accessToken: string, refreshToken?: string) => void;\n}\n\n// =============================================================================\n// STORES\n// =============================================================================\n\n/**\n * Get current checkout value from Zustand store\n */\nfunction getCheckoutValue(): CheckoutValue {\n const state = checkoutStore.getState();\n return {\n isReady: state.isReady,\n isOpen: state.isOpen,\n cartCount: state.cartCount,\n cartTotal: state.cartTotal,\n cartCurrency: state.cartCurrency,\n isLoggedIn: state.isLoggedIn,\n user: state.user,\n openCart: state.openCart,\n openCheckout: state.openCheckout,\n close: state.close,\n addToCart: state.addToCart,\n updateTokens: state.updateTokens,\n };\n}\n\n/**\n * Svelte readable store for checkout state and actions\n *\n * Syncs with the Zustand store automatically.\n *\n * @example\n * ```svelte\n * <script>\n * import { checkout } from \"@commercengine/checkout/svelte\";\n * </script>\n *\n * <button on:click={() => $checkout.openCart()} disabled={!$checkout.isReady}>\n * Cart ({$checkout.cartCount})\n * </button>\n * ```\n */\nexport const checkout: Readable<CheckoutValue> = readable(getCheckoutValue(), (set) => {\n // Subscribe to Zustand store and update Svelte store\n return checkoutStore.subscribe(() => {\n set(getCheckoutValue());\n });\n});\n\n/**\n * Individual store for cart count (for fine-grained reactivity)\n *\n * @example\n * ```svelte\n * <script>\n * import { cartCount } from \"@commercengine/checkout/svelte\";\n * </script>\n *\n * <span class=\"badge\">{$cartCount}</span>\n * ```\n */\nexport const cartCount: Readable<number> = readable(checkoutStore.getState().cartCount, (set) => {\n return checkoutStore.subscribe((state, prevState) => {\n if (state.cartCount !== prevState.cartCount) {\n set(state.cartCount);\n }\n });\n});\n\n/**\n * Individual store for cart total\n */\nexport const cartTotal: Readable<number> = readable(checkoutStore.getState().cartTotal, (set) => {\n return checkoutStore.subscribe((state, prevState) => {\n if (state.cartTotal !== prevState.cartTotal) {\n set(state.cartTotal);\n }\n });\n});\n\n/**\n * Individual store for ready state\n */\nexport const isReady: Readable<boolean> = readable(checkoutStore.getState().isReady, (set) => {\n return checkoutStore.subscribe((state, prevState) => {\n if (state.isReady !== prevState.isReady) {\n set(state.isReady);\n }\n });\n});\n\n/**\n * Individual store for open state\n */\nexport const isOpen: Readable<boolean> = readable(checkoutStore.getState().isOpen, (set) => {\n return checkoutStore.subscribe((state, prevState) => {\n if (state.isOpen !== prevState.isOpen) {\n set(state.isOpen);\n }\n });\n});\n"],"mappings":";;;;;;;AA2GA,SAAS,mBAAkC;CACzC,MAAM,QAAQ,cAAc,UAAU;AACtC,QAAO;EACL,SAAS,MAAM;EACf,QAAQ,MAAM;EACd,WAAW,MAAM;EACjB,WAAW,MAAM;EACjB,cAAc,MAAM;EACpB,YAAY,MAAM;EAClB,MAAM,MAAM;EACZ,UAAU,MAAM;EAChB,cAAc,MAAM;EACpB,OAAO,MAAM;EACb,WAAW,MAAM;EACjB,cAAc,MAAM;EACrB;;;;;;;;;;;;;;;;;;AAmBH,MAAa,WAAoC,SAAS,kBAAkB,GAAG,QAAQ;AAErF,QAAO,cAAc,gBAAgB;AACnC,MAAI,kBAAkB,CAAC;GACvB;EACF;;;;;;;;;;;;;AAcF,MAAa,YAA8B,SAAS,cAAc,UAAU,CAAC,YAAY,QAAQ;AAC/F,QAAO,cAAc,WAAW,OAAO,cAAc;AACnD,MAAI,MAAM,cAAc,UAAU,UAChC,KAAI,MAAM,UAAU;GAEtB;EACF;;;;AAKF,MAAa,YAA8B,SAAS,cAAc,UAAU,CAAC,YAAY,QAAQ;AAC/F,QAAO,cAAc,WAAW,OAAO,cAAc;AACnD,MAAI,MAAM,cAAc,UAAU,UAChC,KAAI,MAAM,UAAU;GAEtB;EACF;;;;AAKF,MAAa,UAA6B,SAAS,cAAc,UAAU,CAAC,UAAU,QAAQ;AAC5F,QAAO,cAAc,WAAW,OAAO,cAAc;AACnD,MAAI,MAAM,YAAY,UAAU,QAC9B,KAAI,MAAM,QAAQ;GAEpB;EACF;;;;AAKF,MAAa,SAA4B,SAAS,cAAc,UAAU,CAAC,SAAS,QAAQ;AAC1F,QAAO,cAAc,WAAW,OAAO,cAAc;AACnD,MAAI,MAAM,WAAW,UAAU,OAC7B,KAAI,MAAM,OAAO;GAEnB;EACF"}
package/dist/vue.d.mts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { a as destroyCheckout, c as subscribeToCheckout, i as checkoutStore, n as CheckoutState, o as getCheckout, r as CheckoutStore, s as initCheckout, t as CheckoutActions } from "./store.mjs";
2
- import { AddToCartItem, AuthLoginData, AuthLogoutData, AuthMode, AuthRefreshData, CartData, Channel, CheckoutConfig, CheckoutEventType, Environment, ErrorData, LoginMethod, OrderData, QuickBuyConfig, SessionMode, UserInfo, UserInfo as UserInfo$1 } from "@commercengine/js";
2
+ import { AddToCartItem, AuthLoginData, AuthLogoutData, AuthMode, AuthRefreshData, CartData, Channel, CheckoutConfig, CheckoutEventType, CheckoutFeatures, DrawerDirection, DrawerDirectionConfig, Environment, ErrorData, LoginMethod, OrderData, QuickBuyConfig, SessionMode, UserInfo, UserInfo as UserInfo$1 } from "@commercengine/js";
3
3
  import { DeepReadonly, Ref } from "vue";
4
4
 
5
5
  //#region src/vue.d.ts
@@ -57,5 +57,5 @@ interface UseCheckoutReturn {
57
57
  */
58
58
  declare function useCheckout(): UseCheckoutReturn;
59
59
  //#endregion
60
- export { type AddToCartItem, type AuthLoginData, type AuthLogoutData, type AuthMode, type AuthRefreshData, type CartData, type Channel, type CheckoutActions, type CheckoutConfig, type CheckoutEventType, type CheckoutState, type CheckoutStore, type Environment, type ErrorData, type LoginMethod, type OrderData, type QuickBuyConfig, type SessionMode, UseCheckoutReturn, type UserInfo, checkoutStore, destroyCheckout, getCheckout, initCheckout, subscribeToCheckout, useCheckout };
60
+ export { type AddToCartItem, type AuthLoginData, type AuthLogoutData, type AuthMode, type AuthRefreshData, type CartData, type Channel, type CheckoutActions, type CheckoutConfig, type CheckoutEventType, type CheckoutFeatures, type CheckoutState, type CheckoutStore, type DrawerDirection, type DrawerDirectionConfig, type Environment, type ErrorData, type LoginMethod, type OrderData, type QuickBuyConfig, type SessionMode, UseCheckoutReturn, type UserInfo, checkoutStore, destroyCheckout, getCheckout, initCheckout, subscribeToCheckout, useCheckout };
61
61
  //# sourceMappingURL=vue.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"vue.d.mts","names":[],"sources":["../src/vue.ts"],"mappings":";;;;;;;;UA2EiB,iBAAA;EAYf;EAVA,OAAA,EAAS,YAAA,CAAa,GAAA;EAUG;EARzB,MAAA,EAAQ,YAAA,CAAa,GAAA;EAUf;EARN,SAAA,EAAW,YAAA,CAAa,GAAA;EAQD;EANvB,SAAA,EAAW,YAAA,CAAa,GAAA;EAUxB;EARA,YAAA,EAAc,YAAA,CAAa,GAAA;EAY3B;EAVA,UAAA,EAAY,YAAA,CAAa,GAAA;EAUM;EAR/B,IAAA,EAAM,YAAA,CAAa,GAAA,CAAI,UAAA;EAUvB;EARA,QAAA;EAQoC;EANpC,YAAA;EAMyD;EAJzD,KAAA;EAkCyB;EAhCzB,SAAA,GAAY,SAAA,UAAmB,SAAA,iBAA0B,QAAA;EAgC5B;EA9B7B,YAAA,GAAe,WAAA,UAAqB,YAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;iBA8BtB,WAAA,CAAA,GAAe,iBAAA"}
1
+ {"version":3,"file":"vue.d.mts","names":[],"sources":["../src/vue.ts"],"mappings":";;;;;;;;UA8EiB,iBAAA;EAYf;EAVA,OAAA,EAAS,YAAA,CAAa,GAAA;EAUG;EARzB,MAAA,EAAQ,YAAA,CAAa,GAAA;EAUf;EARN,SAAA,EAAW,YAAA,CAAa,GAAA;EAQD;EANvB,SAAA,EAAW,YAAA,CAAa,GAAA;EAUxB;EARA,YAAA,EAAc,YAAA,CAAa,GAAA;EAY3B;EAVA,UAAA,EAAY,YAAA,CAAa,GAAA;EAUM;EAR/B,IAAA,EAAM,YAAA,CAAa,GAAA,CAAI,UAAA;EAUvB;EARA,QAAA;EAQoC;EANpC,YAAA;EAMyD;EAJzD,KAAA;EAkCyB;EAhCzB,SAAA,GAAY,SAAA,UAAmB,SAAA,iBAA0B,QAAA;EAgC5B;EA9B7B,YAAA,GAAe,WAAA,UAAqB,YAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;iBA8BtB,WAAA,CAAA,GAAe,iBAAA"}
package/dist/vue.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"vue.mjs","names":[],"sources":["../src/vue.ts"],"sourcesContent":["/**\n * Commerce Engine Checkout - Vue Binding\n *\n * Vue composable for checkout integration with automatic reactivity.\n *\n * @example\n * ```vue\n * <script setup>\n * import { useCheckout, initCheckout } from \"@commercengine/checkout/vue\";\n * import { onMounted, onUnmounted } from \"vue\";\n *\n * // Initialize once at app root (App.vue or plugin)\n * onMounted(() => {\n * initCheckout({\n * storeId: \"store_xxx\",\n * apiKey: \"ak_xxx\",\n * });\n * });\n *\n * // Use anywhere\n * const { cartCount, openCart, isReady } = useCheckout();\n * </script>\n *\n * <template>\n * <button @click=\"openCart\" :disabled=\"!isReady\">\n * Cart ({{ cartCount }})\n * </button>\n * </template>\n * ```\n *\n * @packageDocumentation\n */\n\nimport type { UserInfo } from \"@commercengine/js\";\nimport { type DeepReadonly, onUnmounted, type Ref, readonly, ref } from \"vue\";\nimport { checkoutStore } from \"./store\";\n\n// Re-export types from @commercengine/js\nexport type {\n AddToCartItem,\n AuthLoginData,\n AuthLogoutData,\n AuthMode,\n AuthRefreshData,\n CartData,\n Channel,\n CheckoutConfig,\n CheckoutEventType,\n Environment,\n ErrorData,\n LoginMethod,\n OrderData,\n QuickBuyConfig,\n SessionMode,\n UserInfo,\n} from \"@commercengine/js\";\n// Re-export everything from vanilla for convenience\nexport {\n type CheckoutActions,\n type CheckoutState,\n type CheckoutStore,\n checkoutStore,\n destroyCheckout,\n getCheckout,\n initCheckout,\n subscribeToCheckout,\n} from \"./store\";\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/**\n * Return type from useCheckout composable\n */\nexport interface UseCheckoutReturn {\n /** Whether checkout is ready to use (reactive) */\n isReady: DeepReadonly<Ref<boolean>>;\n /** Whether checkout overlay is currently open (reactive) */\n isOpen: DeepReadonly<Ref<boolean>>;\n /** Number of items in cart (reactive) */\n cartCount: DeepReadonly<Ref<number>>;\n /** Cart subtotal amount (reactive) */\n cartTotal: DeepReadonly<Ref<number>>;\n /** Cart currency code (reactive) */\n cartCurrency: DeepReadonly<Ref<string>>;\n /** Whether user is logged in (reactive) */\n isLoggedIn: DeepReadonly<Ref<boolean>>;\n /** Current user info (reactive, null if not logged in) */\n user: DeepReadonly<Ref<UserInfo | null>>;\n /** Open the cart drawer */\n openCart: () => void;\n /** Open the checkout drawer directly */\n openCheckout: () => void;\n /** Close the checkout overlay */\n close: () => void;\n /** Add item to cart */\n addToCart: (productId: string, variantId: string | null, quantity?: number) => void;\n /** Update authentication tokens */\n updateTokens: (accessToken: string, refreshToken?: string) => void;\n}\n\n// =============================================================================\n// COMPOSABLE\n// =============================================================================\n\n/**\n * Vue composable for checkout integration\n *\n * Provides reactive access to checkout state and methods.\n * No provider required - works anywhere in your component tree.\n *\n * @returns Checkout state (reactive refs) and methods\n *\n * @example Basic usage\n * ```vue\n * <script setup>\n * import { useCheckout } from \"@commercengine/checkout/vue\";\n *\n * const { cartCount, openCart, isReady } = useCheckout();\n * </script>\n *\n * <template>\n * <button @click=\"openCart\" :disabled=\"!isReady\">\n * Cart ({{ cartCount }})\n * </button>\n * </template>\n * ```\n */\nexport function useCheckout(): UseCheckoutReturn {\n // Create reactive refs for state\n const initialState = checkoutStore.getState();\n\n const isReady = ref(initialState.isReady);\n const isOpen = ref(initialState.isOpen);\n const cartCount = ref(initialState.cartCount);\n const cartTotal = ref(initialState.cartTotal);\n const cartCurrency = ref(initialState.cartCurrency);\n const isLoggedIn = ref(initialState.isLoggedIn);\n const user = ref(initialState.user);\n\n // Subscribe to store changes and update refs\n const unsubscribe = checkoutStore.subscribe((state) => {\n isReady.value = state.isReady;\n isOpen.value = state.isOpen;\n cartCount.value = state.cartCount;\n cartTotal.value = state.cartTotal;\n cartCurrency.value = state.cartCurrency;\n isLoggedIn.value = state.isLoggedIn;\n user.value = state.user;\n });\n\n // Cleanup subscription on unmount\n onUnmounted(() => {\n unsubscribe();\n });\n\n return {\n // Reactive state (readonly to prevent direct mutation)\n isReady: readonly(isReady),\n isOpen: readonly(isOpen),\n cartCount: readonly(cartCount),\n cartTotal: readonly(cartTotal),\n cartCurrency: readonly(cartCurrency),\n isLoggedIn: readonly(isLoggedIn),\n user: readonly(user) as DeepReadonly<Ref<UserInfo | null>>,\n // Actions\n openCart: () => checkoutStore.getState().openCart(),\n openCheckout: () => checkoutStore.getState().openCheckout(),\n close: () => checkoutStore.getState().close(),\n addToCart: (productId, variantId, quantity) =>\n checkoutStore.getState().addToCart(productId, variantId, quantity),\n updateTokens: (accessToken, refreshToken) =>\n checkoutStore.getState().updateTokens(accessToken, refreshToken),\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAiIA,SAAgB,cAAiC;CAE/C,MAAM,eAAe,cAAc,UAAU;CAE7C,MAAM,UAAU,IAAI,aAAa,QAAQ;CACzC,MAAM,SAAS,IAAI,aAAa,OAAO;CACvC,MAAM,YAAY,IAAI,aAAa,UAAU;CAC7C,MAAM,YAAY,IAAI,aAAa,UAAU;CAC7C,MAAM,eAAe,IAAI,aAAa,aAAa;CACnD,MAAM,aAAa,IAAI,aAAa,WAAW;CAC/C,MAAM,OAAO,IAAI,aAAa,KAAK;CAGnC,MAAM,cAAc,cAAc,WAAW,UAAU;AACrD,UAAQ,QAAQ,MAAM;AACtB,SAAO,QAAQ,MAAM;AACrB,YAAU,QAAQ,MAAM;AACxB,YAAU,QAAQ,MAAM;AACxB,eAAa,QAAQ,MAAM;AAC3B,aAAW,QAAQ,MAAM;AACzB,OAAK,QAAQ,MAAM;GACnB;AAGF,mBAAkB;AAChB,eAAa;GACb;AAEF,QAAO;EAEL,SAAS,SAAS,QAAQ;EAC1B,QAAQ,SAAS,OAAO;EACxB,WAAW,SAAS,UAAU;EAC9B,WAAW,SAAS,UAAU;EAC9B,cAAc,SAAS,aAAa;EACpC,YAAY,SAAS,WAAW;EAChC,MAAM,SAAS,KAAK;EAEpB,gBAAgB,cAAc,UAAU,CAAC,UAAU;EACnD,oBAAoB,cAAc,UAAU,CAAC,cAAc;EAC3D,aAAa,cAAc,UAAU,CAAC,OAAO;EAC7C,YAAY,WAAW,WAAW,aAChC,cAAc,UAAU,CAAC,UAAU,WAAW,WAAW,SAAS;EACpE,eAAe,aAAa,iBAC1B,cAAc,UAAU,CAAC,aAAa,aAAa,aAAa;EACnE"}
1
+ {"version":3,"file":"vue.mjs","names":[],"sources":["../src/vue.ts"],"sourcesContent":["/**\n * Commerce Engine Checkout - Vue Binding\n *\n * Vue composable for checkout integration with automatic reactivity.\n *\n * @example\n * ```vue\n * <script setup>\n * import { useCheckout, initCheckout } from \"@commercengine/checkout/vue\";\n * import { onMounted, onUnmounted } from \"vue\";\n *\n * // Initialize once at app root (App.vue or plugin)\n * onMounted(() => {\n * initCheckout({\n * storeId: \"store_xxx\",\n * apiKey: \"ak_xxx\",\n * });\n * });\n *\n * // Use anywhere\n * const { cartCount, openCart, isReady } = useCheckout();\n * </script>\n *\n * <template>\n * <button @click=\"openCart\" :disabled=\"!isReady\">\n * Cart ({{ cartCount }})\n * </button>\n * </template>\n * ```\n *\n * @packageDocumentation\n */\n\nimport type { UserInfo } from \"@commercengine/js\";\nimport { type DeepReadonly, onUnmounted, type Ref, readonly, ref } from \"vue\";\nimport { checkoutStore } from \"./store\";\n\n// Re-export types from @commercengine/js\nexport type {\n AddToCartItem,\n AuthLoginData,\n AuthLogoutData,\n AuthMode,\n AuthRefreshData,\n CartData,\n Channel,\n CheckoutConfig,\n CheckoutEventType,\n CheckoutFeatures,\n DrawerDirection,\n DrawerDirectionConfig,\n Environment,\n ErrorData,\n LoginMethod,\n OrderData,\n QuickBuyConfig,\n SessionMode,\n UserInfo,\n} from \"@commercengine/js\";\n// Re-export everything from vanilla for convenience\nexport {\n type CheckoutActions,\n type CheckoutState,\n type CheckoutStore,\n checkoutStore,\n destroyCheckout,\n getCheckout,\n initCheckout,\n subscribeToCheckout,\n} from \"./store\";\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/**\n * Return type from useCheckout composable\n */\nexport interface UseCheckoutReturn {\n /** Whether checkout is ready to use (reactive) */\n isReady: DeepReadonly<Ref<boolean>>;\n /** Whether checkout overlay is currently open (reactive) */\n isOpen: DeepReadonly<Ref<boolean>>;\n /** Number of items in cart (reactive) */\n cartCount: DeepReadonly<Ref<number>>;\n /** Cart subtotal amount (reactive) */\n cartTotal: DeepReadonly<Ref<number>>;\n /** Cart currency code (reactive) */\n cartCurrency: DeepReadonly<Ref<string>>;\n /** Whether user is logged in (reactive) */\n isLoggedIn: DeepReadonly<Ref<boolean>>;\n /** Current user info (reactive, null if not logged in) */\n user: DeepReadonly<Ref<UserInfo | null>>;\n /** Open the cart drawer */\n openCart: () => void;\n /** Open the checkout drawer directly */\n openCheckout: () => void;\n /** Close the checkout overlay */\n close: () => void;\n /** Add item to cart */\n addToCart: (productId: string, variantId: string | null, quantity?: number) => void;\n /** Update authentication tokens */\n updateTokens: (accessToken: string, refreshToken?: string) => void;\n}\n\n// =============================================================================\n// COMPOSABLE\n// =============================================================================\n\n/**\n * Vue composable for checkout integration\n *\n * Provides reactive access to checkout state and methods.\n * No provider required - works anywhere in your component tree.\n *\n * @returns Checkout state (reactive refs) and methods\n *\n * @example Basic usage\n * ```vue\n * <script setup>\n * import { useCheckout } from \"@commercengine/checkout/vue\";\n *\n * const { cartCount, openCart, isReady } = useCheckout();\n * </script>\n *\n * <template>\n * <button @click=\"openCart\" :disabled=\"!isReady\">\n * Cart ({{ cartCount }})\n * </button>\n * </template>\n * ```\n */\nexport function useCheckout(): UseCheckoutReturn {\n // Create reactive refs for state\n const initialState = checkoutStore.getState();\n\n const isReady = ref(initialState.isReady);\n const isOpen = ref(initialState.isOpen);\n const cartCount = ref(initialState.cartCount);\n const cartTotal = ref(initialState.cartTotal);\n const cartCurrency = ref(initialState.cartCurrency);\n const isLoggedIn = ref(initialState.isLoggedIn);\n const user = ref(initialState.user);\n\n // Subscribe to store changes and update refs\n const unsubscribe = checkoutStore.subscribe((state) => {\n isReady.value = state.isReady;\n isOpen.value = state.isOpen;\n cartCount.value = state.cartCount;\n cartTotal.value = state.cartTotal;\n cartCurrency.value = state.cartCurrency;\n isLoggedIn.value = state.isLoggedIn;\n user.value = state.user;\n });\n\n // Cleanup subscription on unmount\n onUnmounted(() => {\n unsubscribe();\n });\n\n return {\n // Reactive state (readonly to prevent direct mutation)\n isReady: readonly(isReady),\n isOpen: readonly(isOpen),\n cartCount: readonly(cartCount),\n cartTotal: readonly(cartTotal),\n cartCurrency: readonly(cartCurrency),\n isLoggedIn: readonly(isLoggedIn),\n user: readonly(user) as DeepReadonly<Ref<UserInfo | null>>,\n // Actions\n openCart: () => checkoutStore.getState().openCart(),\n openCheckout: () => checkoutStore.getState().openCheckout(),\n close: () => checkoutStore.getState().close(),\n addToCart: (productId, variantId, quantity) =>\n checkoutStore.getState().addToCart(productId, variantId, quantity),\n updateTokens: (accessToken, refreshToken) =>\n checkoutStore.getState().updateTokens(accessToken, refreshToken),\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAoIA,SAAgB,cAAiC;CAE/C,MAAM,eAAe,cAAc,UAAU;CAE7C,MAAM,UAAU,IAAI,aAAa,QAAQ;CACzC,MAAM,SAAS,IAAI,aAAa,OAAO;CACvC,MAAM,YAAY,IAAI,aAAa,UAAU;CAC7C,MAAM,YAAY,IAAI,aAAa,UAAU;CAC7C,MAAM,eAAe,IAAI,aAAa,aAAa;CACnD,MAAM,aAAa,IAAI,aAAa,WAAW;CAC/C,MAAM,OAAO,IAAI,aAAa,KAAK;CAGnC,MAAM,cAAc,cAAc,WAAW,UAAU;AACrD,UAAQ,QAAQ,MAAM;AACtB,SAAO,QAAQ,MAAM;AACrB,YAAU,QAAQ,MAAM;AACxB,YAAU,QAAQ,MAAM;AACxB,eAAa,QAAQ,MAAM;AAC3B,aAAW,QAAQ,MAAM;AACzB,OAAK,QAAQ,MAAM;GACnB;AAGF,mBAAkB;AAChB,eAAa;GACb;AAEF,QAAO;EAEL,SAAS,SAAS,QAAQ;EAC1B,QAAQ,SAAS,OAAO;EACxB,WAAW,SAAS,UAAU;EAC9B,WAAW,SAAS,UAAU;EAC9B,cAAc,SAAS,aAAa;EACpC,YAAY,SAAS,WAAW;EAChC,MAAM,SAAS,KAAK;EAEpB,gBAAgB,cAAc,UAAU,CAAC,UAAU;EACnD,oBAAoB,cAAc,UAAU,CAAC,cAAc;EAC3D,aAAa,cAAc,UAAU,CAAC,OAAO;EAC7C,YAAY,WAAW,WAAW,aAChC,cAAc,UAAU,CAAC,UAAU,WAAW,WAAW,SAAS;EACpE,eAAe,aAAa,iBAC1B,cAAc,UAAU,CAAC,aAAa,aAAa,aAAa;EACnE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@commercengine/checkout",
3
- "version": "0.1.6",
3
+ "version": "0.2.0",
4
4
  "description": "Universal checkout SDK for Commerce Engine - works with React, Vue, Svelte, Solid, and vanilla JS",
5
5
  "type": "module",
6
6
  "module": "dist/index.mjs",
@@ -34,14 +34,14 @@
34
34
  "README.md"
35
35
  ],
36
36
  "dependencies": {
37
- "zustand": "^5.0.0",
38
- "@commercengine/js": "0.3.5"
37
+ "zustand": "^5.0.11",
38
+ "@commercengine/js": "0.4.0"
39
39
  },
40
40
  "peerDependencies": {
41
41
  "react": ">=18.0.0",
42
- "vue": ">=3.5.0",
42
+ "solid-js": ">=1.9.0",
43
43
  "svelte": ">=5.47.0",
44
- "solid-js": ">=1.9.0"
44
+ "vue": ">=3.5.0"
45
45
  },
46
46
  "peerDependenciesMeta": {
47
47
  "react": {
@@ -58,7 +58,7 @@
58
58
  }
59
59
  },
60
60
  "devDependencies": {
61
- "tsdown": "^0.20.0-beta.4",
61
+ "tsdown": "^0.20.3",
62
62
  "typescript": "^5.9.3"
63
63
  },
64
64
  "keywords": [