@zappie/theme-base 0.1.5 → 0.1.7

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/CHANGELOG.md CHANGED
@@ -1,5 +1,26 @@
1
1
  # @zappie/theme-base
2
2
 
3
+ ## 0.1.7
4
+
5
+ ### Patch Changes
6
+
7
+ - 86f1426: Checkout opens through `redirectToCheckout`, which refuses any URL that isn't Zappie's checkout.
8
+ - Updated dependencies [8ea70dc]
9
+ - Updated dependencies [ea37bcf]
10
+ - @zappie/sdk@0.2.0
11
+ - @zappie/foundations@0.1.11
12
+
13
+ ## 0.1.6
14
+
15
+ ### Patch Changes
16
+
17
+ - b31a689: Build the declaration files with tsup 9. Type-only exports are now written as `export type { ... }` and shared declaration chunks have new file names. Foundations part props name their omitted attributes `PartOwnedAttributes`, so their declarations no longer depend on build order. Every entry point exports the same names with the same types. The JavaScript and source maps are unchanged.
18
+ - Updated dependencies [1cbfebc]
19
+ - Updated dependencies [b31a689]
20
+ - @zappie/sdk@0.1.24
21
+ - @zappie/foundations@0.1.10
22
+ - @zappie/tokens@0.1.3
23
+
3
24
  ## 0.1.5
4
25
 
5
26
  ### Patch Changes
package/dist/address.d.ts CHANGED
@@ -29,4 +29,5 @@ declare function createSdkAddressLookup({ places, branchId, }: {
29
29
  branchId: string;
30
30
  }): AddressLookup;
31
31
 
32
- export { type AddressLookup, AddressLookupProvider, type AddressSuggestion, createSdkAddressLookup, useAddressLookup };
32
+ export { AddressLookupProvider, createSdkAddressLookup, useAddressLookup };
33
+ export type { AddressLookup, AddressSuggestion };
@@ -57,4 +57,5 @@ type CatalogueSlots = {
57
57
 
58
58
  declare function Catalogue({ initialMenu, resolveStrategy, themeClass, orderAction, menuNotice, revision, slots, }: CatalogueProps): react.JSX.Element;
59
59
 
60
- export { Catalogue, type CatalogueCategoryHeaderProps, type CatalogueCategoryTabProps, type CatalogueColumnCount, type CatalogueLayout, type CatalogueLayoutMode, type CatalogueMenuSlotProps, type CatalogueProps, type CatalogueSlots, type CatalogueTileProps, type CatalogueToolbarActionProps };
60
+ export { Catalogue };
61
+ export type { CatalogueCategoryHeaderProps, CatalogueCategoryTabProps, CatalogueColumnCount, CatalogueLayout, CatalogueLayoutMode, CatalogueMenuSlotProps, CatalogueProps, CatalogueSlots, CatalogueTileProps, CatalogueToolbarActionProps };
@@ -33,4 +33,5 @@ declare function createSdkCheckoutHandoff({ customer, checkout, branchId, return
33
33
  };
34
34
  }): CheckoutHandoff;
35
35
 
36
- export { type CheckoutHandoff, CheckoutHandoffProvider, type CheckoutPayload, createSdkCheckoutHandoff, useCheckoutHandoff };
36
+ export { CheckoutHandoffProvider, createSdkCheckoutHandoff, useCheckoutHandoff };
37
+ export type { CheckoutHandoff, CheckoutPayload };
package/dist/checkout.js CHANGED
@@ -5,6 +5,7 @@ import {
5
5
  CheckoutError,
6
6
  checkoutFulfilment as wireCheckoutFulfilment
7
7
  } from "@zappie/sdk/checkout";
8
+ import { redirectToCheckout } from "@zappie/sdk/redirect";
8
9
  import { currentSource } from "@zappie/sdk/visits";
9
10
  import {
10
11
  createContext,
@@ -120,7 +121,7 @@ function createSdkCheckoutHandoff({
120
121
  };
121
122
  try {
122
123
  const session = await checkout.open(request, attempt.key);
123
- location.assign(session.url);
124
+ redirectToCheckout(session.url);
124
125
  } catch (failure) {
125
126
  if (failure instanceof CheckoutError && failure.apiCode === "customer_required") {
126
127
  await handoff.signIn();
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/checkout.tsx"],
4
- "sourcesContent": ["\"use client\";\n\nimport type { CartModule } from \"@zappie/sdk\";\nimport {\n CheckoutError,\n checkoutFulfilment as wireCheckoutFulfilment,\n type CheckoutClient,\n type CheckoutRequest,\n} from \"@zappie/sdk/checkout\";\nimport type { CustomerClient, SessionCustomer } from \"@zappie/sdk/customer\";\nimport { currentSource } from \"@zappie/sdk/visits\";\nimport {\n createContext,\n useCallback,\n useContext,\n useMemo,\n useSyncExternalStore,\n type ReactNode,\n} from \"react\";\n\nexport type CheckoutPayload = ReturnType<CartModule[\"toCheckoutPayload\"]>;\nexport type CheckoutHandoff = {\n contactPhone?: boolean;\n customer: { name?: string; phoneLast4?: string } | null;\n signIn(): Promise<void> | void;\n pay(\n payload: CheckoutPayload,\n details?: { contactPhone?: string },\n ): Promise<void>;\n};\n\nconst subscriptions = new WeakMap<\n CheckoutHandoff,\n (listener: () => void) => () => void\n>();\nconst Context = createContext<CheckoutHandoff | null>(null);\nconst idle = () => () => {};\n\nexport function CheckoutHandoffProvider({\n handoff,\n children,\n}: {\n handoff: CheckoutHandoff;\n children: ReactNode;\n}) {\n const subscribe = useCallback(\n (listener: () => void) => (subscriptions.get(handoff) ?? idle)(listener),\n [handoff],\n );\n const read = useCallback(() => handoff.customer, [handoff]);\n const customer = useSyncExternalStore(subscribe, read, read);\n const value = useMemo<CheckoutHandoff>(\n () => ({\n ...(handoff.contactPhone !== undefined\n ? { contactPhone: handoff.contactPhone }\n : {}),\n customer,\n signIn: () => handoff.signIn(),\n pay: (payload, details) =>\n details ? handoff.pay(payload, details) : handoff.pay(payload),\n }),\n [customer, handoff],\n );\n return <Context.Provider value={value}>{children}</Context.Provider>;\n}\n\nexport function useCheckoutHandoff() {\n const handoff = useContext(Context);\n if (!handoff) {\n throw new Error(\"useCheckoutHandoff requires CheckoutHandoffProvider\");\n }\n return handoff;\n}\n\nfunction customerName(customer: SessionCustomer | null) {\n if (!customer) {\n return null;\n }\n const digits = customer.phone_masked?.replace(/\\D/g, \"\") ?? \"\";\n return {\n ...(customer.given_name ? { name: customer.given_name } : {}),\n ...(digits.length >= 4 ? { phoneLast4: digits.slice(-4) } : {}),\n };\n}\n\nfunction checkoutFulfilment(payload: CheckoutPayload) {\n const fulfilment = wireCheckoutFulfilment(payload.fulfilment);\n if (fulfilment.type === \"delivery\") {\n return { ...fulfilment, type: \"delivery\" } as const;\n }\n if (fulfilment.type === \"pickup\") {\n return { ...fulfilment, type: \"pickup\" } as const;\n }\n throw new Error(\"Dine-in checkout is unavailable\");\n}\n\nexport function createSdkCheckoutHandoff({\n customer,\n checkout,\n branchId,\n returnUrl,\n cancelUrl,\n attribution = currentSource,\n}: {\n customer: CustomerClient;\n checkout: CheckoutClient;\n branchId: string;\n returnUrl?: string;\n cancelUrl?: string;\n attribution?: () => { source: string; campaign: string };\n}): CheckoutHandoff {\n let source = customer.customer;\n let current = customerName(source);\n // One attempt per cart and phone: a retry reuses the key and the exact body,\n // because the API refuses a reused key whose body changed.\n let attempt:\n | {\n digest: string;\n key: string;\n returnUrl: string;\n cancelUrl: string;\n source: string;\n campaign: string;\n }\n | undefined;\n const readCustomer = () => {\n if (source !== customer.customer) {\n source = customer.customer;\n current = customerName(source);\n }\n return current;\n };\n const handoff: CheckoutHandoff = {\n contactPhone: true,\n get customer() {\n return readCustomer();\n },\n signIn() {\n customer.signIn();\n },\n async pay(payload, details) {\n const contactPhone =\n details?.contactPhone?.trim().replace(/\\s+/g, \"\") ?? \"\";\n const digest = JSON.stringify({ payload, contactPhone });\n if (attempt?.digest !== digest) {\n const visit = attribution();\n attempt = {\n digest,\n key: crypto.randomUUID(),\n returnUrl: returnUrl ?? `${location.origin}/checkout/return`,\n cancelUrl: cancelUrl ?? location.href,\n source: visit.source,\n campaign: visit.campaign,\n };\n }\n const request: CheckoutRequest = {\n branch_id: branchId,\n menu_version: payload.menu_version,\n lines: payload.lines,\n fulfilment: checkoutFulfilment(payload),\n ...(contactPhone ? { contact_phone: contactPhone } : {}),\n ...(payload.promo_code ? { promo_code: payload.promo_code } : {}),\n ...(attempt.source ? { source: attempt.source } : {}),\n ...(attempt.campaign ? { campaign: attempt.campaign } : {}),\n return_url: attempt.returnUrl,\n cancel_url: attempt.cancelUrl,\n };\n try {\n const session = await checkout.open(request, attempt.key);\n location.assign(session.url);\n } catch (failure) {\n if (\n failure instanceof CheckoutError &&\n failure.apiCode === \"customer_required\"\n ) {\n await handoff.signIn();\n return;\n }\n throw failure;\n }\n },\n };\n subscriptions.set(handoff, (listener) => {\n const unsubscribe = customer.onChange((_state, next) => {\n source = next;\n current = customerName(next);\n listener();\n });\n // Without a CustomerProvider nothing else asks who is signed in.\n if (customer.state === \"unknown\") {\n void customer.session().catch(() => undefined);\n }\n return unsubscribe;\n });\n return handoff;\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["\"use client\";\n\nimport type { CartModule } from \"@zappie/sdk\";\nimport {\n CheckoutError,\n checkoutFulfilment as wireCheckoutFulfilment,\n type CheckoutClient,\n type CheckoutRequest,\n} from \"@zappie/sdk/checkout\";\nimport type { CustomerClient, SessionCustomer } from \"@zappie/sdk/customer\";\nimport { redirectToCheckout } from \"@zappie/sdk/redirect\";\nimport { currentSource } from \"@zappie/sdk/visits\";\nimport {\n createContext,\n useCallback,\n useContext,\n useMemo,\n useSyncExternalStore,\n type ReactNode,\n} from \"react\";\n\nexport type CheckoutPayload = ReturnType<CartModule[\"toCheckoutPayload\"]>;\nexport type CheckoutHandoff = {\n contactPhone?: boolean;\n customer: { name?: string; phoneLast4?: string } | null;\n signIn(): Promise<void> | void;\n pay(\n payload: CheckoutPayload,\n details?: { contactPhone?: string },\n ): Promise<void>;\n};\n\nconst subscriptions = new WeakMap<\n CheckoutHandoff,\n (listener: () => void) => () => void\n>();\nconst Context = createContext<CheckoutHandoff | null>(null);\nconst idle = () => () => {};\n\nexport function CheckoutHandoffProvider({\n handoff,\n children,\n}: {\n handoff: CheckoutHandoff;\n children: ReactNode;\n}) {\n const subscribe = useCallback(\n (listener: () => void) => (subscriptions.get(handoff) ?? idle)(listener),\n [handoff],\n );\n const read = useCallback(() => handoff.customer, [handoff]);\n const customer = useSyncExternalStore(subscribe, read, read);\n const value = useMemo<CheckoutHandoff>(\n () => ({\n ...(handoff.contactPhone !== undefined\n ? { contactPhone: handoff.contactPhone }\n : {}),\n customer,\n signIn: () => handoff.signIn(),\n pay: (payload, details) =>\n details ? handoff.pay(payload, details) : handoff.pay(payload),\n }),\n [customer, handoff],\n );\n return <Context.Provider value={value}>{children}</Context.Provider>;\n}\n\nexport function useCheckoutHandoff() {\n const handoff = useContext(Context);\n if (!handoff) {\n throw new Error(\"useCheckoutHandoff requires CheckoutHandoffProvider\");\n }\n return handoff;\n}\n\nfunction customerName(customer: SessionCustomer | null) {\n if (!customer) {\n return null;\n }\n const digits = customer.phone_masked?.replace(/\\D/g, \"\") ?? \"\";\n return {\n ...(customer.given_name ? { name: customer.given_name } : {}),\n ...(digits.length >= 4 ? { phoneLast4: digits.slice(-4) } : {}),\n };\n}\n\nfunction checkoutFulfilment(payload: CheckoutPayload) {\n const fulfilment = wireCheckoutFulfilment(payload.fulfilment);\n if (fulfilment.type === \"delivery\") {\n return { ...fulfilment, type: \"delivery\" } as const;\n }\n if (fulfilment.type === \"pickup\") {\n return { ...fulfilment, type: \"pickup\" } as const;\n }\n throw new Error(\"Dine-in checkout is unavailable\");\n}\n\nexport function createSdkCheckoutHandoff({\n customer,\n checkout,\n branchId,\n returnUrl,\n cancelUrl,\n attribution = currentSource,\n}: {\n customer: CustomerClient;\n checkout: CheckoutClient;\n branchId: string;\n returnUrl?: string;\n cancelUrl?: string;\n attribution?: () => { source: string; campaign: string };\n}): CheckoutHandoff {\n let source = customer.customer;\n let current = customerName(source);\n // One attempt per cart and phone: a retry reuses the key and the exact body,\n // because the API refuses a reused key whose body changed.\n let attempt:\n | {\n digest: string;\n key: string;\n returnUrl: string;\n cancelUrl: string;\n source: string;\n campaign: string;\n }\n | undefined;\n const readCustomer = () => {\n if (source !== customer.customer) {\n source = customer.customer;\n current = customerName(source);\n }\n return current;\n };\n const handoff: CheckoutHandoff = {\n contactPhone: true,\n get customer() {\n return readCustomer();\n },\n signIn() {\n customer.signIn();\n },\n async pay(payload, details) {\n const contactPhone =\n details?.contactPhone?.trim().replace(/\\s+/g, \"\") ?? \"\";\n const digest = JSON.stringify({ payload, contactPhone });\n if (attempt?.digest !== digest) {\n const visit = attribution();\n attempt = {\n digest,\n key: crypto.randomUUID(),\n returnUrl: returnUrl ?? `${location.origin}/checkout/return`,\n cancelUrl: cancelUrl ?? location.href,\n source: visit.source,\n campaign: visit.campaign,\n };\n }\n const request: CheckoutRequest = {\n branch_id: branchId,\n menu_version: payload.menu_version,\n lines: payload.lines,\n fulfilment: checkoutFulfilment(payload),\n ...(contactPhone ? { contact_phone: contactPhone } : {}),\n ...(payload.promo_code ? { promo_code: payload.promo_code } : {}),\n ...(attempt.source ? { source: attempt.source } : {}),\n ...(attempt.campaign ? { campaign: attempt.campaign } : {}),\n return_url: attempt.returnUrl,\n cancel_url: attempt.cancelUrl,\n };\n try {\n const session = await checkout.open(request, attempt.key);\n redirectToCheckout(session.url);\n } catch (failure) {\n if (\n failure instanceof CheckoutError &&\n failure.apiCode === \"customer_required\"\n ) {\n await handoff.signIn();\n return;\n }\n throw failure;\n }\n },\n };\n subscriptions.set(handoff, (listener) => {\n const unsubscribe = customer.onChange((_state, next) => {\n source = next;\n current = customerName(next);\n listener();\n });\n // Without a CustomerProvider nothing else asks who is signed in.\n if (customer.state === \"unknown\") {\n void customer.session().catch(() => undefined);\n }\n return unsubscribe;\n });\n return handoff;\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -97,4 +97,5 @@ declare function BaseHostBridgeProvider({ bridge, children, }: {
97
97
  }): react.JSX.Element;
98
98
  declare function useBaseHostBridge(): BaseHostBridge;
99
99
 
100
- export { type BaseHostBridge, BaseHostBridgeProvider, type CustomerDetailsValues, type HostAppliedReward, type HostPromo, type HostReward, useBaseHostBridge };
100
+ export { BaseHostBridgeProvider, useBaseHostBridge };
101
+ export type { BaseHostBridge, CustomerDetailsValues, HostAppliedReward, HostPromo, HostReward };
package/dist/item.d.ts CHANGED
@@ -17,4 +17,5 @@ type ItemDetailProps = {
17
17
  declare function ItemDetail(props: ItemDetailProps): react.JSX.Element;
18
18
  declare function ItemContent({ item, menuId, scope, href, navigation, }: ItemDetailProps): react.JSX.Element;
19
19
 
20
- export { ItemContent, ItemDetail, type ItemDetailProps };
20
+ export { ItemContent, ItemDetail };
21
+ export type { ItemDetailProps };
@@ -61,4 +61,5 @@ declare function CatalogueNavigationProvider({ navigation, children, }: {
61
61
  }): react.JSX.Element;
62
62
  declare function useCatalogueNavigation(): CatalogueNavigation;
63
63
 
64
- export { type CatalogueFocusTarget, type CatalogueLocation, type CatalogueNavigation, CatalogueNavigationProvider, type CatalogueNavigationTarget, type UrlNavigationOptions, createUrlNavigation, useCatalogueNavigation };
64
+ export { CatalogueNavigationProvider, createUrlNavigation, useCatalogueNavigation };
65
+ export type { CatalogueFocusTarget, CatalogueLocation, CatalogueNavigation, CatalogueNavigationTarget, UrlNavigationOptions };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zappie/theme-base",
3
- "version": "0.1.5",
3
+ "version": "0.1.7",
4
4
  "description": "The base storefront theme Zappie's own storefront app renders, built only from Zappie's public packages.",
5
5
  "type": "module",
6
6
  "sideEffects": [
@@ -54,9 +54,9 @@
54
54
  "CHANGELOG.md"
55
55
  ],
56
56
  "dependencies": {
57
- "@zappie/foundations": "^0.1.8",
58
- "@zappie/sdk": "^0.1.13",
59
- "@zappie/tokens": "^0.1.2"
57
+ "@zappie/foundations": "^0.1.11",
58
+ "@zappie/sdk": "^0.2.0",
59
+ "@zappie/tokens": "^0.1.3"
60
60
  },
61
61
  "peerDependencies": {
62
62
  "react": "^19.2.0"