@instockng/storefront-ui 1.0.33 → 1.0.35

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.
Files changed (232) hide show
  1. package/dist/contexts/CartContext.d.ts.map +1 -1
  2. package/dist/index100.mjs +8 -8
  3. package/dist/index101.mjs +6 -6
  4. package/dist/index102.mjs +3 -3
  5. package/dist/index103.mjs +1 -1
  6. package/dist/index104.mjs +1 -1
  7. package/dist/index105.mjs +1 -1
  8. package/dist/index106.mjs +2 -2
  9. package/dist/index107.mjs +2 -2
  10. package/dist/index108.mjs +3 -3
  11. package/dist/index109.mjs +1 -1
  12. package/dist/index110.mjs +3 -3
  13. package/dist/index111.mjs +2 -2
  14. package/dist/index112.mjs +2 -2
  15. package/dist/index113.mjs +1 -1
  16. package/dist/index114.mjs +3 -3
  17. package/dist/index115.mjs +1 -1
  18. package/dist/index116.mjs +1 -1
  19. package/dist/index117.mjs +3 -3
  20. package/dist/index118.mjs +2 -2
  21. package/dist/index119.mjs +4 -4
  22. package/dist/index120.mjs +1 -1
  23. package/dist/index121.mjs +3 -3
  24. package/dist/index122.mjs +4 -4
  25. package/dist/index123.mjs +1 -1
  26. package/dist/index124.mjs +1 -1
  27. package/dist/index125.mjs +1 -1
  28. package/dist/index126.mjs +1 -1
  29. package/dist/index127.mjs +1 -1
  30. package/dist/index128.mjs +1 -1
  31. package/dist/index129.mjs +1 -1
  32. package/dist/index130.mjs +2 -2
  33. package/dist/index131.mjs +3 -3
  34. package/dist/index136.mjs +2 -21
  35. package/dist/index137.mjs +2 -56
  36. package/dist/index138.mjs +2 -29
  37. package/dist/index139.mjs +17 -6
  38. package/dist/index140.mjs +30 -50
  39. package/dist/index141.mjs +38 -6
  40. package/dist/index142.mjs +17 -11
  41. package/dist/index143.mjs +18 -7
  42. package/dist/index144.mjs +2 -28
  43. package/dist/index145.mjs +20 -2
  44. package/dist/index146.mjs +44 -68
  45. package/dist/index147.mjs +2 -167
  46. package/dist/index148.mjs +30 -2
  47. package/dist/index149.mjs +18 -2
  48. package/dist/index150.mjs +2 -2
  49. package/dist/index151.mjs +2 -18
  50. package/dist/index152.mjs +2 -32
  51. package/dist/index153.mjs +2 -38
  52. package/dist/index154.mjs +67 -13
  53. package/dist/index155.mjs +2 -18
  54. package/dist/index156.mjs +53 -2
  55. package/dist/index157.mjs +2 -20
  56. package/dist/index158.mjs +29 -39
  57. package/dist/index159.mjs +152 -2
  58. package/dist/index160.mjs +2 -30
  59. package/dist/index161.mjs +2 -18
  60. package/dist/index162.mjs +19 -2
  61. package/dist/index163.mjs +2 -2
  62. package/dist/index164.mjs +2 -2
  63. package/dist/index165.mjs +26 -2
  64. package/dist/index166.mjs +2 -72
  65. package/dist/index167.mjs +2 -2
  66. package/dist/index168.mjs +20 -49
  67. package/dist/index169.mjs +23 -2
  68. package/dist/index170.mjs +2 -36
  69. package/dist/index171.mjs +2 -152
  70. package/dist/index172.mjs +2 -2
  71. package/dist/index173.mjs +23 -2
  72. package/dist/index174.mjs +2 -19
  73. package/dist/index175.mjs +23 -2
  74. package/dist/index177.mjs +2 -26
  75. package/dist/index178.mjs +2 -2
  76. package/dist/index179.mjs +23 -2
  77. package/dist/index180.mjs +2 -24
  78. package/dist/index181.mjs +15 -15
  79. package/dist/index182.mjs +2 -2
  80. package/dist/index183.mjs +2 -2
  81. package/dist/index184.mjs +2 -2
  82. package/dist/index185.mjs +2 -23
  83. package/dist/index186.mjs +2 -2
  84. package/dist/index187.mjs +2 -23
  85. package/dist/index188.mjs +2 -2
  86. package/dist/index189.mjs +2 -2
  87. package/dist/index190.mjs +127 -2
  88. package/dist/index191.mjs +2 -23
  89. package/dist/index192.mjs +74 -2
  90. package/dist/index193.mjs +71 -20
  91. package/dist/index194.mjs +21 -2
  92. package/dist/index195.mjs +56 -2
  93. package/dist/index196.mjs +29 -2
  94. package/dist/index197.mjs +7 -2
  95. package/dist/index198.mjs +52 -2
  96. package/dist/index199.mjs +6 -2
  97. package/dist/index20.mjs +28 -18
  98. package/dist/index200.mjs +12 -2
  99. package/dist/index201.mjs +7 -2
  100. package/dist/index202.mjs +28 -127
  101. package/dist/index203.mjs +2 -2
  102. package/dist/index204.mjs +69 -73
  103. package/dist/index205.mjs +164 -71
  104. package/dist/index207.mjs +2 -31
  105. package/dist/index208.mjs +2 -11
  106. package/dist/index209.mjs +2 -4
  107. package/dist/index210.mjs +2 -4
  108. package/dist/index211.mjs +2 -13
  109. package/dist/index212.mjs +2 -7
  110. package/dist/index213.mjs +2 -12
  111. package/dist/index214.mjs +2 -5
  112. package/dist/index215.mjs +108 -33
  113. package/dist/index216.mjs +2 -31
  114. package/dist/index217.mjs +2 -28
  115. package/dist/index218.mjs +34 -58
  116. package/dist/index219.mjs +2 -2
  117. package/dist/index220.mjs +244 -2
  118. package/dist/index221.mjs +2 -2
  119. package/dist/index222.mjs +33 -2
  120. package/dist/index223.mjs +65 -2
  121. package/dist/index224.mjs +25 -2
  122. package/dist/index225.mjs +2 -2
  123. package/dist/index227.mjs +2 -37
  124. package/dist/index228.mjs +2 -2
  125. package/dist/index230.mjs +2 -244
  126. package/dist/index232.mjs +2 -33
  127. package/dist/index233.mjs +2 -65
  128. package/dist/index234.mjs +2 -25
  129. package/dist/index235.mjs +4 -2
  130. package/dist/index236.mjs +2 -108
  131. package/dist/index237.mjs +2 -2
  132. package/dist/index238.mjs +31 -2
  133. package/dist/index239.mjs +11 -2
  134. package/dist/index240.mjs +4 -2
  135. package/dist/index241.mjs +4 -2
  136. package/dist/index242.mjs +13 -2
  137. package/dist/index243.mjs +7 -2
  138. package/dist/index244.mjs +12 -2
  139. package/dist/index245.mjs +5 -2
  140. package/dist/index246.mjs +33 -2
  141. package/dist/index247.mjs +31 -4
  142. package/dist/index248.mjs +28 -2
  143. package/dist/index249.mjs +61 -2
  144. package/dist/index250.mjs +2 -3
  145. package/dist/index251.mjs +2 -2
  146. package/dist/index252.mjs +2 -2
  147. package/dist/index253.mjs +17 -16
  148. package/dist/index254.mjs +46 -12
  149. package/dist/index255.mjs +2 -6
  150. package/dist/index256.mjs +2 -30
  151. package/dist/index257.mjs +2 -2
  152. package/dist/index258.mjs +89 -16
  153. package/dist/index259.mjs +2 -47
  154. package/dist/index26.mjs +19 -19
  155. package/dist/index260.mjs +3 -2
  156. package/dist/index261.mjs +2 -2
  157. package/dist/index262.mjs +2 -2
  158. package/dist/index263.mjs +17 -2
  159. package/dist/index264.mjs +12 -90
  160. package/dist/index265.mjs +6 -2
  161. package/dist/index266.mjs +30 -2
  162. package/dist/index267.mjs +2 -2
  163. package/dist/index269.mjs +2 -2
  164. package/dist/index3.mjs +94 -90
  165. package/dist/index33.mjs +5 -5
  166. package/dist/index34.mjs +1 -1
  167. package/dist/index35.mjs +1 -1
  168. package/dist/index36.mjs +1 -1
  169. package/dist/index37.mjs +1 -1
  170. package/dist/index38.mjs +2 -2
  171. package/dist/index40.mjs +1 -1
  172. package/dist/index41.mjs +3 -3
  173. package/dist/index44.mjs +1 -1
  174. package/dist/index49.mjs +17 -17
  175. package/dist/index5.mjs +36 -35
  176. package/dist/index50.mjs +2 -2
  177. package/dist/index51.mjs +1 -1
  178. package/dist/index52.mjs +1 -1
  179. package/dist/index53.mjs +1 -1
  180. package/dist/index54.mjs +1 -1
  181. package/dist/index55.mjs +1 -1
  182. package/dist/index56.mjs +1 -1
  183. package/dist/index57.mjs +1 -1
  184. package/dist/index58.mjs +1 -1
  185. package/dist/index59.mjs +1 -1
  186. package/dist/index60.mjs +1 -1
  187. package/dist/index61.mjs +1 -1
  188. package/dist/index62.mjs +23 -4
  189. package/dist/index63.mjs +2 -23
  190. package/dist/index64.mjs +20 -21
  191. package/dist/index65.mjs +7 -7
  192. package/dist/index66.mjs +75 -2
  193. package/dist/index67.mjs +14 -74
  194. package/dist/index68.mjs +62 -14
  195. package/dist/index69.mjs +4 -62
  196. package/dist/index70.mjs +2 -235
  197. package/dist/index71.mjs +5 -5
  198. package/dist/index72.mjs +1125 -125
  199. package/dist/index73.mjs +19 -67
  200. package/dist/index74.mjs +50 -82
  201. package/dist/index75.mjs +32 -28
  202. package/dist/index76.mjs +2 -9
  203. package/dist/index77.mjs +2 -75
  204. package/dist/index78.mjs +234 -3
  205. package/dist/index79.mjs +6 -2
  206. package/dist/index80.mjs +128 -77
  207. package/dist/index81.mjs +67 -53
  208. package/dist/index82.mjs +86 -5
  209. package/dist/index83.mjs +28 -4
  210. package/dist/index84.mjs +7 -177
  211. package/dist/index85.mjs +72 -50
  212. package/dist/index86.mjs +4 -69
  213. package/dist/index87.mjs +2 -2
  214. package/dist/index88.mjs +82 -5
  215. package/dist/index89.mjs +53 -1133
  216. package/dist/index90.mjs +5 -19
  217. package/dist/index91.mjs +4 -54
  218. package/dist/index92.mjs +174 -28
  219. package/dist/index93.mjs +53 -2
  220. package/dist/index94.mjs +69 -34
  221. package/dist/index95.mjs +31 -40
  222. package/dist/index96.mjs +43 -2
  223. package/dist/index98.mjs +1 -1
  224. package/dist/index99.mjs +1 -1
  225. package/dist/lib/utils.d.ts +8 -0
  226. package/dist/lib/utils.d.ts.map +1 -1
  227. package/dist/providers/TikTokPixelProvider.d.ts +5 -1
  228. package/dist/providers/TikTokPixelProvider.d.ts.map +1 -1
  229. package/package.json +2 -2
  230. package/src/contexts/CartContext.tsx +13 -3
  231. package/src/lib/utils.ts +31 -9
  232. package/src/providers/TikTokPixelProvider.tsx +10 -3
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@instockng/storefront-ui",
3
- "version": "1.0.33",
3
+ "version": "1.0.35",
4
4
  "description": "Pre-built UI components for OMS e-commerce sites",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -45,7 +45,7 @@
45
45
  "author": "Ola Wale",
46
46
  "license": "MIT",
47
47
  "dependencies": {
48
- "@instockng/api-client": "^1.0.16",
48
+ "@instockng/api-client": "^1.0.17",
49
49
  "class-variance-authority": "^0.7.1",
50
50
  "clsx": "^2.1.0",
51
51
  "react-facebook-pixel": "^1.0.4",
@@ -24,7 +24,7 @@ import {
24
24
  import { ShoppingCart } from '../components/ShoppingCart';
25
25
  import { useMetaPixel } from '../providers/MetaPixelProvider';
26
26
  import { useTikTokPixel } from '../providers/TikTokPixelProvider';
27
- import { getFbCookies } from '../lib/utils';
27
+ import { getFbCookies, getTikTokCookies } from '../lib/utils';
28
28
 
29
29
  const CART_ID_KEY = 'oms_cart_id';
30
30
 
@@ -243,8 +243,11 @@ export function CartProvider({ children, brandSlug, initialCartId, shoppingCartP
243
243
  // Get Facebook cookies for attribution
244
244
  const { fbc, fbp } = getFbCookies();
245
245
 
246
+ // Get TikTok cookies for attribution
247
+ const { ttp, ttclid } = getTikTokCookies();
248
+
246
249
  // Add item to cart via API
247
- const updatedCart = await addItemMutation.mutateAsync({ sku, quantity, fbc, fbp });
250
+ const updatedCart = await addItemMutation.mutateAsync({ sku, quantity, fbc, fbp, ttp, ttclid });
248
251
 
249
252
  // Skip tracking if error response
250
253
  if ('error' in updatedCart) return;
@@ -342,11 +345,18 @@ export function CartProvider({ children, brandSlug, initialCartId, shoppingCartP
342
345
  // Generate event ID matching backend format: cart_{cartId}_checkout
343
346
  const eventID = `cart_${cartId}_checkout`;
344
347
 
348
+ // Prepare contents array for TikTok Pixel
349
+ const contents = cart.items?.map((item) => ({
350
+ content_id: item.variant.sku,
351
+ quantity: item.quantity,
352
+ price: Number(item.variant.price),
353
+ })) || [];
354
+
345
355
  // Track InitiateCheckout event with Meta Pixel
346
356
  trackMetaInitiateCheckout(cartTotal, itemCount, eventID);
347
357
 
348
358
  // Track InitiateCheckout event with TikTok Pixel
349
- trackTikTokInitiateCheckout(cartTotal, itemCount, eventID);
359
+ trackTikTokInitiateCheckout(cartTotal, itemCount, eventID, contents);
350
360
  }, [cart, cartId, trackMetaInitiateCheckout, trackTikTokInitiateCheckout]);
351
361
 
352
362
  const value: CartContextValue = {
package/src/lib/utils.ts CHANGED
@@ -44,22 +44,44 @@ export function getStatusColor(status: string): string {
44
44
  return colors[status] || 'bg-gray-100 text-gray-800'
45
45
  }
46
46
 
47
+ /**
48
+ * Extract a cookie value by name
49
+ */
50
+ function getCookie(name: string): string | undefined {
51
+ if (typeof document === 'undefined') return undefined;
52
+ const value = `; ${document.cookie}`;
53
+ const parts = value.split(`; ${name}=`);
54
+ if (parts.length === 2) return parts.pop()?.split(';').shift();
55
+ return undefined;
56
+ }
57
+
58
+ /**
59
+ * Extract a URL parameter by name
60
+ */
61
+ function getUrlParam(name: string): string | undefined {
62
+ if (typeof window === 'undefined') return undefined;
63
+ const urlParams = new URLSearchParams(window.location.search);
64
+ return urlParams.get(name) || undefined;
65
+ }
66
+
47
67
  /**
48
68
  * Extract Facebook attribution cookies (fbc & fbp) for Meta Pixel CAPI
49
69
  * @returns Object with fbc (Facebook Click ID) and fbp (Facebook Browser ID) cookies
50
70
  */
51
71
  export function getFbCookies(): { fbc: string | undefined; fbp: string | undefined } {
52
- if (typeof document === 'undefined') return { fbc: undefined, fbp: undefined };
53
-
54
- const getCookie = (name: string) => {
55
- const value = `; ${document.cookie}`;
56
- const parts = value.split(`; ${name}=`);
57
- if (parts.length === 2) return parts.pop()?.split(';').shift();
58
- return undefined;
59
- };
60
-
61
72
  return {
62
73
  fbc: getCookie('_fbc'),
63
74
  fbp: getCookie('_fbp'),
64
75
  };
65
76
  }
77
+
78
+ /**
79
+ * Extract TikTok attribution cookies and URL parameters for TikTok Events API
80
+ * @returns Object with ttp (TikTok Pixel cookie) and ttclid (TikTok Click ID from URL) values
81
+ */
82
+ export function getTikTokCookies(): { ttp: string | undefined; ttclid: string | undefined } {
83
+ return {
84
+ ttp: getCookie('_ttp'),
85
+ ttclid: getUrlParam('ttclid'),
86
+ };
87
+ }
@@ -24,7 +24,12 @@ interface TikTokPixelContextType {
24
24
  quantity: number,
25
25
  eventID?: string
26
26
  ) => void;
27
- trackInitiateCheckout: (cartTotal: number, itemCount: number, eventID?: string) => void;
27
+ trackInitiateCheckout: (
28
+ cartTotal: number,
29
+ itemCount: number,
30
+ eventID?: string,
31
+ contents?: Array<{ content_id: string; quantity: number; price: number }>
32
+ ) => void;
28
33
  trackPurchase: (
29
34
  orderTotal: number,
30
35
  currency: string,
@@ -153,7 +158,7 @@ export function TikTokPixelProvider({
153
158
  content_type: 'product',
154
159
  content_id: productId,
155
160
  content_name: productName,
156
- price: price,
161
+ value: price * quantity,
157
162
  quantity: quantity,
158
163
  currency: 'NGN',
159
164
  },
@@ -164,7 +169,8 @@ export function TikTokPixelProvider({
164
169
  const trackInitiateCheckout = (
165
170
  cartTotal: number,
166
171
  itemCount: number,
167
- eventID?: string
172
+ eventID?: string,
173
+ contents?: Array<{ content_id: string; quantity: number; price: number }>
168
174
  ) => {
169
175
  track(
170
176
  'InitiateCheckout',
@@ -173,6 +179,7 @@ export function TikTokPixelProvider({
173
179
  value: cartTotal,
174
180
  currency: 'NGN',
175
181
  num_items: itemCount,
182
+ ...(contents && contents.length > 0 ? { contents } : {}),
176
183
  },
177
184
  eventID
178
185
  );