state/campaign/campaign.state.tstypescript
import { create } from 'zustand';
import type { CampaignStore } from './campaign.types';
import {
createCampaignItemsSlice,
initialCampaignState,
} from './items.slice';
import { createCampaignVariantsSlice } from './variants.slice';
import { createCampaignApiSlice } from './api.slice';
const campaignStoreInstance = create<CampaignStore>()((set, get, store) => ({
...initialCampaignState,
...createCampaignItemsSlice(set, get, store),
...createCampaignVariantsSlice(set, get, store),
...createCampaignApiSlice(set, get, store),
}));
export const campaignStore = campaignStoreInstance;
/**
* The campaign store. The loaded {@link Campaign} lives on its
* **`.data`** field
* (not `.campaign`) — `useCampaignStore.getState().data`. Read it for packages,
* pricing currency, and shipping options.
*
* @example
* ```ts
* const campaign = useCampaignStore.getState().data;
* const pkg = campaign?.packages.find(p => p.ref_id === 2);
* ```
* @category Campaign
*/
export const useCampaignStore = campaignStoreInstance;