@weareconceptstudio/cart 0.0.1

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.
@@ -0,0 +1,291 @@
1
+ /**
2
+ * useCart Hook
3
+ * Enhanced hook for cart operations with all features from old Context implementation
4
+ */
5
+ import { useCartStore } from '../store/cartStore';
6
+ import { isNumeric } from '@weareconceptstudio/core';
7
+ /**
8
+ * Main cart hook with backward compatibility
9
+ * Provides full API matching old Context-based cart
10
+ */
11
+ export function useCart() {
12
+ const store = useCartStore();
13
+ const state = useCartStore.getState();
14
+ // Legacy toggleCartItem for backward compatibility
15
+ const toggleCartItem = async (params) => {
16
+ const { productId, qty, variantId, optionId, itemId, update } = params;
17
+ const { hasVariants } = store.config;
18
+ if (hasVariants && variantId !== undefined && optionId !== undefined) {
19
+ // Variant product
20
+ if (qty === 0) {
21
+ return store.removeItem({ productId, variantId, optionId });
22
+ }
23
+ // When updating an existing item with itemId, pass it along
24
+ return store.addItem({ productId, variantId, optionId, qty, itemId });
25
+ }
26
+ else {
27
+ // Simple product
28
+ if (qty === 0) {
29
+ return store.removeItem({ productId });
30
+ }
31
+ return store.updateItem({ productId, qty, itemId });
32
+ }
33
+ };
34
+ // Legacy deleteCartItem
35
+ const deleteCartItem = async (params) => {
36
+ const { productId, variantId, optionId } = params;
37
+ const { hasVariants } = store.config;
38
+ if (hasVariants && variantId !== undefined && optionId !== undefined) {
39
+ return store.removeItem({ productId, variantId, optionId });
40
+ }
41
+ else {
42
+ return store.removeItem({ productId });
43
+ }
44
+ };
45
+ // Legacy editCartItem
46
+ const editCartItem = async (params) => {
47
+ const { productId, variantId, optionId, qty, oldVariant, oldOption, itemId } = params;
48
+ // Remove old variant if changed
49
+ if (oldVariant && oldOption && (variantId !== oldVariant.id || optionId !== oldOption.id)) {
50
+ await store.removeItem({ productId, variantId: oldVariant.id, optionId: oldOption.id });
51
+ }
52
+ // Add/update new variant
53
+ if (variantId && optionId) {
54
+ return store.addItem({ productId, variantId, optionId, qty, itemId });
55
+ }
56
+ return store.updateItem({ productId, qty, itemId });
57
+ };
58
+ // Legacy setCartState
59
+ const setCartState = (data) => {
60
+ console.warn('setCartState is deprecated, state is managed automatically');
61
+ };
62
+ // Card validation for checkout button
63
+ const checkoutBtnDisabled = (() => {
64
+ if ((store.itemsCount || 0) === 0)
65
+ return true;
66
+ const { checkoutData, user, isCheckoutPage } = store;
67
+ if (isCheckoutPage && isNumeric(checkoutData.paymentType)) {
68
+ const selectedCard = user?.cards?.find((card) => card.id === checkoutData.paymentType);
69
+ return selectedCard?.is_expired || false;
70
+ }
71
+ return false;
72
+ })();
73
+ return {
74
+ // Cart state
75
+ items: store.items || [],
76
+ itemsCount: store.itemsCount || 0,
77
+ formatted_subtotal: store.formatted_subtotal || 0,
78
+ subtotal: store.subtotal || 0,
79
+ total: store.total || 0,
80
+ formatted_total: store.formatted_total || 0,
81
+ currency: store.currency || 'AMD',
82
+ shippingCost: store.shippingCost || '-',
83
+ formatted_shippingCost: store.formatted_shippingCost || '-',
84
+ loading: store.loading || false,
85
+ discount: store.discount || null,
86
+ formatted_discount: store.formatted_discount || null,
87
+ appliedPromotions: store.appliedPromotions || [],
88
+ remaining: state.remaining || null,
89
+ formatted_remaining: store.formatted_remaining || null,
90
+ shippingCostValue: state.shippingCostValue || null,
91
+ formatted_shippingCostValue: store.formatted_shippingCostValue || null,
92
+ shippingCityName: state.shippingCityName || null,
93
+ hasFreeGift: state.hasFreeGift || null,
94
+ giftThresholdRemaining: state.giftThresholdRemaining || null,
95
+ formatted_giftThresholdRemaining: state.formatted_giftThresholdRemaining || null,
96
+ useBalance: state.useBalance || null,
97
+ formatted_useBalance: store.formatted_useBalance || null,
98
+ promotion_code: state.promotion_code || null,
99
+ promotion_error: state.promotion_error || null,
100
+ utensils: state.utensils || [],
101
+ // Checkout data
102
+ checkoutData: store.checkoutData,
103
+ setCheckoutData: store.updateCheckoutData,
104
+ // New cart actions
105
+ addItem: store.addItem,
106
+ removeItem: store.removeItem,
107
+ updateItem: store.updateItem,
108
+ clearCart: store.clearCart,
109
+ getCart: store.getCart,
110
+ mergeCart: store.mergeCart,
111
+ syncCart: store.syncCart,
112
+ // Legacy methods
113
+ toggleCartItem,
114
+ deleteCartItem,
115
+ editCartItem,
116
+ setGifts: store.setGifts,
117
+ togglePromotion: store.togglePromotion,
118
+ fillCheckoutData: store.fillCheckoutData,
119
+ fillCart: store.fillCart,
120
+ setCartState,
121
+ resetCart: store.resetCart,
122
+ // Gifts & Promotions (direct from store)
123
+ // setGifts and togglePromotion are now in store
124
+ // Reorder
125
+ reorder: store.reorder,
126
+ // Checkout
127
+ updateCheckoutData: store.updateCheckoutData,
128
+ checkout: store.checkout,
129
+ handleCheckout: store.checkout,
130
+ // Idram payment
131
+ idramFormData: store.idramFormData,
132
+ setIdramForm: store.setIdramForm,
133
+ submitIdramPayment: store.submitIdramPayment,
134
+ // Flags
135
+ checkoutBtnDisabled,
136
+ isCheckoutPage: store.isCheckoutPage,
137
+ isCartPage: store.isCartPage,
138
+ isLoggedIn: store.isLoggedIn,
139
+ // Configuration
140
+ config: store.config,
141
+ // User
142
+ user: store.user,
143
+ setUser: store.setUser,
144
+ };
145
+ }
146
+ /**
147
+ * Hook for simple add to cart (without variants)
148
+ */
149
+ export function useSimpleCart() {
150
+ const { addItem, removeItem, updateItem, items, itemsCount, loading } = useCart();
151
+ /**
152
+ * Add simple product (no variants)
153
+ */
154
+ const addProduct = async (productId, qty = 1) => {
155
+ return addItem({ productId, qty });
156
+ };
157
+ /**
158
+ * Remove simple product
159
+ */
160
+ const removeProduct = async (productId) => {
161
+ return removeItem({ productId });
162
+ };
163
+ /**
164
+ * Update product quantity
165
+ */
166
+ const updateProductQty = async (productId, qty) => {
167
+ return updateItem({ productId, qty });
168
+ };
169
+ /**
170
+ * Check if product is in cart
171
+ */
172
+ const isInCart = (productId) => {
173
+ return items.some((item) => item.product.id === productId);
174
+ };
175
+ /**
176
+ * Get product quantity in cart
177
+ */
178
+ const getProductQty = (productId) => {
179
+ const item = items.find((item) => item.product.id === productId);
180
+ return item?.qty || 0;
181
+ };
182
+ return {
183
+ addProduct,
184
+ removeProduct,
185
+ updateProductQty,
186
+ isInCart,
187
+ getProductQty,
188
+ items,
189
+ itemsCount,
190
+ loading,
191
+ };
192
+ }
193
+ /**
194
+ * Hook for variant products (with color/size)
195
+ */
196
+ export function useVariantCart() {
197
+ const { addItem, removeItem, updateItem, items, itemsCount, loading } = useCart();
198
+ /**
199
+ * Add variant product
200
+ */
201
+ const addVariantProduct = async (productId, variantId, optionId, qty = 1) => {
202
+ return addItem({ productId, variantId, optionId, qty });
203
+ };
204
+ /**
205
+ * Remove variant product
206
+ */
207
+ const removeVariantProduct = async (productId, variantId, optionId) => {
208
+ return removeItem({ productId, variantId, optionId });
209
+ };
210
+ /**
211
+ * Update variant product quantity
212
+ */
213
+ const updateVariantProductQty = async (productId, variantId, optionId, qty) => {
214
+ return updateItem({ productId, variantId, optionId, qty });
215
+ };
216
+ /**
217
+ * Check if variant is in cart
218
+ */
219
+ const isVariantInCart = (productId, variantId, optionId) => {
220
+ return items.some((item) => item.product.id === productId && item.variantId === variantId && item.optionId === optionId);
221
+ };
222
+ /**
223
+ * Get variant quantity in cart
224
+ */
225
+ const getVariantQty = (productId, variantId, optionId) => {
226
+ const item = items.find((item) => item.product.id === productId && item.variantId === variantId && item.optionId === optionId);
227
+ return item?.qty || 0;
228
+ };
229
+ return {
230
+ addVariantProduct,
231
+ removeVariantProduct,
232
+ updateVariantProductQty,
233
+ isVariantInCart,
234
+ getVariantQty,
235
+ items,
236
+ itemsCount,
237
+ loading,
238
+ };
239
+ }
240
+ /**
241
+ * Hook for checkout operations
242
+ */
243
+ export function useCheckout() {
244
+ const { checkoutData, updateCheckoutData, checkout, itemsCount, total, subtotal, shippingCost, loading } = useCart();
245
+ /**
246
+ * Update address
247
+ */
248
+ const setAddress = (addressId) => {
249
+ updateCheckoutData({ addressId });
250
+ };
251
+ /**
252
+ * Update payment method
253
+ */
254
+ const setPaymentMethod = (paymentType, cardId) => {
255
+ updateCheckoutData({ paymentType, card_id: cardId || null });
256
+ };
257
+ /**
258
+ * Add note
259
+ */
260
+ const setNote = (note) => {
261
+ updateCheckoutData({ note });
262
+ };
263
+ /**
264
+ * Apply promo code
265
+ */
266
+ const applyPromoCode = (code) => {
267
+ updateCheckoutData({ promotion_code: code });
268
+ };
269
+ /**
270
+ * Check if cart is ready for checkout
271
+ */
272
+ const isReadyForCheckout = () => {
273
+ return itemsCount > 0 && !loading;
274
+ };
275
+ return {
276
+ checkoutData,
277
+ updateCheckoutData,
278
+ checkout,
279
+ setAddress,
280
+ setPaymentMethod,
281
+ setNote,
282
+ applyPromoCode,
283
+ isReadyForCheckout,
284
+ itemsCount,
285
+ total,
286
+ subtotal,
287
+ shippingCost,
288
+ loading,
289
+ };
290
+ }
291
+ //# sourceMappingURL=useCart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCart.js","sourceRoot":"","sources":["../../src/hooks/useCart.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @weareconceptstudio/cart
3
+ * Simple Zustand-based cart management for single and variant products
4
+ */
5
+ export { useCart, useSimpleCart, useVariantCart, useCheckout } from './hooks';
6
+ export { useCartStore, initCartStore } from './store';
7
+ export * from './types';
8
+ export * from './utils';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAG9E,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAGtD,cAAc,SAAS,CAAC;AAGxB,cAAc,SAAS,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @weareconceptstudio/cart
3
+ * Simple Zustand-based cart management for single and variant products
4
+ */
5
+ // Main hooks
6
+ export { useCart, useSimpleCart, useVariantCart, useCheckout } from './hooks';
7
+ // Store
8
+ export { useCartStore, initCartStore } from './store';
9
+ // Types
10
+ export * from './types';
11
+ // Utils
12
+ export * from './utils';
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,aAAa;AACb,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE9E,QAAQ;AACR,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAEtD,QAAQ;AACR,cAAc,SAAS,CAAC;AAExB,QAAQ;AACR,cAAc,SAAS,CAAC"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Cart Store - Zustand Implementation
3
+ * Enhanced with all features from old Context implementation
4
+ */
5
+ import { CartState, CartConfig, AddToCartParams, RemoveFromCartParams, UpdateCartItemParams, CheckoutData } from '../types';
6
+ interface CartActions {
7
+ addItem: (params: AddToCartParams) => Promise<void>;
8
+ removeItem: (params: RemoveFromCartParams) => Promise<void>;
9
+ updateItem: (params: UpdateCartItemParams) => Promise<void>;
10
+ clearCart: () => Promise<void>;
11
+ getCart: (params?: Record<string, any>) => Promise<void>;
12
+ syncCart: () => Promise<void>;
13
+ mergeCart: () => Promise<void>;
14
+ updateCheckoutData: (data: Partial<CheckoutData>) => void;
15
+ fillCheckoutData: (keyOrObject: keyof CheckoutData | Partial<CheckoutData>, value?: any) => void;
16
+ fillCart: (key: string, value: any) => void;
17
+ checkout: () => Promise<any>;
18
+ setGifts: ({ promotionId, qty, productId }: {
19
+ promotionId: number;
20
+ qty: number;
21
+ productId: number;
22
+ }) => void;
23
+ togglePromotion: ({ promotionId }: {
24
+ promotionId: number;
25
+ }) => void;
26
+ reorder: (orderId: number) => Promise<void>;
27
+ setIdramForm: (form: any) => void;
28
+ submitIdramPayment: () => void;
29
+ setLoading: (loading: boolean) => void;
30
+ resetCart: () => void;
31
+ setUser: (user: any) => void;
32
+ }
33
+ interface CartStore extends CartState, CartActions {
34
+ config: CartConfig;
35
+ checkoutData: CheckoutData;
36
+ isLoggedIn: boolean;
37
+ selectedLang: string;
38
+ user: any;
39
+ idramFormData: any;
40
+ isCheckoutPage: boolean;
41
+ isCartPage: boolean;
42
+ }
43
+ /**
44
+ * Create cart store
45
+ */
46
+ export declare const useCartStore: import("zustand").UseBoundStore<Omit<import("zustand").StoreApi<CartStore>, "setState" | "devtools"> & {
47
+ setState(partial: CartStore | Partial<CartStore> | ((state: CartStore) => CartStore | Partial<CartStore>), replace?: false, action?: string | {
48
+ [x: string]: unknown;
49
+ [x: number]: unknown;
50
+ [x: symbol]: unknown;
51
+ type: string;
52
+ }): void;
53
+ setState(state: CartStore | ((state: CartStore) => CartStore), replace: true, action?: string | {
54
+ [x: string]: unknown;
55
+ [x: number]: unknown;
56
+ [x: symbol]: unknown;
57
+ type: string;
58
+ }): void;
59
+ devtools: {
60
+ cleanup: () => void;
61
+ };
62
+ }>;
63
+ /**
64
+ * Initialize cart store
65
+ * Call this once when your app starts
66
+ */
67
+ export declare function initCartStore(config: CartConfig, isLoggedIn: boolean, selectedLang?: string, user?: any): void;
68
+ export {};
69
+ //# sourceMappingURL=cartStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cartStore.d.ts","sourceRoot":"","sources":["../../src/store/cartStore.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EACN,SAAS,EACT,UAAU,EACV,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,EAIZ,MAAM,UAAU,CAAC;AAWlB,UAAU,WAAW;IAEpB,OAAO,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,UAAU,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,UAAU,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAG/B,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAG/B,kBAAkB,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC;IAC1D,gBAAgB,EAAE,CAAC,WAAW,EAAE,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IACjG,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IAC5C,QAAQ,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;IAG7B,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC7G,eAAe,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAGpE,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAG5C,YAAY,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;IAClC,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAG/B,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;CAC7B;AAED,UAAU,SAAU,SAAQ,SAAS,EAAE,WAAW;IACjD,MAAM,EAAE,UAAU,CAAC;IACnB,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,GAAG,CAAC;IACV,aAAa,EAAE,GAAG,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;CACpB;AA+ED;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;EAujBxB,CAAC;AAkFF;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,GAAE,MAAa,EAAE,IAAI,GAAE,GAAU,QAyCnH"}