@sazito/checkout 0.2.0 → 0.3.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 +16 -0
- package/dist/chunks/{labels-DJ_RnkCQ.cjs → labels-3zH04p3y.cjs} +89 -44
- package/dist/chunks/labels-3zH04p3y.cjs.map +1 -0
- package/dist/chunks/{labels-ByA_yGKl.js → labels-BdxqgReM.js} +89 -44
- package/dist/chunks/labels-BdxqgReM.js.map +1 -0
- package/dist/chunks/{use-checkout-gAjnCzae.js → use-checkout-Bh4tXxFJ.js} +2 -2
- package/dist/chunks/{use-checkout-gAjnCzae.js.map → use-checkout-Bh4tXxFJ.js.map} +1 -1
- package/dist/chunks/{use-checkout-CQBSONj1.cjs → use-checkout-DGP2xazd.cjs} +2 -2
- package/dist/chunks/{use-checkout-CQBSONj1.cjs.map → use-checkout-DGP2xazd.cjs.map} +1 -1
- package/dist/core/index.cjs +1 -1
- package/dist/core/index.d.cts +1 -0
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.js +1 -1
- package/dist/next/index.cjs +25 -12
- package/dist/next/index.cjs.map +1 -1
- package/dist/next/index.d.cts +26 -8
- package/dist/next/index.d.ts +26 -8
- package/dist/next/index.js +26 -13
- package/dist/next/index.js.map +1 -1
- package/dist/react/index.cjs +2 -2
- package/dist/react/index.js +2 -2
- package/dist/styles.css +41 -125
- package/package.json +1 -1
- package/dist/chunks/labels-ByA_yGKl.js.map +0 -1
- package/dist/chunks/labels-DJ_RnkCQ.cjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-checkout-
|
|
1
|
+
{"version":3,"file":"use-checkout-DGP2xazd.cjs","sources":["../../src/react/context.ts","../../src/react/client-context.tsx","../../src/react/provider.tsx","../../src/react/use-checkout.ts"],"sourcesContent":["'use client';\n\nimport { createContext, useContext } from 'react';\nimport type { CheckoutEngine } from '../core';\n\nexport const CheckoutEngineContext = createContext<CheckoutEngine | null>(null);\n\nexport function useCheckoutEngine(): CheckoutEngine {\n const engine = useContext(CheckoutEngineContext);\n if (!engine) {\n throw new Error('useCheckout must be used within <CheckoutProvider>.');\n }\n return engine;\n}\n","'use client';\n\nimport { createContext, useContext, type ReactNode } from 'react';\n\ninterface SazitoContextValue {\n client: unknown;\n}\n\nconst SazitoClientContext = createContext<SazitoContextValue | null>(null);\n\nexport interface SazitoProviderProps {\n client: unknown;\n children: ReactNode;\n}\n\nexport function SazitoProvider({ client, children }: SazitoProviderProps) {\n return (\n <SazitoClientContext.Provider value={{ client }}>\n {children}\n </SazitoClientContext.Provider>\n );\n}\n\nexport function useSazitoClient(): unknown {\n return useContext(SazitoClientContext)?.client;\n}\n","'use client';\n\nimport { useEffect, useMemo, type ReactNode } from 'react';\nimport {\n createCheckoutEngine,\n createBrowserEffectExecutor,\n type CheckoutConfig,\n type CheckoutCredentials,\n type CheckoutEngine\n} from '../core';\nimport { CheckoutEngineContext } from './context';\nimport { useSazitoClient } from './client-context';\n\nexport interface CheckoutProviderProps {\n /** Override the SazitoProvider client for this checkout instance only. */\n client?: unknown;\n credentials?: CheckoutCredentials;\n config?: CheckoutConfig;\n autoStart?: boolean;\n children: ReactNode;\n}\n\nexport function CheckoutProvider({\n client: clientProp,\n credentials,\n config,\n autoStart = true,\n children\n}: CheckoutProviderProps) {\n const contextClient = useSazitoClient();\n const client = clientProp ?? contextClient;\n\n const cartIdentifier = credentials?.cart?.identifier;\n const invoiceId = credentials?.invoice?.id;\n const invoiceIdentifier = credentials?.invoice?.identifier;\n const engine = useMemo<CheckoutEngine>(() => {\n const nextEngine = createCheckoutEngine({ client, credentials, config });\n nextEngine.setEffectExecutor(createBrowserEffectExecutor(config));\n return nextEngine;\n // Recreate only when the SDK/session changes. Config-only updates are applied below.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [client, cartIdentifier, invoiceId, invoiceIdentifier]);\n\n useEffect(() => {\n engine.setEffectExecutor(createBrowserEffectExecutor(config));\n }, [engine, config]);\n\n useEffect(() => {\n if (autoStart) {\n void engine.actions.start();\n }\n return () => engine.destroy();\n }, [engine, autoStart]);\n\n const value = useMemo(() => engine, [engine]);\n\n return <CheckoutEngineContext.Provider value={value}>{children}</CheckoutEngineContext.Provider>;\n}\n","'use client';\n\nimport { useSyncExternalStore } from 'react';\nimport {\n formatMoney,\n formatPrice,\n selectDigitalItems,\n selectSummary,\n strings,\n type CheckoutActions,\n type CheckoutState,\n type CheckoutSummary,\n type InvoiceItem,\n type Strings\n} from '../core';\nimport { useCheckoutEngine } from './context';\n\nexport interface UseCheckout {\n state: CheckoutState;\n actions: CheckoutActions;\n /** Localized UI strings. */\n t: Strings;\n /** Format an amount with the currency label for the active locale. */\n money(value: number): string;\n /** Like `money`, but renders 0 as \"Free\". */\n price(value: number): string;\n summary: CheckoutSummary;\n digitalItems: InvoiceItem[];\n}\n\nexport function useCheckout(): UseCheckout {\n const engine = useCheckoutEngine();\n const state = useSyncExternalStore(\n engine.subscribe,\n engine.getState,\n engine.getState\n );\n\n return {\n state,\n actions: engine.actions,\n t: strings(state.locale),\n money: (value: number) => formatMoney(value, state.locale),\n price: (value: number) => formatPrice(value, state.locale),\n summary: selectSummary(state.invoice),\n digitalItems: selectDigitalItems(state.invoice, state.shippingGroups, state.applicable)\n };\n}\n"],"names":["createContext","useContext","_jsx","useMemo","createCheckoutEngine","createBrowserEffectExecutor","useEffect","useSyncExternalStore","strings","formatMoney","formatPrice","selectSummary","selectDigitalItems"],"mappings":"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"}
|
package/dist/core/index.cjs
CHANGED
package/dist/core/index.d.cts
CHANGED
|
@@ -258,6 +258,7 @@ interface Store<T> {
|
|
|
258
258
|
getState(): T;
|
|
259
259
|
setState(partial: Partial<T> | ((prev: T) => Partial<T>)): void;
|
|
260
260
|
subscribe(listener: () => void): () => void;
|
|
261
|
+
batch<R>(callback: () => R): R;
|
|
261
262
|
}
|
|
262
263
|
declare function createStore<T extends object>(initialState: T): Store<T>;
|
|
263
264
|
|
package/dist/core/index.d.ts
CHANGED
|
@@ -258,6 +258,7 @@ interface Store<T> {
|
|
|
258
258
|
getState(): T;
|
|
259
259
|
setState(partial: Partial<T> | ((prev: T) => Partial<T>)): void;
|
|
260
260
|
subscribe(listener: () => void): () => void;
|
|
261
|
+
batch<R>(callback: () => R): R;
|
|
261
262
|
}
|
|
262
263
|
declare function createStore<T extends object>(initialState: T): Store<T>;
|
|
263
264
|
|
package/dist/core/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { a as addressFormFromInvoice, b as buildShippingAssignments, c as classifyAppliedDiscount, d as createBrowserEffectExecutor, e as createCheckoutEngine, f as createSdkBinding, g as createStore, h as defaultCurrencyLabel, i as deriveShippingGroups, j as emptyAddressForm, k as formatMoney, l as formatNumber, m as formatPercent, n as formatPrice, o as fromSdkError, p as isAddressComplete, q as isAddressDirty, r as isDigitalServiceGroup, s as isShippingComplete, t as isValidIranianMobile, u as isValidIranianPhone, v as makeError, w as makeEvent, x as messageForCode, y as noopEffectExecutor, z as normalizeIranianPhone, A as paymentMethodInfo, B as paymentMethodLabel, C as selectDigitalItems, D as selectSummary, E as sortCartItemsNewestFirst, F as strings, G as toEnglishDigits, H as toPersianDigits } from '../chunks/labels-
|
|
1
|
+
export { a as addressFormFromInvoice, b as buildShippingAssignments, c as classifyAppliedDiscount, d as createBrowserEffectExecutor, e as createCheckoutEngine, f as createSdkBinding, g as createStore, h as defaultCurrencyLabel, i as deriveShippingGroups, j as emptyAddressForm, k as formatMoney, l as formatNumber, m as formatPercent, n as formatPrice, o as fromSdkError, p as isAddressComplete, q as isAddressDirty, r as isDigitalServiceGroup, s as isShippingComplete, t as isValidIranianMobile, u as isValidIranianPhone, v as makeError, w as makeEvent, x as messageForCode, y as noopEffectExecutor, z as normalizeIranianPhone, A as paymentMethodInfo, B as paymentMethodLabel, C as selectDigitalItems, D as selectSummary, E as sortCartItemsNewestFirst, F as strings, G as toEnglishDigits, H as toPersianDigits } from '../chunks/labels-BdxqgReM.js';
|
|
2
2
|
import '@sazito/client-sdk';
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
package/dist/next/index.cjs
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
|
|
4
4
|
var jsxRuntime = require('react/jsx-runtime');
|
|
5
5
|
var react = require('react');
|
|
6
|
-
var useCheckout = require('../chunks/use-checkout-
|
|
7
|
-
var labels = require('../chunks/labels-
|
|
6
|
+
var useCheckout = require('../chunks/use-checkout-DGP2xazd.cjs');
|
|
7
|
+
var labels = require('../chunks/labels-3zH04p3y.cjs');
|
|
8
8
|
require('@sazito/client-sdk');
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -186,17 +186,29 @@ function attrHexColor(value) {
|
|
|
186
186
|
}
|
|
187
187
|
return toHexColor(value);
|
|
188
188
|
}
|
|
189
|
-
function CartStep({ continueShoppingUrl, renderEmpty, }) {
|
|
189
|
+
function CartStep({ continueShoppingUrl, emptyCart, renderEmpty, }) {
|
|
190
190
|
const { state, actions, money, t } = useCheckout.useCheckout();
|
|
191
191
|
const cart = state.cart;
|
|
192
192
|
const busy = state.flags.updatingCart;
|
|
193
193
|
const newestCartItems = react.useMemo(() => labels.sortCartItemsNewestFirst(cart?.items ?? []), [cart?.items]);
|
|
194
194
|
const invoiceItemsByVariant = new Map((state.invoice?.items ?? []).map((item) => [item.productVariantId, item]));
|
|
195
195
|
if (!cart || cart.items.length === 0) {
|
|
196
|
+
const title = emptyCart?.title ?? t.cartEmpty;
|
|
197
|
+
const description = emptyCart?.description ?? t.cartEmptyHint;
|
|
198
|
+
const actionLabel = emptyCart?.actionLabel ?? t.continueShopping;
|
|
199
|
+
const actionUrl = emptyCart?.actionUrl ?? continueShoppingUrl;
|
|
200
|
+
const visibleActionUrl = emptyCart?.hideAction ? undefined : actionUrl;
|
|
201
|
+
const icon = emptyCart?.icon ?? jsxRuntime.jsx(CartIcon, {});
|
|
196
202
|
if (renderEmpty) {
|
|
197
|
-
return renderEmpty({
|
|
203
|
+
return renderEmpty({
|
|
204
|
+
continueShoppingUrl: visibleActionUrl,
|
|
205
|
+
title,
|
|
206
|
+
description,
|
|
207
|
+
actionLabel,
|
|
208
|
+
icon,
|
|
209
|
+
});
|
|
198
210
|
}
|
|
199
|
-
return (jsxRuntime.jsx("section", { className: "szc-empty", role: "status", "aria-live": "polite", children: jsxRuntime.jsxs("div", { className: "szc-empty__card", children: [jsxRuntime.jsx("span", { className: "szc-empty__badge",
|
|
211
|
+
return (jsxRuntime.jsx("section", { className: "szc-empty", role: "status", "aria-live": "polite", children: jsxRuntime.jsxs("div", { className: "szc-empty__card", children: [jsxRuntime.jsx("span", { className: "szc-empty__badge", "aria-hidden": "true", children: icon }), jsxRuntime.jsxs("div", { className: "szc-empty__copy", children: [jsxRuntime.jsx("h2", { className: "szc-empty__title", children: title }), jsxRuntime.jsx("p", { className: "szc-empty__hint", children: description })] }), visibleActionUrl ? (jsxRuntime.jsx(Button, { className: "szc-empty__cta", variant: "primary", asChild: true, children: jsxRuntime.jsx("a", { href: visibleActionUrl, children: actionLabel }) })) : null] }) }));
|
|
200
212
|
}
|
|
201
213
|
return (jsxRuntime.jsx("section", { className: "szc-step-panel", children: jsxRuntime.jsx("ul", { className: "szc-cart-list", children: newestCartItems.map((item) => {
|
|
202
214
|
const max = item.product.maxOrderQuantity;
|
|
@@ -756,15 +768,16 @@ function themeVars(theme) {
|
|
|
756
768
|
vars['--szc-font'] = theme.fontFamily;
|
|
757
769
|
return vars;
|
|
758
770
|
}
|
|
759
|
-
function
|
|
760
|
-
return (jsxRuntime.jsxs("div", { className: "szc-
|
|
771
|
+
function CheckoutLoading({ label }) {
|
|
772
|
+
return (jsxRuntime.jsxs("div", { className: "szc-checkout-loading", role: "status", "aria-live": "polite", children: [jsxRuntime.jsx(Spinner, { className: "szc-checkout-loading__spinner" }), jsxRuntime.jsx("span", { children: label })] }));
|
|
761
773
|
}
|
|
762
|
-
function SazitoCheckout({ theme, continueShoppingUrl, className, renderNextButton, renderBackButton, renderEmptyCart, }) {
|
|
774
|
+
function SazitoCheckout({ theme, continueShoppingUrl, className, renderNextButton, renderBackButton, renderEmptyCart, emptyCart, }) {
|
|
763
775
|
const { state, actions, t, summary, money } = useCheckout.useCheckout();
|
|
764
776
|
const { step, direction, flags, error } = state;
|
|
765
777
|
const isResult = step === 'result';
|
|
766
778
|
const bootstrapping = step === 'cart' && !error && (!state.cart || !state.invoice || flags.bootstrapping);
|
|
767
|
-
const
|
|
779
|
+
const emptyCartError = error?.code === 'no_cart';
|
|
780
|
+
const fatal = error && !state.cart && step === 'cart' && !emptyCartError;
|
|
768
781
|
const cartEmpty = !state.cart || state.cart.items.length === 0;
|
|
769
782
|
const footerVisible = (step === 'cart' && !cartEmpty) || step === 'shipping' || step === 'payment';
|
|
770
783
|
const nextBusy = state.status === 'working' ||
|
|
@@ -832,13 +845,13 @@ function SazitoCheckout({ theme, continueShoppingUrl, className, renderNextButto
|
|
|
832
845
|
? CardIcon
|
|
833
846
|
: ClipboardIcon;
|
|
834
847
|
const mobileHead = (jsxRuntime.jsxs("div", { className: "szc-mobile-head", children: [footerVisible && backVisible ? (jsxRuntime.jsx("button", { type: "button", className: "szc-mobile-head__back", "aria-label": t.back, onClick: backOnClick, children: jsxRuntime.jsx("svg", { className: "szc-back-arrow", viewBox: "0 0 16 16", width: "18", height: "18", fill: "none", "aria-hidden": "true", children: jsxRuntime.jsx("path", { d: "M9.5 3.5 5 8l4.5 4.5", stroke: "currentColor", strokeWidth: "1.8", strokeLinecap: "round", strokeLinejoin: "round" }) }) })) : (jsxRuntime.jsx("span", {})), jsxRuntime.jsxs("span", { className: "szc-mobile-head__title", children: [jsxRuntime.jsx("span", { className: "szc-mobile-head__dot", children: jsxRuntime.jsx(HeadIcon, {}) }), headTitle] }), flowIndex >= 0 ? (jsxRuntime.jsx("span", { className: "szc-mobile-head__count", children: t.stepOf(labels.formatNumber(flowIndex + 1, state.locale), labels.formatNumber(flowSteps.length, state.locale)) })) : (jsxRuntime.jsx("span", {}))] }));
|
|
835
|
-
return (jsxRuntime.jsxs("div", { className: `szc-root${className ? ` ${className}` : ''}`, dir: direction, style: themeVars(theme), children: [mobileHead, jsxRuntime.jsx(Stepper, {}), bootstrapping ? (jsxRuntime.jsx(
|
|
848
|
+
return (jsxRuntime.jsxs("div", { className: `szc-root${className ? ` ${className}` : ''}`, dir: direction, style: themeVars(theme), children: [mobileHead, jsxRuntime.jsx(Stepper, {}), bootstrapping ? (jsxRuntime.jsx(CheckoutLoading, { label: t.loading })) : fatal ? (jsxRuntime.jsx(ErrorBanner, { message: error.message })) : isResult ? (jsxRuntime.jsx("div", { className: "szc-result-wrap", children: jsxRuntime.jsx(ResultStep, { continueShoppingUrl: continueShoppingUrl }) })) : (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsxs("div", { className: `szc-layout${cartEmpty ? ' szc-layout--full' : ''}`, children: [jsxRuntime.jsxs("main", { className: "szc-main", children: [error && !emptyCartError ? jsxRuntime.jsx(ErrorBanner, { message: error.message }) : null, step === 'cart' ? (jsxRuntime.jsx(CartStep, { continueShoppingUrl: continueShoppingUrl, emptyCart: emptyCart, renderEmpty: renderEmptyCart })) : null, step === 'shipping' ? jsxRuntime.jsx(ShippingStep, {}) : null, step === 'payment' ? jsxRuntime.jsx(PaymentStep, {}) : null, actionsVisible && backButtonNode ? (jsxRuntime.jsx("div", { className: "szc-back-row", children: backButtonNode })) : null] }), !cartEmpty ? (jsxRuntime.jsxs("div", { className: "szc-side", children: [jsxRuntime.jsx(OrderSummary, {}), actionsVisible ? jsxRuntime.jsx("div", { className: "szc-side__cta", children: nextButtonNode }) : null] })) : null] }) })), actionsVisible ? (jsxRuntime.jsx("div", { className: "szc-footer-bar", children: jsxRuntime.jsxs("div", { className: "szc-footer", children: [jsxRuntime.jsxs("div", { className: "szc-footer__total", children: [jsxRuntime.jsx("span", { className: "szc-footer__total-label", children: t.total }), jsxRuntime.jsx("span", { className: "szc-footer__total-value", children: money(summary.total) })] }), jsxRuntime.jsx("div", { className: "szc-footer__actions", children: nextButtonNode })] }) })) : null] }));
|
|
836
849
|
}
|
|
837
850
|
|
|
838
|
-
function SazitoCheckoutPage({ credentials, config, paymentReturnParams, className, renderNextButton, renderBackButton, renderEmptyCart, }) {
|
|
851
|
+
function SazitoCheckoutPage({ credentials, config, paymentReturnParams, className, renderNextButton, renderBackButton, renderEmptyCart, emptyCart, }) {
|
|
839
852
|
const isReturn = paymentReturnParams != null;
|
|
840
853
|
const client = useCheckout.useSazitoClient();
|
|
841
|
-
return (jsxRuntime.jsxs(useCheckout.CheckoutProvider, { client: client, credentials: credentials, config: config, autoStart: !isReturn, children: [isReturn ? jsxRuntime.jsx(ResolveReturn, { params: paymentReturnParams }) : null, jsxRuntime.jsx(SazitoCheckout, { theme: config?.theme, continueShoppingUrl: config?.continueShoppingUrl, className: className, renderNextButton: renderNextButton, renderBackButton: renderBackButton, renderEmptyCart: renderEmptyCart })] }));
|
|
854
|
+
return (jsxRuntime.jsxs(useCheckout.CheckoutProvider, { client: client, credentials: credentials, config: config, autoStart: !isReturn, children: [isReturn ? jsxRuntime.jsx(ResolveReturn, { params: paymentReturnParams }) : null, jsxRuntime.jsx(SazitoCheckout, { theme: config?.theme, continueShoppingUrl: config?.continueShoppingUrl, className: className, renderNextButton: renderNextButton, renderBackButton: renderBackButton, renderEmptyCart: renderEmptyCart, emptyCart: emptyCart })] }));
|
|
842
855
|
}
|
|
843
856
|
function ResolveReturn({ params }) {
|
|
844
857
|
const { actions } = useCheckout.useCheckout();
|