@instockng/storefront-ui 1.0.32 → 1.0.33

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 (264) hide show
  1. package/dist/contexts/CartContext.d.ts.map +1 -1
  2. package/dist/index.d.ts +1 -0
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.mjs +99 -96
  5. package/dist/index10.mjs +85 -162
  6. package/dist/index100.mjs +210 -17
  7. package/dist/index101.mjs +174 -17
  8. package/dist/index102.mjs +14 -25
  9. package/dist/index103.mjs +17 -150
  10. package/dist/index104.mjs +26 -13
  11. package/dist/index105.mjs +149 -24
  12. package/dist/index106.mjs +13 -77
  13. package/dist/index107.mjs +20 -27
  14. package/dist/index108.mjs +76 -137
  15. package/dist/index109.mjs +33 -50
  16. package/dist/index11.mjs +171 -94
  17. package/dist/index110.mjs +141 -19
  18. package/dist/index111.mjs +50 -22
  19. package/dist/index112.mjs +14 -14
  20. package/dist/index113.mjs +20 -18
  21. package/dist/index114.mjs +16 -14
  22. package/dist/index115.mjs +17 -14
  23. package/dist/index116.mjs +12 -12
  24. package/dist/index117.mjs +15 -58
  25. package/dist/index118.mjs +14 -11
  26. package/dist/index119.mjs +56 -30
  27. package/dist/index12.mjs +82 -659
  28. package/dist/index120.mjs +9 -15
  29. package/dist/index121.mjs +31 -26
  30. package/dist/index122.mjs +13 -16
  31. package/dist/index123.mjs +26 -11
  32. package/dist/index124.mjs +17 -11
  33. package/dist/index125.mjs +12 -40
  34. package/dist/index126.mjs +14 -16
  35. package/dist/index127.mjs +42 -263
  36. package/dist/index128.mjs +15 -62
  37. package/dist/index129.mjs +267 -7
  38. package/dist/index13.mjs +668 -53
  39. package/dist/index130.mjs +70 -2
  40. package/dist/index131.mjs +8 -2
  41. package/dist/index132.mjs +2 -33
  42. package/dist/index133.mjs +2 -2
  43. package/dist/index134.mjs +32 -20
  44. package/dist/index135.mjs +2 -56
  45. package/dist/index136.mjs +18 -26
  46. package/dist/index137.mjs +55 -6
  47. package/dist/index138.mjs +28 -51
  48. package/dist/index139.mjs +7 -6
  49. package/dist/index14.mjs +58 -60
  50. package/dist/index140.mjs +51 -11
  51. package/dist/index141.mjs +5 -6
  52. package/dist/index142.mjs +12 -28
  53. package/dist/index143.mjs +7 -2
  54. package/dist/index144.mjs +27 -69
  55. package/dist/index145.mjs +2 -167
  56. package/dist/index146.mjs +70 -2
  57. package/dist/index147.mjs +167 -2
  58. package/dist/index148.mjs +2 -2
  59. package/dist/index149.mjs +2 -18
  60. package/dist/index15.mjs +60 -22
  61. package/dist/index150.mjs +2 -32
  62. package/dist/index151.mjs +14 -34
  63. package/dist/index152.mjs +25 -11
  64. package/dist/index153.mjs +34 -14
  65. package/dist/index154.mjs +18 -2
  66. package/dist/index155.mjs +10 -12
  67. package/dist/index156.mjs +2 -46
  68. package/dist/index157.mjs +20 -2
  69. package/dist/index158.mjs +41 -25
  70. package/dist/index159.mjs +2 -18
  71. package/dist/index16.mjs +22 -113
  72. package/dist/index160.mjs +30 -2
  73. package/dist/index161.mjs +18 -2
  74. package/dist/index162.mjs +2 -2
  75. package/dist/index163.mjs +2 -2
  76. package/dist/index164.mjs +2 -72
  77. package/dist/index165.mjs +2 -2
  78. package/dist/index166.mjs +59 -40
  79. package/dist/index168.mjs +48 -31
  80. package/dist/index169.mjs +2 -152
  81. package/dist/index17.mjs +111 -38
  82. package/dist/index170.mjs +36 -2
  83. package/dist/index171.mjs +152 -2
  84. package/dist/index172.mjs +2 -19
  85. package/dist/index173.mjs +2 -2
  86. package/dist/index174.mjs +19 -2
  87. package/dist/index175.mjs +2 -26
  88. package/dist/index176.mjs +2 -2
  89. package/dist/index177.mjs +26 -2
  90. package/dist/index178.mjs +2 -24
  91. package/dist/index179.mjs +2 -23
  92. package/dist/index18.mjs +37 -37
  93. package/dist/index180.mjs +24 -2
  94. package/dist/index181.mjs +23 -2
  95. package/dist/index182.mjs +2 -2
  96. package/dist/index183.mjs +2 -23
  97. package/dist/index185.mjs +16 -16
  98. package/dist/index186.mjs +2 -2
  99. package/dist/index187.mjs +23 -2
  100. package/dist/index188.mjs +2 -2
  101. package/dist/index189.mjs +2 -23
  102. package/dist/index19.mjs +42 -55
  103. package/dist/index190.mjs +2 -2
  104. package/dist/index191.mjs +15 -15
  105. package/dist/index193.mjs +23 -2
  106. package/dist/index194.mjs +2 -2
  107. package/dist/index195.mjs +2 -2
  108. package/dist/index196.mjs +2 -2
  109. package/dist/index198.mjs +2 -2
  110. package/dist/index2.mjs +14 -13
  111. package/dist/index20.mjs +53 -30
  112. package/dist/index200.mjs +2 -127
  113. package/dist/index201.mjs +2 -2
  114. package/dist/index202.mjs +123 -70
  115. package/dist/index203.mjs +2 -74
  116. package/dist/index204.mjs +74 -2
  117. package/dist/index205.mjs +73 -30
  118. package/dist/index206.mjs +2 -11
  119. package/dist/index207.mjs +30 -3
  120. package/dist/index208.mjs +10 -3
  121. package/dist/index209.mjs +4 -13
  122. package/dist/index21.mjs +29 -6
  123. package/dist/index210.mjs +4 -7
  124. package/dist/index211.mjs +13 -12
  125. package/dist/index212.mjs +7 -5
  126. package/dist/index213.mjs +12 -33
  127. package/dist/index214.mjs +5 -31
  128. package/dist/index215.mjs +32 -27
  129. package/dist/index216.mjs +28 -58
  130. package/dist/index217.mjs +28 -2
  131. package/dist/index218.mjs +55 -102
  132. package/dist/index219.mjs +2 -2
  133. package/dist/index22.mjs +8 -21
  134. package/dist/index220.mjs +2 -2
  135. package/dist/index222.mjs +2 -2
  136. package/dist/index223.mjs +2 -2
  137. package/dist/index226.mjs +2 -2
  138. package/dist/index227.mjs +37 -2
  139. package/dist/index228.mjs +2 -37
  140. package/dist/index229.mjs +2 -2
  141. package/dist/index23.mjs +19 -30
  142. package/dist/index230.mjs +244 -2
  143. package/dist/index231.mjs +2 -2
  144. package/dist/index232.mjs +32 -243
  145. package/dist/index233.mjs +65 -2
  146. package/dist/index234.mjs +16 -24
  147. package/dist/index235.mjs +2 -65
  148. package/dist/index236.mjs +103 -20
  149. package/dist/index237.mjs +2 -2
  150. package/dist/index238.mjs +2 -2
  151. package/dist/index24.mjs +31 -18
  152. package/dist/index244.mjs +2 -2
  153. package/dist/index245.mjs +2 -4
  154. package/dist/index246.mjs +2 -2
  155. package/dist/index247.mjs +4 -2
  156. package/dist/index248.mjs +2 -2
  157. package/dist/index249.mjs +2 -2
  158. package/dist/index25.mjs +12 -85
  159. package/dist/index250.mjs +3 -18
  160. package/dist/index251.mjs +2 -47
  161. package/dist/index252.mjs +2 -2
  162. package/dist/index253.mjs +17 -2
  163. package/dist/index254.mjs +13 -2
  164. package/dist/index255.mjs +6 -2
  165. package/dist/index256.mjs +30 -91
  166. package/dist/index257.mjs +2 -3
  167. package/dist/index258.mjs +18 -2
  168. package/dist/index259.mjs +47 -2
  169. package/dist/index26.mjs +85 -12
  170. package/dist/index260.mjs +2 -17
  171. package/dist/index261.mjs +2 -13
  172. package/dist/index262.mjs +2 -6
  173. package/dist/index263.mjs +2 -30
  174. package/dist/index264.mjs +91 -2
  175. package/dist/index266.mjs +2 -2
  176. package/dist/index267.mjs +2 -2
  177. package/dist/index268.mjs +5 -0
  178. package/dist/index269.mjs +5 -0
  179. package/dist/index27.mjs +18 -9
  180. package/dist/index28.mjs +9 -9
  181. package/dist/index29.mjs +11 -101
  182. package/dist/index3.mjs +104 -103
  183. package/dist/index30.mjs +101 -20
  184. package/dist/index31.mjs +20 -65
  185. package/dist/index32.mjs +66 -96
  186. package/dist/index33.mjs +93 -16
  187. package/dist/index34.mjs +12 -12
  188. package/dist/index35.mjs +17 -9
  189. package/dist/index36.mjs +9 -9
  190. package/dist/index37.mjs +10 -122
  191. package/dist/index38.mjs +116 -18
  192. package/dist/index39.mjs +342 -1386
  193. package/dist/index4.mjs +1 -1
  194. package/dist/index40.mjs +25 -2
  195. package/dist/index41.mjs +1425 -52
  196. package/dist/index42.mjs +2 -51
  197. package/dist/index43.mjs +60 -33
  198. package/dist/index44.mjs +49 -13
  199. package/dist/index45.mjs +32 -2262
  200. package/dist/index46.mjs +15 -36
  201. package/dist/index47.mjs +2261 -42
  202. package/dist/index48.mjs +36 -99
  203. package/dist/index49.mjs +43 -96
  204. package/dist/index5.mjs +110 -15
  205. package/dist/index50.mjs +99 -81
  206. package/dist/index51.mjs +93 -57
  207. package/dist/index52.mjs +54 -68
  208. package/dist/index53.mjs +58 -62
  209. package/dist/index54.mjs +74 -58
  210. package/dist/index55.mjs +77 -15
  211. package/dist/index56.mjs +75 -14
  212. package/dist/index57.mjs +15 -59
  213. package/dist/index58.mjs +11 -118
  214. package/dist/index59.mjs +46 -112
  215. package/dist/index6.mjs +15 -195
  216. package/dist/index60.mjs +124 -23
  217. package/dist/index61.mjs +128 -152
  218. package/dist/index64.mjs +24 -2
  219. package/dist/index65.mjs +149 -71
  220. package/dist/index66.mjs +2 -15
  221. package/dist/index67.mjs +68 -56
  222. package/dist/index68.mjs +15 -2
  223. package/dist/index69.mjs +62 -5
  224. package/dist/index7.mjs +188 -101
  225. package/dist/index70.mjs +230 -1129
  226. package/dist/index71.mjs +5 -19
  227. package/dist/index72.mjs +127 -48
  228. package/dist/index73.mjs +67 -32
  229. package/dist/index74.mjs +87 -2
  230. package/dist/index75.mjs +23 -229
  231. package/dist/index76.mjs +8 -5
  232. package/dist/index77.mjs +66 -125
  233. package/dist/index78.mjs +3 -67
  234. package/dist/index79.mjs +2 -87
  235. package/dist/index8.mjs +103 -73
  236. package/dist/index80.mjs +78 -24
  237. package/dist/index81.mjs +52 -7
  238. package/dist/index82.mjs +5 -74
  239. package/dist/index83.mjs +4 -3
  240. package/dist/index84.mjs +179 -2
  241. package/dist/index85.mjs +49 -79
  242. package/dist/index86.mjs +68 -53
  243. package/dist/index87.mjs +2 -6
  244. package/dist/index88.mjs +5 -4
  245. package/dist/index89.mjs +1123 -168
  246. package/dist/index9.mjs +72 -90
  247. package/dist/index90.mjs +20 -53
  248. package/dist/index91.mjs +55 -69
  249. package/dist/index92.mjs +33 -34
  250. package/dist/index93.mjs +2 -43
  251. package/dist/index94.mjs +34 -2
  252. package/dist/index95.mjs +43 -2
  253. package/dist/index96.mjs +2 -28
  254. package/dist/index97.mjs +2 -18
  255. package/dist/index98.mjs +26 -213
  256. package/dist/index99.mjs +13 -175
  257. package/dist/providers/StorefrontProvider.d.ts.map +1 -1
  258. package/dist/providers/TikTokPixelProvider.d.ts +22 -0
  259. package/dist/providers/TikTokPixelProvider.d.ts.map +1 -0
  260. package/package.json +3 -2
  261. package/src/contexts/CartContext.tsx +17 -6
  262. package/src/index.ts +5 -0
  263. package/src/providers/StorefrontProvider.tsx +11 -8
  264. package/src/providers/TikTokPixelProvider.tsx +226 -0
@@ -0,0 +1,226 @@
1
+ 'use client';
2
+
3
+ import React, {
4
+ createContext,
5
+ useContext,
6
+ useEffect,
7
+ useState,
8
+ type ReactNode,
9
+ } from 'react';
10
+
11
+ interface TikTokPixelContextType {
12
+ track: (event: string, data?: Record<string, unknown>, eventID?: string) => void;
13
+ trackPageView: () => void;
14
+ trackProductView: (
15
+ productId: string,
16
+ productName: string,
17
+ price: number,
18
+ eventID?: string
19
+ ) => void;
20
+ trackAddToCart: (
21
+ productId: string,
22
+ productName: string,
23
+ price: number,
24
+ quantity: number,
25
+ eventID?: string
26
+ ) => void;
27
+ trackInitiateCheckout: (cartTotal: number, itemCount: number, eventID?: string) => void;
28
+ trackPurchase: (
29
+ orderTotal: number,
30
+ currency: string,
31
+ orderId: string,
32
+ items: Array<{ id: string; quantity: number; item_price: number }>,
33
+ eventID?: string
34
+ ) => void;
35
+ }
36
+
37
+ const TikTokPixelContext = createContext<TikTokPixelContextType | undefined>(undefined);
38
+
39
+ interface TikTokPixelProviderProps {
40
+ children: ReactNode;
41
+ pixelId?: string;
42
+ debug?: boolean;
43
+ }
44
+
45
+ let ttqInstance: any = null;
46
+
47
+ export function TikTokPixelProvider({
48
+ children,
49
+ pixelId,
50
+ debug = false,
51
+ }: TikTokPixelProviderProps) {
52
+ const [isInitialized, setIsInitialized] = useState(false);
53
+
54
+ useEffect(() => {
55
+ // Only run on client side
56
+ if (typeof window === 'undefined') return;
57
+ if (!pixelId) {
58
+ if (debug) {
59
+ console.log('TikTok Pixel ID not provided. Tracking disabled.');
60
+ }
61
+ return;
62
+ }
63
+
64
+ // Initialize TikTok Pixel
65
+ const initTikTokPixel = async () => {
66
+ try {
67
+ // Dynamically import tiktok-pixel to avoid SSR issues
68
+ const TikTokPixel = (await import('tiktok-pixel')).default;
69
+
70
+ // Initialize pixel
71
+ TikTokPixel.init(pixelId, {}, { debug });
72
+
73
+ // Track initial page view
74
+ TikTokPixel.pageView();
75
+
76
+ ttqInstance = TikTokPixel;
77
+ setIsInitialized(true);
78
+
79
+ if (debug) {
80
+ console.log('TikTok Pixel initialized:', pixelId);
81
+ }
82
+ } catch (error) {
83
+ console.error('Failed to initialize TikTok Pixel:', error);
84
+ }
85
+ };
86
+
87
+ initTikTokPixel();
88
+ }, [pixelId, debug]);
89
+
90
+ const track = (event: string, data?: Record<string, unknown>, eventID?: string) => {
91
+ if (!isInitialized || !ttqInstance) {
92
+ if (debug) {
93
+ console.log('TikTok Pixel not initialized. Event not tracked:', event);
94
+ }
95
+ return;
96
+ }
97
+
98
+ try {
99
+ const eventData = eventID ? { ...data, event_id: eventID } : data;
100
+ ttqInstance.track(event, eventData);
101
+
102
+ if (debug) {
103
+ console.log('TikTok Pixel tracked event:', event, eventData);
104
+ }
105
+ } catch (error) {
106
+ console.error('Failed to track TikTok Pixel event:', error);
107
+ }
108
+ };
109
+
110
+ const trackPageView = () => {
111
+ if (!isInitialized || !ttqInstance) return;
112
+
113
+ try {
114
+ ttqInstance.pageView();
115
+
116
+ if (debug) {
117
+ console.log('TikTok Pixel tracked page view');
118
+ }
119
+ } catch (error) {
120
+ console.error('Failed to track TikTok Pixel page view:', error);
121
+ }
122
+ };
123
+
124
+ const trackProductView = (
125
+ productId: string,
126
+ productName: string,
127
+ price: number,
128
+ eventID?: string
129
+ ) => {
130
+ track(
131
+ 'ViewContent',
132
+ {
133
+ content_type: 'product',
134
+ content_id: productId,
135
+ content_name: productName,
136
+ price: price,
137
+ currency: 'NGN',
138
+ },
139
+ eventID
140
+ );
141
+ };
142
+
143
+ const trackAddToCart = (
144
+ productId: string,
145
+ productName: string,
146
+ price: number,
147
+ quantity: number,
148
+ eventID?: string
149
+ ) => {
150
+ track(
151
+ 'AddToCart',
152
+ {
153
+ content_type: 'product',
154
+ content_id: productId,
155
+ content_name: productName,
156
+ price: price,
157
+ quantity: quantity,
158
+ currency: 'NGN',
159
+ },
160
+ eventID
161
+ );
162
+ };
163
+
164
+ const trackInitiateCheckout = (
165
+ cartTotal: number,
166
+ itemCount: number,
167
+ eventID?: string
168
+ ) => {
169
+ track(
170
+ 'InitiateCheckout',
171
+ {
172
+ content_type: 'product',
173
+ value: cartTotal,
174
+ currency: 'NGN',
175
+ num_items: itemCount,
176
+ },
177
+ eventID
178
+ );
179
+ };
180
+
181
+ const trackPurchase = (
182
+ orderTotal: number,
183
+ currency: string,
184
+ orderId: string,
185
+ items: Array<{ id: string; quantity: number; item_price: number }>,
186
+ eventID?: string
187
+ ) => {
188
+ track(
189
+ 'CompletePayment',
190
+ {
191
+ content_type: 'product',
192
+ value: orderTotal,
193
+ currency: currency,
194
+ contents: items.map((item) => ({
195
+ content_id: item.id,
196
+ quantity: item.quantity,
197
+ price: item.item_price,
198
+ })),
199
+ },
200
+ eventID
201
+ );
202
+ };
203
+
204
+ const contextValue: TikTokPixelContextType = {
205
+ track,
206
+ trackPageView,
207
+ trackProductView,
208
+ trackAddToCart,
209
+ trackInitiateCheckout,
210
+ trackPurchase,
211
+ };
212
+
213
+ return (
214
+ <TikTokPixelContext.Provider value={contextValue}>
215
+ {children}
216
+ </TikTokPixelContext.Provider>
217
+ );
218
+ }
219
+
220
+ export function useTikTokPixel(): TikTokPixelContextType {
221
+ const context = useContext(TikTokPixelContext);
222
+ if (context === undefined) {
223
+ throw new Error('useTikTokPixel must be used within a TikTokPixelProvider');
224
+ }
225
+ return context;
226
+ }