import { NavigateToCheckoutParams, NavigateToOrderParams, NavigateToProductParams, NavigateToShopParams, } from '@shopify/shop-minis-platform/actions' import {useHandleAction} from '../../internal/useHandleAction' import {useShopActions} from '../../internal/useShopActions' export interface UseShopNavigationReturns { /** * Navigates to a product. */ navigateToProduct: (params: NavigateToProductParams) => Promise /** * Navigates to a shop. */ navigateToShop: (params: NavigateToShopParams) => Promise /** * Navigates to an order. */ navigateToOrder: (params: NavigateToOrderParams) => Promise /** * Navigates to a checkout. */ navigateToCheckout: (params: NavigateToCheckoutParams) => Promise /** * Navigates to the cart screen. */ navigateToCart: () => Promise } export const useShopNavigation = (): UseShopNavigationReturns => { const { navigateToProduct, navigateToShop, navigateToOrder, navigateToCheckout, navigateToCart, } = useShopActions() return { navigateToProduct: useHandleAction(navigateToProduct), navigateToShop: useHandleAction(navigateToShop), navigateToOrder: useHandleAction(navigateToOrder), navigateToCheckout: useHandleAction(navigateToCheckout), navigateToCart: useHandleAction(navigateToCart), } } /** * Navigates to native Shop app screens (product details, shop profiles, orders, checkout, cart) while maintaining the Mini in the navigation stack. The Mini stays loaded in memory, so back navigation returns to your Mini. Use this when directing users to Shop-managed screens. It preserves native navigation animations, back button behavior, and keeps your Mini's session alive. * @publicDocs */ export type UseShopNavigationGeneratedType = () => UseShopNavigationReturns