@sonordev/site-kit 1.2.7 → 1.2.9

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 (259) hide show
  1. package/README.md +5 -3
  2. package/dist/analytics/index.js +6 -6
  3. package/dist/analytics/index.mjs +2 -2
  4. package/dist/{api-CWtoFJCO.d.mts → api-DTKSHh_w.d.mts} +1 -1
  5. package/dist/{api-CWtoFJCO.d.ts → api-DTKSHh_w.d.ts} +1 -1
  6. package/dist/blog/index.js +10 -10
  7. package/dist/blog/index.js.map +1 -1
  8. package/dist/blog/index.mjs +10 -10
  9. package/dist/blog/index.mjs.map +1 -1
  10. package/dist/blog/server.js +2 -2
  11. package/dist/blog/server.js.map +1 -1
  12. package/dist/blog/server.mjs +2 -2
  13. package/dist/blog/server.mjs.map +1 -1
  14. package/dist/{chunk-7RYCHO6D.mjs → chunk-2RHO4KSK.mjs} +9 -9
  15. package/dist/{chunk-7RYCHO6D.mjs.map → chunk-2RHO4KSK.mjs.map} +1 -1
  16. package/dist/{chunk-EEZCR6E6.js → chunk-2XOW276O.js} +5 -5
  17. package/dist/{chunk-EEZCR6E6.js.map → chunk-2XOW276O.js.map} +1 -1
  18. package/dist/{chunk-JTLOJLWQ.mjs → chunk-36Y7OWES.mjs} +4 -4
  19. package/dist/chunk-36Y7OWES.mjs.map +1 -0
  20. package/dist/{chunk-DQYMKR27.mjs → chunk-47Y3YSES.mjs} +10 -10
  21. package/dist/chunk-47Y3YSES.mjs.map +1 -0
  22. package/dist/{chunk-MV3QN7PW.mjs → chunk-5F7FFUPJ.mjs} +3 -3
  23. package/dist/{chunk-MV3QN7PW.mjs.map → chunk-5F7FFUPJ.mjs.map} +1 -1
  24. package/dist/{chunk-AFAO3TGS.mjs → chunk-5YDPPOUU.mjs} +10 -10
  25. package/dist/chunk-5YDPPOUU.mjs.map +1 -0
  26. package/dist/{chunk-D63MUKZ6.mjs → chunk-6YXRLC6W.mjs} +5 -5
  27. package/dist/chunk-6YXRLC6W.mjs.map +1 -0
  28. package/dist/{chunk-7RF6PVHA.mjs → chunk-7FKPJQVS.mjs} +33 -68
  29. package/dist/chunk-7FKPJQVS.mjs.map +1 -0
  30. package/dist/{chunk-BYLIU6XG.js → chunk-7ROZJDXE.js} +10 -10
  31. package/dist/chunk-7ROZJDXE.js.map +1 -0
  32. package/dist/{chunk-UWE5PCYJ.mjs → chunk-APZMXRI3.mjs} +3 -3
  33. package/dist/chunk-APZMXRI3.mjs.map +1 -0
  34. package/dist/{chunk-622GAQP5.js → chunk-BBITDUZQ.js} +6 -6
  35. package/dist/chunk-BBITDUZQ.js.map +1 -0
  36. package/dist/{chunk-DDKW2FNA.js → chunk-BFJDUTXK.js} +8 -8
  37. package/dist/chunk-BFJDUTXK.js.map +1 -0
  38. package/dist/chunk-C3A5HXHX.mjs +78 -0
  39. package/dist/chunk-C3A5HXHX.mjs.map +1 -0
  40. package/dist/{chunk-XZJOZJB6.js → chunk-CFEOOJUT.js} +12 -12
  41. package/dist/{chunk-XZJOZJB6.js.map → chunk-CFEOOJUT.js.map} +1 -1
  42. package/dist/{chunk-M2T6R7BA.mjs → chunk-DOSSLBNW.mjs} +4 -4
  43. package/dist/chunk-DOSSLBNW.mjs.map +1 -0
  44. package/dist/{chunk-OB7E654K.js → chunk-DY4K6X3A.js} +6 -6
  45. package/dist/chunk-DY4K6X3A.js.map +1 -0
  46. package/dist/{chunk-7UKPRW25.mjs → chunk-EISQ7LJG.mjs} +6 -6
  47. package/dist/chunk-EISQ7LJG.mjs.map +1 -0
  48. package/dist/{chunk-7557OTHW.js → chunk-EUNL6GAL.js} +5 -5
  49. package/dist/chunk-EUNL6GAL.js.map +1 -0
  50. package/dist/{chunk-KUGMH4ZF.js → chunk-G6VGUAK2.js} +4 -4
  51. package/dist/chunk-G6VGUAK2.js.map +1 -0
  52. package/dist/{chunk-XQQWI6WB.js → chunk-GVXZWXQ7.js} +10 -10
  53. package/dist/chunk-GVXZWXQ7.js.map +1 -0
  54. package/dist/{chunk-24277A3Q.mjs → chunk-HF2FWDBJ.mjs} +9 -9
  55. package/dist/chunk-HF2FWDBJ.mjs.map +1 -0
  56. package/dist/{chunk-72MQFHYJ.js → chunk-IFAW7JFO.js} +16 -16
  57. package/dist/chunk-IFAW7JFO.js.map +1 -0
  58. package/dist/{chunk-P3UWIUJS.mjs → chunk-IKIJEKU3.mjs} +16 -16
  59. package/dist/chunk-IKIJEKU3.mjs.map +1 -0
  60. package/dist/{chunk-PKN27UMH.mjs → chunk-JIDOXTX2.mjs} +3 -3
  61. package/dist/{chunk-PKN27UMH.mjs.map → chunk-JIDOXTX2.mjs.map} +1 -1
  62. package/dist/{chunk-7FUV73JZ.js → chunk-JM3ZR6LB.js} +9 -9
  63. package/dist/chunk-JM3ZR6LB.js.map +1 -0
  64. package/dist/{chunk-OIIKTGRL.mjs → chunk-JMNSED4O.mjs} +8 -8
  65. package/dist/chunk-JMNSED4O.mjs.map +1 -0
  66. package/dist/chunk-MG23BS36.js +82 -0
  67. package/dist/chunk-MG23BS36.js.map +1 -0
  68. package/dist/{chunk-TFLQX7K7.mjs → chunk-N24BPFF6.mjs} +6 -6
  69. package/dist/chunk-N24BPFF6.mjs.map +1 -0
  70. package/dist/{chunk-LIVWLY2P.js → chunk-PPRAW576.js} +3 -3
  71. package/dist/{chunk-LIVWLY2P.js.map → chunk-PPRAW576.js.map} +1 -1
  72. package/dist/chunk-QETK4P5G.mjs +142 -0
  73. package/dist/chunk-QETK4P5G.mjs.map +1 -0
  74. package/dist/{chunk-W4PALSGM.js → chunk-REMHGWXT.js} +3 -3
  75. package/dist/chunk-REMHGWXT.js.map +1 -0
  76. package/dist/{chunk-DW5UJKHH.js → chunk-RMOL4TZ6.js} +8 -8
  77. package/dist/chunk-RMOL4TZ6.js.map +1 -0
  78. package/dist/{chunk-KKU3K7RG.js → chunk-SLB5V4RT.js} +33 -67
  79. package/dist/chunk-SLB5V4RT.js.map +1 -0
  80. package/dist/{chunk-K23A4G76.mjs → chunk-SQSBAPWA.mjs} +8 -8
  81. package/dist/chunk-SQSBAPWA.mjs.map +1 -0
  82. package/dist/{chunk-WECQ6KOB.js → chunk-TG46LJFB.js} +4 -4
  83. package/dist/chunk-TG46LJFB.js.map +1 -0
  84. package/dist/{chunk-43GBM4SX.js → chunk-TKQLH33E.js} +3 -3
  85. package/dist/chunk-TKQLH33E.js.map +1 -0
  86. package/dist/{chunk-UYFDNX2F.js → chunk-TLHRV3LZ.js} +5 -5
  87. package/dist/chunk-TLHRV3LZ.js.map +1 -0
  88. package/dist/{chunk-6ZCISNAB.mjs → chunk-UPR5FEIO.mjs} +3 -3
  89. package/dist/chunk-UPR5FEIO.mjs.map +1 -0
  90. package/dist/chunk-VTECURKB.js +144 -0
  91. package/dist/chunk-VTECURKB.js.map +1 -0
  92. package/dist/{chunk-GCJXQ4AG.mjs → chunk-VZMDH3R4.mjs} +5 -5
  93. package/dist/chunk-VZMDH3R4.mjs.map +1 -0
  94. package/dist/{chunk-LBVWVP72.js → chunk-X4J33XQD.js} +7 -7
  95. package/dist/chunk-X4J33XQD.js.map +1 -0
  96. package/dist/{chunk-QXV4667R.mjs → chunk-XFOL6JDF.mjs} +5 -5
  97. package/dist/chunk-XFOL6JDF.mjs.map +1 -0
  98. package/dist/cli/index.js +80 -91
  99. package/dist/cli/index.js.map +1 -1
  100. package/dist/cli/index.mjs +76 -87
  101. package/dist/cli/index.mjs.map +1 -1
  102. package/dist/cms/index.d.mts +139 -0
  103. package/dist/cms/index.d.ts +139 -0
  104. package/dist/cms/index.js +409 -0
  105. package/dist/cms/index.js.map +1 -0
  106. package/dist/cms/index.mjs +388 -0
  107. package/dist/cms/index.mjs.map +1 -0
  108. package/dist/cms/server.d.mts +47 -0
  109. package/dist/cms/server.d.ts +47 -0
  110. package/dist/cms/server.js +21 -0
  111. package/dist/{server-api-GJPNRYUP.js.map → cms/server.js.map} +1 -1
  112. package/dist/cms/server.mjs +4 -0
  113. package/dist/{server-api-EWXKOQZA.mjs.map → cms/server.mjs.map} +1 -1
  114. package/dist/commerce/index.js +42 -42
  115. package/dist/commerce/index.mjs +1 -1
  116. package/dist/commerce/server.d.mts +1 -1
  117. package/dist/commerce/server.d.ts +1 -1
  118. package/dist/commerce/server.js.map +1 -1
  119. package/dist/commerce/server.mjs.map +1 -1
  120. package/dist/config/index.js +1 -1
  121. package/dist/config/index.js.map +1 -1
  122. package/dist/config/index.mjs +1 -1
  123. package/dist/config/index.mjs.map +1 -1
  124. package/dist/engage/index.js +4 -4
  125. package/dist/engage/index.mjs +1 -1
  126. package/dist/forms/index.js +5 -5
  127. package/dist/forms/index.js.map +1 -1
  128. package/dist/forms/index.mjs +5 -5
  129. package/dist/forms/index.mjs.map +1 -1
  130. package/dist/generators-DOFWGRXS.js +37 -0
  131. package/dist/{generators-DTMO36DV.js.map → generators-DOFWGRXS.js.map} +1 -1
  132. package/dist/generators-R62APO62.mjs +4 -0
  133. package/dist/{generators-2XKQMPKH.mjs.map → generators-R62APO62.mjs.map} +1 -1
  134. package/dist/images/index.d.mts +1 -1
  135. package/dist/images/index.d.ts +1 -1
  136. package/dist/images/index.js +11 -11
  137. package/dist/images/index.mjs +2 -2
  138. package/dist/images/server.d.mts +3 -3
  139. package/dist/images/server.d.ts +3 -3
  140. package/dist/images/server.js +4 -4
  141. package/dist/images/server.mjs +1 -1
  142. package/dist/index.d.mts +5 -5
  143. package/dist/index.d.ts +5 -5
  144. package/dist/index.js +81 -81
  145. package/dist/index.js.map +1 -1
  146. package/dist/index.mjs +28 -28
  147. package/dist/index.mjs.map +1 -1
  148. package/dist/layout/client.d.mts +18 -0
  149. package/dist/layout/client.d.ts +18 -0
  150. package/dist/layout/client.js +18 -0
  151. package/dist/layout/client.js.map +1 -0
  152. package/dist/layout/client.mjs +9 -0
  153. package/dist/layout/client.mjs.map +1 -0
  154. package/dist/layout/index.d.mts +4 -27
  155. package/dist/layout/index.d.ts +4 -27
  156. package/dist/layout/index.js +15 -145
  157. package/dist/layout/index.js.map +1 -1
  158. package/dist/layout/index.mjs +11 -141
  159. package/dist/layout/index.mjs.map +1 -1
  160. package/dist/llms/index.js +12 -12
  161. package/dist/llms/index.mjs +2 -2
  162. package/dist/manifest/index.js +4 -4
  163. package/dist/manifest/index.js.map +1 -1
  164. package/dist/manifest/index.mjs +3 -3
  165. package/dist/manifest/index.mjs.map +1 -1
  166. package/dist/middleware/index.js +3 -3
  167. package/dist/middleware/index.mjs +2 -2
  168. package/dist/{migrator-2MQHOFDQ.mjs → migrator-3WQB3KQ2.mjs} +3 -3
  169. package/dist/{migrator-2MQHOFDQ.mjs.map → migrator-3WQB3KQ2.mjs.map} +1 -1
  170. package/dist/migrator-HFVQYK5R.js +37 -0
  171. package/dist/{migrator-THJCF6MZ.js.map → migrator-HFVQYK5R.js.map} +1 -1
  172. package/dist/redirects/index.d.mts +2 -2
  173. package/dist/redirects/index.d.ts +2 -2
  174. package/dist/redirects/index.js +6 -6
  175. package/dist/redirects/index.mjs +2 -2
  176. package/dist/reputation/index.js +4 -4
  177. package/dist/reputation/index.mjs +1 -1
  178. package/dist/robots/index.d.mts +1 -1
  179. package/dist/robots/index.d.ts +1 -1
  180. package/dist/robots/index.js +3 -3
  181. package/dist/robots/index.js.map +1 -1
  182. package/dist/robots/index.mjs +2 -2
  183. package/dist/robots/index.mjs.map +1 -1
  184. package/dist/seo/index.d.mts +1 -1
  185. package/dist/seo/index.d.ts +1 -1
  186. package/dist/seo/index.js +43 -43
  187. package/dist/seo/index.js.map +1 -1
  188. package/dist/seo/index.mjs +6 -6
  189. package/dist/seo/index.mjs.map +1 -1
  190. package/dist/seo/register-sitemap-cli.js +18 -18
  191. package/dist/seo/register-sitemap-cli.js.map +1 -1
  192. package/dist/seo/register-sitemap-cli.mjs +18 -18
  193. package/dist/seo/register-sitemap-cli.mjs.map +1 -1
  194. package/dist/seo/server.d.mts +1 -1
  195. package/dist/seo/server.d.ts +1 -1
  196. package/dist/seo/server.js +10 -10
  197. package/dist/seo/server.js.map +1 -1
  198. package/dist/seo/server.mjs +8 -8
  199. package/dist/seo/server.mjs.map +1 -1
  200. package/dist/{server-api-GJPNRYUP.js → server-api-C5JXIROA.js} +21 -21
  201. package/dist/server-api-C5JXIROA.js.map +1 -0
  202. package/dist/{server-api-EWXKOQZA.mjs → server-api-HTSLBT6F.mjs} +3 -3
  203. package/dist/server-api-HTSLBT6F.mjs.map +1 -0
  204. package/dist/setup/client.js +7 -7
  205. package/dist/setup/client.mjs +2 -2
  206. package/dist/setup/index.js +9 -9
  207. package/dist/setup/index.mjs +3 -3
  208. package/dist/setup/server.js +2 -2
  209. package/dist/setup/server.mjs +1 -1
  210. package/dist/site-config/index.d.mts +1 -1
  211. package/dist/site-config/index.d.ts +1 -1
  212. package/dist/site-config/index.js +3 -3
  213. package/dist/site-config/index.mjs +1 -1
  214. package/dist/sitemap/index.d.mts +2 -2
  215. package/dist/sitemap/index.d.ts +2 -2
  216. package/dist/sitemap/index.js +10 -10
  217. package/dist/sitemap/index.js.map +1 -1
  218. package/dist/sitemap/index.mjs +8 -8
  219. package/dist/sitemap/index.mjs.map +1 -1
  220. package/dist/types-5RCOK10v.d.mts +25 -0
  221. package/dist/types-5RCOK10v.d.ts +25 -0
  222. package/dist/types-BG-x8yhh.d.mts +106 -0
  223. package/dist/types-BG-x8yhh.d.ts +106 -0
  224. package/package.json +13 -1
  225. package/dist/chunk-24277A3Q.mjs.map +0 -1
  226. package/dist/chunk-43GBM4SX.js.map +0 -1
  227. package/dist/chunk-622GAQP5.js.map +0 -1
  228. package/dist/chunk-6ZCISNAB.mjs.map +0 -1
  229. package/dist/chunk-72MQFHYJ.js.map +0 -1
  230. package/dist/chunk-7557OTHW.js.map +0 -1
  231. package/dist/chunk-7FUV73JZ.js.map +0 -1
  232. package/dist/chunk-7RF6PVHA.mjs.map +0 -1
  233. package/dist/chunk-7UKPRW25.mjs.map +0 -1
  234. package/dist/chunk-AFAO3TGS.mjs.map +0 -1
  235. package/dist/chunk-BYLIU6XG.js.map +0 -1
  236. package/dist/chunk-D63MUKZ6.mjs.map +0 -1
  237. package/dist/chunk-DDKW2FNA.js.map +0 -1
  238. package/dist/chunk-DQYMKR27.mjs.map +0 -1
  239. package/dist/chunk-DW5UJKHH.js.map +0 -1
  240. package/dist/chunk-GCJXQ4AG.mjs.map +0 -1
  241. package/dist/chunk-JTLOJLWQ.mjs.map +0 -1
  242. package/dist/chunk-K23A4G76.mjs.map +0 -1
  243. package/dist/chunk-KKU3K7RG.js.map +0 -1
  244. package/dist/chunk-KUGMH4ZF.js.map +0 -1
  245. package/dist/chunk-LBVWVP72.js.map +0 -1
  246. package/dist/chunk-M2T6R7BA.mjs.map +0 -1
  247. package/dist/chunk-OB7E654K.js.map +0 -1
  248. package/dist/chunk-OIIKTGRL.mjs.map +0 -1
  249. package/dist/chunk-P3UWIUJS.mjs.map +0 -1
  250. package/dist/chunk-QXV4667R.mjs.map +0 -1
  251. package/dist/chunk-TFLQX7K7.mjs.map +0 -1
  252. package/dist/chunk-UWE5PCYJ.mjs.map +0 -1
  253. package/dist/chunk-UYFDNX2F.js.map +0 -1
  254. package/dist/chunk-W4PALSGM.js.map +0 -1
  255. package/dist/chunk-WECQ6KOB.js.map +0 -1
  256. package/dist/chunk-XQQWI6WB.js.map +0 -1
  257. package/dist/generators-2XKQMPKH.mjs +0 -4
  258. package/dist/generators-DTMO36DV.js +0 -33
  259. package/dist/migrator-THJCF6MZ.js +0 -37
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/commerce/utils.ts","../src/commerce/api.ts","../src/commerce/OfferingCard.tsx","../src/commerce/OfferingList.tsx","../src/commerce/EventTile.tsx","../src/commerce/UpcomingEvents.tsx","../src/commerce/ProductEmbed.tsx","../src/commerce/ProductDetail.tsx","../src/commerce/ProductGrid.tsx","../src/commerce/ProductPage.tsx","../src/commerce/EventEmbed.tsx","../src/commerce/CheckoutForm.tsx","../src/commerce/RegistrationForm.tsx","../src/commerce/CalendarView.tsx","../src/commerce/EventModal.tsx","../src/commerce/useEventModal.ts","../src/commerce/EventCalendar.tsx","../src/commerce/EventsWidget.tsx"],"names":["body","jsxs","jsx","useState","useEffect","React","useMemo","Fragment","formatTime","useCallback"],"mappings":"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","file":"chunk-D63MUKZ6.mjs","sourcesContent":["/**\n * @sonordev/site-kit/commerce - Utility functions\n */\n\nexport function formatPrice(amount: number, currency: string = 'USD'): string {\n return new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency,\n }).format(amount)\n}\n\nexport function formatDate(dateString: string): string {\n const date = new Date(dateString)\n return new Intl.DateTimeFormat('en-US', {\n weekday: 'short',\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n }).format(date)\n}\n\nexport function formatDateTime(dateString: string): string {\n const date = new Date(dateString)\n return new Intl.DateTimeFormat('en-US', {\n weekday: 'short',\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n hour: 'numeric',\n minute: '2-digit',\n }).format(date)\n}\n\nexport function formatTime(dateString: string): string {\n const date = new Date(dateString)\n return new Intl.DateTimeFormat('en-US', {\n hour: 'numeric',\n minute: '2-digit',\n }).format(date)\n}\n\nexport function formatDateRange(startDate: string, endDate?: string): string {\n const start = new Date(startDate)\n const end = endDate ? new Date(endDate) : null\n \n const startFormatted = formatDateTime(startDate)\n \n if (!end) return startFormatted\n \n // Same day\n if (start.toDateString() === end.toDateString()) {\n return `${startFormatted} - ${formatTime(endDate!)}`\n }\n \n return `${startFormatted} - ${formatDateTime(endDate!)}`\n}\n\nexport function getRelativeTimeUntil(dateString: string): string {\n const date = new Date(dateString)\n const now = new Date()\n const diffMs = date.getTime() - now.getTime()\n const diffDays = Math.floor(diffMs / (1000 * 60 * 60 * 24))\n \n if (diffDays < 0) return 'Past'\n if (diffDays === 0) return 'Today'\n if (diffDays === 1) return 'Tomorrow'\n if (diffDays < 7) return `In ${diffDays} days`\n if (diffDays < 30) {\n const weeks = Math.floor(diffDays / 7)\n return `In ${weeks} week${weeks > 1 ? 's' : ''}`\n }\n if (diffDays < 365) {\n const months = Math.floor(diffDays / 30)\n return `In ${months} month${months > 1 ? 's' : ''}`\n }\n return formatDate(dateString)\n}\n\nexport function getSpotsRemaining(\n capacity: number | null | undefined,\n registrations: number = 0\n): number | null {\n if (capacity == null) return null\n return Math.max(0, capacity - registrations)\n}\n\nexport function isEventSoldOut(\n capacity: number | null | undefined,\n registrations: number = 0\n): boolean {\n const remaining = getSpotsRemaining(capacity, registrations)\n return remaining !== null && remaining <= 0\n}\n\nexport function getOfferingUrl(\n slug: string, \n type: string,\n basePaths?: {\n product?: string\n service?: string\n event?: string\n class?: string\n }\n): string {\n const defaults = {\n product: '/shop',\n service: '/services',\n event: '/events',\n class: '/classes',\n }\n const paths = { ...defaults, ...basePaths }\n const base = paths[type as keyof typeof paths] || '/offerings'\n return `${base}/${slug}`\n}\n","/**\n * @sonordev/site-kit/commerce - Commerce API\n * \n * API functions for fetching offerings, submitting orders, and registrations.\n * All data goes through Portal API with API key auth - never Supabase directly.\n */\n\nimport type { \n CommerceOffering, \n FetchOfferingsOptions,\n FetchEventsOptions,\n CheckoutCustomer,\n CheckoutResult,\n} from './types'\n\n// ============================================\n// API Config Helpers\n// ============================================\n\nfunction getApiConfig() {\n const apiUrl = typeof window !== 'undefined' \n ? (window as any).__SITE_KIT_API_URL__ || 'https://api.uptrademedia.com'\n : 'https://api.uptrademedia.com'\n const apiKey = typeof window !== 'undefined' \n ? (window as any).__SITE_KIT_API_KEY__ || ''\n : ''\n return { apiUrl, apiKey }\n}\n\nfunction getApiUrl(): string {\n return getApiConfig().apiUrl\n}\n\nfunction getApiKey(): string {\n return getApiConfig().apiKey\n}\n\nasync function apiPost<T>(endpoint: string, body: Record<string, any> = {}): Promise<T | null> {\n const { apiUrl, apiKey } = getApiConfig()\n \n if (!apiKey) {\n console.error('[Commerce] No API key configured')\n return null\n }\n \n try {\n const response = await fetch(`${apiUrl}${endpoint}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-key': apiKey,\n },\n body: JSON.stringify(body),\n })\n \n if (!response.ok) {\n const text = await response.text()\n let body: unknown = null\n try {\n body = text ? JSON.parse(text) : null\n } catch {\n body = text\n }\n console.error(`[Commerce] API error:`, response.status, response.statusText || 'Unknown', body)\n return null\n }\n \n return await response.json()\n } catch (error) {\n console.error('[Commerce] Network error:', error)\n return null\n }\n}\n\n// ============================================\n// Fetch Offerings\n// ============================================\n\nexport async function fetchOfferings(\n options: FetchOfferingsOptions = {}\n): Promise<CommerceOffering[]> {\n const result = await apiPost<{ offerings: CommerceOffering[]; total: number }>(\n '/api/public/commerce/offerings',\n {\n type: options.type,\n category: options.category,\n status: options.status || 'active',\n limit: options.limit,\n offset: options.offset,\n orderBy: options.orderBy || 'sort_order',\n order: options.order || 'asc',\n }\n )\n \n return result?.offerings || []\n}\n\nexport async function fetchOffering(slug: string): Promise<CommerceOffering | null> {\n const result = await apiPost<{ offering?: CommerceOffering } | CommerceOffering>(\n '/api/public/commerce/offering',\n { slug }\n )\n if (!result) return null\n // Portal returns offering spread at top level; some APIs return { offering }\n const offering = (result as { offering?: CommerceOffering }).offering ?? result\n return (offering as CommerceOffering)?.id ? (offering as CommerceOffering) : null\n}\n\nexport async function fetchLatestOffering(\n type?: string,\n category?: string\n): Promise<CommerceOffering | null> {\n if (type === 'product') {\n const { products } = await fetchProductsPublic({\n category,\n limit: 1,\n orderBy: 'created_at',\n order: 'desc',\n })\n return products[0] || null\n }\n const result = await apiPost<{ offerings: CommerceOffering[] }>(\n '/api/public/commerce/offerings',\n {\n type,\n category,\n status: 'active',\n limit: 1,\n orderBy: 'created_at',\n order: 'desc',\n }\n )\n return result?.offerings?.[0] || null\n}\n\n// ============================================\n// Fetch Events (with schedules)\n// ============================================\n\nexport async function fetchUpcomingEvents(\n options: FetchEventsOptions = {}\n): Promise<CommerceOffering[]> {\n const result = await apiPost<{ events: CommerceOffering[]; total: number }>(\n '/api/public/commerce/events',\n {\n type: 'event',\n category: options.category,\n limit: options.limit,\n includePast: options.past,\n }\n )\n \n return result?.events || []\n}\n\nexport async function fetchNextEvent(category?: string): Promise<CommerceOffering | null> {\n const events = await fetchUpcomingEvents({ limit: 1, category })\n return events[0] || null\n}\n\n// ============================================\n// Products\n// ============================================\n\nexport async function fetchProducts(\n options: Omit<FetchOfferingsOptions, 'type'> = {}\n): Promise<CommerceOffering[]> {\n const { products } = await fetchProductsPublic({\n category: options.category,\n limit: options.limit,\n offset: options.offset,\n orderBy: options.orderBy || 'sort_order',\n order: options.order || 'asc',\n search: (options as any).search,\n })\n return products\n}\n\nexport async function fetchServices(\n options: Omit<FetchOfferingsOptions, 'type'> = {}\n): Promise<CommerceOffering[]> {\n return fetchOfferings({ ...options, type: 'service' })\n}\n\n/**\n * Fetch products via public API\n */\nexport async function fetchProductsPublic(\n options: {\n category?: string\n limit?: number\n offset?: number\n orderBy?: 'name' | 'price' | 'created_at' | 'sort_order'\n order?: 'asc' | 'desc'\n search?: string\n } = {}\n): Promise<{ products: CommerceOffering[]; total: number }> {\n const result = await apiPost<{ products: CommerceOffering[]; total: number }>(\n '/api/public/commerce/products',\n options\n )\n \n return {\n products: result?.products || [],\n total: result?.total || 0,\n }\n}\n\n/**\n * Fetch single product by slug\n */\nexport async function fetchProductBySlug(slug: string): Promise<CommerceOffering | null> {\n const result = await apiPost<{ product: CommerceOffering }>(\n '/api/public/commerce/product',\n { slug }\n )\n \n return result?.product || null\n}\n\n/**\n * Fetch product categories\n */\nexport async function fetchCategories(): Promise<{ id: string; name: string; slug: string }[]> {\n const result = await apiPost<{ categories: { id: string; name: string; slug: string }[] }>(\n '/api/public/commerce/categories',\n {}\n )\n \n return result?.categories || []\n}\n\n// ============================================\n// Shipping (Shippo)\n// ============================================\n\nexport interface ShippingAddress {\n street1: string\n street2?: string\n city: string\n state: string\n zip: string\n country?: string\n name?: string\n phone?: string\n}\n\nexport interface ShippingRate {\n carrier: string\n service: string\n amount: string\n currency: string\n estimatedDays?: number\n objectId?: string\n}\n\nexport interface ValidateAddressResult {\n isValid: boolean\n normalized?: { street1: string; street2?: string; city: string; state: string; zip: string; country: string }\n messages?: string[]\n}\n\n/**\n * Fetch shipping rates for checkout (when shipping is enabled)\n */\nexport async function fetchShippingRates(\n shippingAddress: ShippingAddress,\n offerings: Array<{ offering_id: string; quantity?: number }>\n): Promise<ShippingRate[]> {\n const result = await apiPost<ShippingRate[]>(\n '/api/public/commerce/shipping-rates',\n {\n shippingAddress: {\n street1: shippingAddress.street1,\n street2: shippingAddress.street2,\n city: shippingAddress.city,\n state: shippingAddress.state,\n zip: shippingAddress.zip,\n country: shippingAddress.country || 'US',\n },\n offerings,\n }\n )\n return Array.isArray(result) ? result : []\n}\n\n/**\n * Validate a shipping address before checkout\n */\nexport async function validateAddress(address: Omit<ShippingAddress, 'name' | 'phone'>): Promise<ValidateAddressResult> {\n const result = await apiPost<ValidateAddressResult>(\n '/api/public/commerce/validate-address',\n {\n street1: address.street1,\n street2: address.street2,\n city: address.city,\n state: address.state,\n zip: address.zip,\n country: address.country || 'US',\n }\n )\n return result || { isValid: true, messages: [] }\n}\n\n// ============================================\n// Payment Processor Info\n// ============================================\n\n/**\n * Fetch the active payment processor for the current project.\n * Returns 'stripe' | 'square' | null.\n */\nexport async function fetchActiveProcessor(): Promise<'stripe' | 'square' | null> {\n const { apiUrl, apiKey } = getApiConfig()\n \n if (!apiKey) return null\n \n try {\n const response = await fetch(`${apiUrl}/api/public/commerce/processor`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-key': apiKey,\n },\n body: JSON.stringify({}),\n })\n \n if (!response.ok) return null\n const data = await response.json()\n return data?.processor || null\n } catch {\n return null\n }\n}\n\n// ============================================\n// Checkout & Registration\n// ============================================\n\nexport async function registerForEvent(\n eventId: string,\n scheduleId: string | undefined,\n customer: CheckoutCustomer\n): Promise<CheckoutResult> {\n const { apiUrl, apiKey } = getApiConfig()\n \n // Get analytics session ID for conversion tracking\n const analyticsSessionId = typeof sessionStorage !== 'undefined' \n ? sessionStorage.getItem('_uptrade_sid') \n : null\n \n try {\n const response = await fetch(`${apiUrl}/api/public/commerce/register`, {\n method: 'POST',\n headers: { \n 'Content-Type': 'application/json',\n 'x-api-key': apiKey,\n },\n body: JSON.stringify({\n offeringId: eventId,\n scheduleId,\n customer,\n analyticsSessionId, // Pass for conversion tracking\n }),\n })\n \n if (!response.ok) {\n const error = await response.json()\n return { success: false, error: error.message || 'Registration failed' }\n }\n \n const result = await response.json()\n \n // Note: Conversion is auto-logged via database trigger when commerce_sales is created\n \n return { \n success: true, \n sale_id: result.sale_id,\n confirmation_number: result.confirmation_number,\n }\n } catch (error) {\n return { success: false, error: 'Network error. Please try again.' }\n }\n}\n\nexport interface CreateCheckoutOptions {\n offeringId: string\n variantId?: string\n scheduleId?: string\n quantity?: number\n customer?: CheckoutCustomer\n successUrl?: string\n cancelUrl?: string\n /** Square card nonce from Web Payments SDK for inline card collection (no redirect) */\n sourceId?: string\n /** Shipping address (required for physical products when shipping_enabled) */\n shippingAddress?: ShippingAddress\n /** Selected shipping carrier from rates */\n shippingCarrier?: string\n /** Selected shipping service from rates */\n shippingService?: string\n /** Shipping cost in dollars (from selected rate) */\n shippingCost?: number\n}\n\nexport interface ProcessorConfig {\n processor: 'stripe' | 'square' | null\n squareAppId?: string\n squareLocationId?: string\n squareEnvironment?: string\n stripePublishableKey?: string\n /** Whether shipping is enabled for this project */\n shipping_enabled?: boolean\n}\n\n/**\n * Fetch client-side SDK config for the active payment processor.\n * Returns public-safe values (app IDs, location IDs) for SDK initialization.\n */\nexport async function fetchProcessorConfig(): Promise<ProcessorConfig | null> {\n const { apiUrl, apiKey } = getApiConfig()\n if (!apiKey) return null\n\n try {\n const response = await fetch(`${apiUrl}/api/public/commerce/processor-config`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-key': apiKey,\n },\n body: JSON.stringify({}),\n })\n if (!response.ok) return null\n return await response.json()\n } catch {\n return null\n }\n}\n\n/**\n * Create a checkout session for a product or service\n * Supports both Stripe and Square based on project configuration\n */\nexport async function createCheckoutSession(\n optionsOrOfferingId: CreateCheckoutOptions | string,\n legacyOptions?: Omit<CreateCheckoutOptions, 'offeringId'>\n): Promise<CheckoutResult> {\n const { apiUrl, apiKey } = getApiConfig()\n\n // Support both calling conventions\n const options: CreateCheckoutOptions = typeof optionsOrOfferingId === 'string'\n ? { offeringId: optionsOrOfferingId, ...legacyOptions }\n : optionsOrOfferingId\n \n // Get analytics session ID for conversion tracking\n const analyticsSessionId = typeof sessionStorage !== 'undefined' \n ? sessionStorage.getItem('_uptrade_sid') \n : null\n \n try {\n const response = await fetch(`${apiUrl}/api/public/commerce/checkout`, {\n method: 'POST',\n headers: { \n 'Content-Type': 'application/json',\n 'x-api-key': apiKey,\n },\n body: JSON.stringify({\n ...options,\n analyticsSessionId, // Pass for conversion tracking\n successUrl: options.successUrl || (typeof window !== 'undefined' ? window.location.href : ''),\n cancelUrl: options.cancelUrl || (typeof window !== 'undefined' ? window.location.href : ''),\n }),\n })\n \n if (!response.ok) {\n const text = await response.text()\n let body: Record<string, unknown> = {}\n try {\n body = JSON.parse(text) as Record<string, unknown>\n } catch {\n // non-JSON response (e.g. HTML error page)\n }\n // Nest: { message } or { statusCode, message }; or wrapped: { success, error: { message } }\n const errObj = body?.error && typeof body.error === 'object' ? (body.error as Record<string, unknown>) : body\n const message =\n (typeof body?.message === 'string' ? body.message : null) ||\n (typeof errObj?.message === 'string' ? errObj.message : null) ||\n (typeof errObj?.detail === 'string' ? errObj.detail : null) ||\n (typeof body?.error === 'string' ? body.error : null) ||\n 'Payment could not be processed. Please try again or use a different card.'\n if (typeof console !== 'undefined' && console.error) {\n console.error('[Commerce] Checkout failed:', response.status, message, body)\n }\n return { success: false, error: message }\n }\n \n const result = await response.json()\n \n // Note: Conversion is auto-logged via database trigger when commerce_sales is created\n \n return { \n success: true, \n payment_url: result.checkout_url,\n checkout_url: result.checkout_url,\n sale_id: result.sale_id,\n confirmation_number: result.confirmation_number,\n }\n } catch (error) {\n return { success: false, error: 'Network error. Please try again.' }\n }\n}\n","/**\n * @sonordev/site-kit/commerce - OfferingCard\n * \n * Displays a single product, service, event, or class with image, title, price, and CTA.\n */\n\n'use client'\n\nimport React from 'react'\nimport type { OfferingCardProps } from './types'\nimport { formatPrice, formatDate } from './utils'\n\nexport function OfferingCard({\n offering,\n variant = 'card',\n showImage = true,\n showPrice = true,\n showDescription = true,\n showCta = true,\n ctaText,\n onCtaClick,\n className = '',\n imageClassName = '',\n titleClassName = '',\n priceClassName = '',\n descriptionClassName = '',\n ctaClassName = '',\n}: OfferingCardProps) {\n const isEvent = offering.type === 'event' || offering.type === 'class'\n const nextSchedule = offering.schedules?.[0] || (offering as any).next_schedule\n \n // Default CTA text based on type\n const defaultCtaText = {\n product: 'Buy Now',\n service: 'Book Now',\n class: 'Register',\n event: 'Get Tickets',\n subscription: 'Subscribe',\n }[offering.type] || 'View Details'\n \n const handleClick = () => {\n if (onCtaClick) {\n onCtaClick(offering)\n } else if (typeof window !== 'undefined') {\n // Default: navigate to offering page\n const basePath = offering.type === 'event' ? '/events' : \n offering.type === 'product' ? '/shop' : \n '/services'\n window.location.href = `${basePath}/${offering.slug}`\n }\n }\n \n if (variant === 'minimal') {\n return (\n <div className={`site-kit-offering-minimal ${className}`}>\n <h3 className={`site-kit-offering-title ${titleClassName}`}>\n {offering.name}\n </h3>\n {showPrice && offering.price_is_public && offering.price != null && (\n <span className={`site-kit-offering-price ${priceClassName}`}>\n {formatPrice(offering.price, offering.currency)}\n </span>\n )}\n {showCta && (\n <button\n onClick={handleClick}\n className={`site-kit-offering-cta ${ctaClassName}`}\n >\n {ctaText || defaultCtaText}\n </button>\n )}\n </div>\n )\n }\n \n if (variant === 'horizontal') {\n return (\n <div className={`site-kit-offering-horizontal ${className}`} style={{\n display: 'flex',\n gap: '1rem',\n alignItems: 'flex-start',\n }}>\n {showImage && offering.featured_image_url && (\n <img\n src={offering.featured_image_url}\n alt={offering.name}\n className={`site-kit-offering-image ${imageClassName}`}\n style={{\n width: '120px',\n height: '120px',\n objectFit: 'cover',\n borderRadius: '8px',\n }}\n />\n )}\n <div style={{ flex: 1 }}>\n <h3 className={`site-kit-offering-title ${titleClassName}`} style={{\n margin: 0,\n fontSize: '1.125rem',\n fontWeight: 600,\n }}>\n {offering.name}\n </h3>\n \n {isEvent && nextSchedule && (\n <div className=\"site-kit-offering-date\" style={{ \n color: '#666',\n fontSize: '0.875rem',\n marginTop: '0.25rem',\n }}>\n {formatDate(nextSchedule.starts_at)}\n {offering.location && ` • ${offering.location}`}\n </div>\n )}\n \n {showDescription && offering.short_description && (\n <p className={`site-kit-offering-description ${descriptionClassName}`} style={{\n color: '#666',\n margin: '0.5rem 0',\n fontSize: '0.875rem',\n }}>\n {offering.short_description}\n </p>\n )}\n \n <div style={{ display: 'flex', alignItems: 'center', gap: '1rem', marginTop: '0.5rem' }}>\n {showPrice && offering.price_is_public && offering.price != null && (\n <span className={`site-kit-offering-price ${priceClassName}`} style={{\n fontWeight: 600,\n color: '#333',\n }}>\n {formatPrice(offering.price, offering.currency)}\n {offering.compare_at_price && (\n <span style={{ \n textDecoration: 'line-through', \n color: '#999',\n marginLeft: '0.5rem',\n fontWeight: 400,\n }}>\n {formatPrice(offering.compare_at_price, offering.currency)}\n </span>\n )}\n </span>\n )}\n \n {showCta && (\n <button\n onClick={handleClick}\n className={`site-kit-offering-cta ${ctaClassName}`}\n style={{\n padding: '0.5rem 1rem',\n borderRadius: '6px',\n border: 'none',\n background: '#2563eb',\n color: 'white',\n cursor: 'pointer',\n fontWeight: 500,\n }}\n >\n {ctaText || defaultCtaText}\n </button>\n )}\n </div>\n </div>\n </div>\n )\n }\n \n // Default: card variant\n return (\n <div className={`site-kit-offering-card ${className}`} style={{\n borderRadius: '12px',\n overflow: 'hidden',\n boxShadow: '0 1px 3px rgba(0,0,0,0.1)',\n background: 'white',\n }}>\n {showImage && offering.featured_image_url && (\n <div style={{ position: 'relative' }}>\n <img\n src={offering.featured_image_url}\n alt={offering.name}\n className={`site-kit-offering-image ${imageClassName}`}\n style={{\n width: '100%',\n height: '200px',\n objectFit: 'cover',\n }}\n />\n {offering.compare_at_price && offering.price_is_public && (\n <span style={{\n position: 'absolute',\n top: '12px',\n right: '12px',\n background: '#ef4444',\n color: 'white',\n padding: '4px 8px',\n borderRadius: '4px',\n fontSize: '0.75rem',\n fontWeight: 600,\n }}>\n Sale\n </span>\n )}\n </div>\n )}\n \n <div style={{ padding: '1rem' }}>\n {isEvent && nextSchedule && (\n <div className=\"site-kit-offering-date\" style={{ \n color: '#2563eb',\n fontSize: '0.875rem',\n fontWeight: 500,\n marginBottom: '0.25rem',\n }}>\n {formatDate(nextSchedule.starts_at)}\n </div>\n )}\n \n <h3 className={`site-kit-offering-title ${titleClassName}`} style={{\n margin: 0,\n fontSize: '1.125rem',\n fontWeight: 600,\n color: '#111',\n }}>\n {offering.name}\n </h3>\n \n {isEvent && offering.location && (\n <div style={{ color: '#666', fontSize: '0.875rem', marginTop: '0.25rem' }}>\n 📍 {offering.location}\n </div>\n )}\n \n {showDescription && offering.short_description && (\n <p className={`site-kit-offering-description ${descriptionClassName}`} style={{\n color: '#666',\n margin: '0.75rem 0',\n fontSize: '0.875rem',\n lineHeight: 1.5,\n }}>\n {offering.short_description}\n </p>\n )}\n \n <div style={{ \n display: 'flex', \n alignItems: 'center', \n justifyContent: 'space-between',\n marginTop: '1rem',\n }}>\n {showPrice && offering.price_is_public && offering.price != null ? (\n <div className={`site-kit-offering-price ${priceClassName}`}>\n <span style={{ fontWeight: 600, fontSize: '1.25rem', color: '#111' }}>\n {formatPrice(offering.price, offering.currency)}\n </span>\n {offering.compare_at_price && (\n <span style={{ \n textDecoration: 'line-through', \n color: '#999',\n marginLeft: '0.5rem',\n fontSize: '0.875rem',\n }}>\n {formatPrice(offering.compare_at_price, offering.currency)}\n </span>\n )}\n </div>\n ) : (\n <div /> // spacer\n )}\n \n {showCta && (\n <button\n onClick={handleClick}\n className={`site-kit-offering-cta ${ctaClassName}`}\n style={{\n padding: '0.625rem 1.25rem',\n borderRadius: '6px',\n border: 'none',\n background: '#2563eb',\n color: 'white',\n cursor: 'pointer',\n fontWeight: 500,\n fontSize: '0.875rem',\n }}\n >\n {ctaText || defaultCtaText}\n </button>\n )}\n </div>\n </div>\n </div>\n )\n}\n\nexport default OfferingCard\n","/**\n * @sonordev/site-kit/commerce - OfferingList\n * \n * Displays a grid or list of offerings with optional filtering.\n */\n\n'use client'\n\nimport React, { useEffect, useState, useMemo } from 'react'\nimport type { OfferingListProps } from './types'\nimport type { CommerceOffering } from './types'\nimport { OfferingCard } from './OfferingCard'\nimport { fetchOfferings, fetchProductsPublic, fetchUpcomingEvents } from './api'\n\nexport function OfferingList({\n // Data options\n offerings: propOfferings,\n type,\n category,\n limit,\n status = 'active',\n \n // Display options\n layout = 'grid',\n columns = 3,\n cardVariant = 'card',\n showFilters = false,\n emptyMessage = 'No items found.',\n \n // Card options\n showImage = true,\n showPrice = true,\n showDescription = true,\n showCta = true,\n ctaText,\n onCtaClick,\n \n // Styling\n className = '',\n cardClassName = '',\n filterClassName = '',\n \n // Custom render\n renderCard,\n renderEmpty,\n}: OfferingListProps) {\n const [offerings, setOfferings] = useState<CommerceOffering[]>(propOfferings || [])\n const [loading, setLoading] = useState(!propOfferings)\n const [error, setError] = useState<string | null>(null)\n const [activeFilter, setActiveFilter] = useState<string | null>(null)\n \n // Fetch offerings if not provided\n useEffect(() => {\n if (propOfferings) {\n setOfferings(propOfferings)\n return\n }\n \n async function load() {\n setLoading(true)\n setError(null)\n \n try {\n let data: CommerceOffering[]\n \n if (type === 'product' || (Array.isArray(type) && type.includes('product'))) {\n const { products } = await fetchProductsPublic({ category, limit, orderBy: 'sort_order', order: 'asc' })\n data = products\n } else if (type === 'event') {\n data = await fetchUpcomingEvents({ category, limit })\n } else {\n data = await fetchOfferings({ type, category, limit, status })\n }\n \n setOfferings(data)\n } catch (e) {\n console.error('Failed to load offerings:', e)\n setError('Failed to load items.')\n } finally {\n setLoading(false)\n }\n }\n \n load()\n }, [propOfferings, type, category, limit, status])\n \n // Get unique categories for filtering\n const categories = useMemo(() => {\n const cats = offerings\n .filter(o => o.category)\n .map(o => o.category!)\n \n // Unique by ID\n return Array.from(new Map(cats.map(c => [c.id, c])).values())\n }, [offerings])\n \n // Filtered offerings\n const filteredOfferings = useMemo(() => {\n if (!activeFilter) return offerings\n return offerings.filter(o => o.category?.id === activeFilter)\n }, [offerings, activeFilter])\n \n if (loading) {\n return (\n <div className={`site-kit-offerings-loading ${className}`} style={{\n display: 'flex',\n justifyContent: 'center',\n padding: '2rem',\n }}>\n <div style={{\n width: '40px',\n height: '40px',\n border: '3px solid #e5e7eb',\n borderTopColor: '#2563eb',\n borderRadius: '50%',\n animation: 'spin 1s linear infinite',\n }} />\n <style>{`\n @keyframes spin {\n to { transform: rotate(360deg); }\n }\n `}</style>\n </div>\n )\n }\n \n if (error) {\n return (\n <div className={`site-kit-offerings-error ${className}`} style={{\n textAlign: 'center',\n padding: '2rem',\n color: '#ef4444',\n }}>\n {error}\n </div>\n )\n }\n \n if (filteredOfferings.length === 0) {\n if (renderEmpty) {\n return <>{renderEmpty()}</>\n }\n \n return (\n <div className={`site-kit-offerings-empty ${className}`} style={{\n textAlign: 'center',\n padding: '2rem',\n color: '#666',\n }}>\n {emptyMessage}\n </div>\n )\n }\n \n const gridStyles = layout === 'grid' ? {\n display: 'grid',\n gridTemplateColumns: `repeat(${columns}, minmax(0, 1fr))`,\n gap: '1.5rem',\n } : {\n display: 'flex',\n flexDirection: 'column' as const,\n gap: '1rem',\n }\n \n return (\n <div className={`site-kit-offerings ${className}`}>\n {showFilters && categories.length > 1 && (\n <div \n className={`site-kit-offerings-filters ${filterClassName}`}\n style={{\n display: 'flex',\n gap: '0.5rem',\n marginBottom: '1.5rem',\n flexWrap: 'wrap',\n }}\n >\n <button\n onClick={() => setActiveFilter(null)}\n style={{\n padding: '0.5rem 1rem',\n borderRadius: '9999px',\n border: '1px solid',\n borderColor: activeFilter === null ? '#2563eb' : '#e5e7eb',\n background: activeFilter === null ? '#2563eb' : 'white',\n color: activeFilter === null ? 'white' : '#333',\n cursor: 'pointer',\n fontSize: '0.875rem',\n }}\n >\n All\n </button>\n {categories.map(cat => (\n <button\n key={cat.id}\n onClick={() => setActiveFilter(cat.id)}\n style={{\n padding: '0.5rem 1rem',\n borderRadius: '9999px',\n border: '1px solid',\n borderColor: activeFilter === cat.id ? '#2563eb' : '#e5e7eb',\n background: activeFilter === cat.id ? '#2563eb' : 'white',\n color: activeFilter === cat.id ? 'white' : '#333',\n cursor: 'pointer',\n fontSize: '0.875rem',\n }}\n >\n {cat.name}\n </button>\n ))}\n </div>\n )}\n \n <div className=\"site-kit-offerings-grid\" style={gridStyles}>\n {filteredOfferings.map(offering => (\n renderCard ? renderCard(offering) : (\n <OfferingCard\n key={offering.id}\n offering={offering}\n variant={layout === 'list' ? 'horizontal' : cardVariant}\n showImage={showImage}\n showPrice={showPrice}\n showDescription={showDescription}\n showCta={showCta}\n ctaText={ctaText}\n onCtaClick={onCtaClick}\n className={cardClassName}\n />\n )\n ))}\n </div>\n </div>\n )\n}\n\nexport default OfferingList\n","/**\n * @sonordev/site-kit/commerce - EventTile\n * \n * Compact tile for displaying an event with date, title, and registration button.\n * Great for embedding on homepages or sidebars.\n */\n\n'use client'\n\nimport React, { useState } from 'react'\nimport type { EventTileProps, CommerceOffering } from './types'\nimport { formatDate, formatTime, getRelativeTimeUntil, getSpotsRemaining, isEventSoldOut } from './utils'\nimport { registerForEvent, createCheckoutSession } from './api'\n\nexport function EventTile({\n event,\n variant = 'standard',\n showDate = true,\n showTime = true,\n showLocation = true,\n showCapacity = true,\n showPrice = true,\n showCta = true,\n ctaText,\n onRegister,\n onCtaClick,\n className = '',\n dateClassName = '',\n titleClassName = '',\n ctaClassName = '',\n}: EventTileProps) {\n const [loading, setLoading] = useState(false)\n \n const schedule = event.schedules?.[0] || (event as any).next_schedule\n const soldOut = schedule ? isEventSoldOut(schedule.capacity, schedule.current_registrations) : false\n const spotsRemaining = schedule ? getSpotsRemaining(schedule.capacity, schedule.current_registrations) : null\n \n const defaultCtaText = event.price && event.price > 0 ? 'Get Tickets' : 'Register Free'\n \n const handleClick = async () => {\n if (onCtaClick) {\n onCtaClick(event)\n return\n }\n \n // If no schedule, go to event page\n if (!schedule) {\n window.location.href = `/events/${event.slug}`\n return\n }\n \n // If custom onRegister handler\n if (onRegister) {\n onRegister(event, schedule.id)\n return\n }\n \n // Default: create checkout session for paid, or go to registration page\n setLoading(true)\n try {\n if (event.price && event.price > 0) {\n const result = await createCheckoutSession(event.id, { scheduleId: schedule.id })\n if (result.payment_url) {\n window.location.href = result.payment_url\n }\n } else {\n // Free event - go to registration page\n window.location.href = `/events/${event.slug}/register`\n }\n } catch (e) {\n console.error('Registration error:', e)\n } finally {\n setLoading(false)\n }\n }\n \n if (variant === 'compact') {\n return (\n <div className={`site-kit-event-tile-compact ${className}`} style={{\n display: 'flex',\n alignItems: 'center',\n gap: '0.75rem',\n padding: '0.75rem',\n background: 'white',\n borderRadius: '8px',\n boxShadow: '0 1px 2px rgba(0,0,0,0.05)',\n }}>\n {showDate && schedule && (\n <div className={`site-kit-event-date ${dateClassName}`} style={{\n minWidth: '48px',\n textAlign: 'center',\n padding: '0.5rem',\n background: '#f3f4f6',\n borderRadius: '6px',\n }}>\n <div style={{ fontSize: '0.75rem', color: '#666', textTransform: 'uppercase' }}>\n {new Date(schedule.starts_at).toLocaleDateString('en-US', { month: 'short' })}\n </div>\n <div style={{ fontSize: '1.25rem', fontWeight: 700, color: '#111' }}>\n {new Date(schedule.starts_at).getDate()}\n </div>\n </div>\n )}\n \n <div style={{ flex: 1, minWidth: 0 }}>\n <h4 className={`site-kit-event-title ${titleClassName}`} style={{\n margin: 0,\n fontSize: '0.875rem',\n fontWeight: 600,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n }}>\n {event.name}\n </h4>\n {showTime && schedule && (\n <div style={{ fontSize: '0.75rem', color: '#666' }}>\n {formatTime(schedule.starts_at)}\n {showLocation && event.location && ` • ${event.location}`}\n </div>\n )}\n </div>\n \n {showCta && (\n <button\n onClick={handleClick}\n disabled={soldOut || loading}\n className={`site-kit-event-cta ${ctaClassName}`}\n style={{\n padding: '0.375rem 0.75rem',\n fontSize: '0.75rem',\n borderRadius: '4px',\n border: 'none',\n background: soldOut ? '#e5e7eb' : '#2563eb',\n color: soldOut ? '#666' : 'white',\n cursor: soldOut ? 'not-allowed' : 'pointer',\n fontWeight: 500,\n whiteSpace: 'nowrap',\n }}\n >\n {soldOut ? 'Sold Out' : (loading ? '...' : (ctaText || defaultCtaText))}\n </button>\n )}\n </div>\n )\n }\n \n // Standard variant\n return (\n <div className={`site-kit-event-tile ${className}`} style={{\n background: 'white',\n borderRadius: '12px',\n overflow: 'hidden',\n boxShadow: '0 1px 3px rgba(0,0,0,0.1)',\n }}>\n {event.featured_image_url && (\n <img\n src={event.featured_image_url}\n alt={event.name}\n style={{\n width: '100%',\n height: '140px',\n objectFit: 'cover',\n }}\n />\n )}\n \n <div style={{ padding: '1rem' }}>\n {showDate && schedule && (\n <div className={`site-kit-event-date ${dateClassName}`} style={{\n display: 'flex',\n alignItems: 'center',\n gap: '0.5rem',\n marginBottom: '0.5rem',\n }}>\n <span style={{\n background: '#dbeafe',\n color: '#1d4ed8',\n padding: '0.25rem 0.5rem',\n borderRadius: '4px',\n fontSize: '0.75rem',\n fontWeight: 600,\n }}>\n {getRelativeTimeUntil(schedule.starts_at)}\n </span>\n <span style={{ fontSize: '0.875rem', color: '#666' }}>\n {formatDate(schedule.starts_at)}\n </span>\n </div>\n )}\n \n <h3 className={`site-kit-event-title ${titleClassName}`} style={{\n margin: '0 0 0.5rem',\n fontSize: '1.125rem',\n fontWeight: 600,\n color: '#111',\n }}>\n {event.name}\n </h3>\n \n {showLocation && event.location && (\n <div style={{ fontSize: '0.875rem', color: '#666', marginBottom: '0.5rem' }}>\n 📍 {event.location}\n </div>\n )}\n \n {showTime && schedule && (\n <div style={{ fontSize: '0.875rem', color: '#666', marginBottom: '0.75rem' }}>\n 🕐 {formatTime(schedule.starts_at)}\n {schedule.ends_at && ` - ${formatTime(schedule.ends_at)}`}\n </div>\n )}\n \n <div style={{ \n display: 'flex', \n justifyContent: 'space-between', \n alignItems: 'center',\n marginTop: '0.75rem',\n }}>\n <div>\n {showPrice && event.price_is_public && event.price != null && (\n <span style={{ fontWeight: 600, color: '#111' }}>\n {event.price === 0 ? 'Free' : `$${event.price}`}\n </span>\n )}\n {showCapacity && spotsRemaining !== null && spotsRemaining <= 10 && !soldOut && (\n <span style={{ \n fontSize: '0.75rem', \n color: '#dc2626',\n marginLeft: '0.5rem',\n }}>\n Only {spotsRemaining} spots left!\n </span>\n )}\n </div>\n \n {showCta && (\n <button\n onClick={handleClick}\n disabled={soldOut || loading}\n className={`site-kit-event-cta ${ctaClassName}`}\n style={{\n padding: '0.5rem 1rem',\n borderRadius: '6px',\n border: 'none',\n background: soldOut ? '#e5e7eb' : '#2563eb',\n color: soldOut ? '#666' : 'white',\n cursor: soldOut ? 'not-allowed' : 'pointer',\n fontWeight: 500,\n fontSize: '0.875rem',\n }}\n >\n {soldOut ? 'Sold Out' : (loading ? 'Loading...' : (ctaText || defaultCtaText))}\n </button>\n )}\n </div>\n </div>\n </div>\n )\n}\n\nexport default EventTile\n","/**\n * @sonordev/site-kit/commerce - UpcomingEvents\n * \n * Displays a list of upcoming events with date, title, and registration buttons.\n */\n\n'use client'\n\nimport React, { useEffect, useState } from 'react'\nimport type { UpcomingEventsProps, CommerceOffering } from './types'\nimport { EventTile } from './EventTile'\nimport { fetchUpcomingEvents } from './api'\n\nexport function UpcomingEvents({\n events: propEvents,\n limit = 3,\n category,\n variant = 'standard',\n layout = 'vertical',\n showViewAll = true,\n viewAllUrl = '/events',\n viewAllText = 'View All Events',\n emptyMessage = 'No upcoming events.',\n title,\n onRegister,\n onCtaClick,\n className = '',\n titleClassName = '',\n eventClassName = '',\n}: UpcomingEventsProps) {\n const [events, setEvents] = useState<CommerceOffering[]>(propEvents || [])\n const [loading, setLoading] = useState(!propEvents)\n \n useEffect(() => {\n if (propEvents) {\n setEvents(propEvents)\n return\n }\n \n async function load() {\n setLoading(true)\n try {\n const data = await fetchUpcomingEvents({ limit, category })\n setEvents(data)\n } catch (e) {\n console.error('Failed to load events:', e)\n } finally {\n setLoading(false)\n }\n }\n \n load()\n }, [propEvents, limit, category])\n \n if (loading) {\n return (\n <div className={`site-kit-upcoming-events ${className}`}>\n <div style={{ padding: '2rem', textAlign: 'center', color: '#666' }}>\n Loading events...\n </div>\n </div>\n )\n }\n \n if (events.length === 0) {\n return (\n <div className={`site-kit-upcoming-events ${className}`}>\n {title && (\n <h2 className={`site-kit-upcoming-events-title ${titleClassName}`} style={{\n margin: '0 0 1rem',\n fontSize: '1.5rem',\n fontWeight: 600,\n }}>\n {title}\n </h2>\n )}\n <div style={{ padding: '2rem', textAlign: 'center', color: '#666' }}>\n {emptyMessage}\n </div>\n </div>\n )\n }\n \n const layoutStyles = layout === 'horizontal' ? {\n display: 'flex',\n gap: '1rem',\n overflowX: 'auto' as const,\n } : {\n display: 'flex',\n flexDirection: 'column' as const,\n gap: '1rem',\n }\n \n return (\n <div className={`site-kit-upcoming-events ${className}`}>\n {title && (\n <div style={{ \n display: 'flex', \n justifyContent: 'space-between', \n alignItems: 'center',\n marginBottom: '1rem',\n }}>\n <h2 className={`site-kit-upcoming-events-title ${titleClassName}`} style={{\n margin: 0,\n fontSize: '1.5rem',\n fontWeight: 600,\n }}>\n {title}\n </h2>\n \n {showViewAll && events.length >= limit && (\n <a\n href={viewAllUrl}\n style={{\n color: '#2563eb',\n textDecoration: 'none',\n fontSize: '0.875rem',\n fontWeight: 500,\n }}\n >\n {viewAllText} →\n </a>\n )}\n </div>\n )}\n \n <div style={layoutStyles}>\n {events.map(event => (\n <div \n key={event.id} \n className={eventClassName}\n style={layout === 'horizontal' ? { minWidth: '280px', flex: '0 0 auto' } : undefined}\n >\n <EventTile\n event={event}\n variant={variant}\n onRegister={onRegister}\n onCtaClick={onCtaClick}\n />\n </div>\n ))}\n </div>\n \n {showViewAll && events.length >= limit && !title && (\n <div style={{ textAlign: 'center', marginTop: '1.5rem' }}>\n <a\n href={viewAllUrl}\n style={{\n display: 'inline-block',\n padding: '0.75rem 1.5rem',\n background: '#f3f4f6',\n color: '#333',\n borderRadius: '8px',\n textDecoration: 'none',\n fontWeight: 500,\n }}\n >\n {viewAllText}\n </a>\n </div>\n )}\n </div>\n )\n}\n\nexport default UpcomingEvents\n","/**\n * @sonordev/site-kit/commerce - ProductEmbed\n * \n * Embeddable widget for displaying a single product on a homepage or landing page.\n * Supports showing latest product, specific product by slug, or a random featured product.\n */\n\n'use client'\n\nimport React, { useEffect, useState } from 'react'\nimport type { ProductEmbedProps, CommerceOffering } from './types'\nimport { OfferingCard } from './OfferingCard'\nimport { fetchProductBySlug, fetchLatestOffering } from './api'\n\nexport function ProductEmbed({\n product: propProduct,\n slug,\n mode = 'specific', // 'specific', 'latest', 'featured'\n category,\n variant = 'card',\n showImage = true,\n showPrice = true,\n showDescription = true,\n showCta = true,\n ctaText = 'Shop Now',\n onCtaClick,\n className = '',\n}: ProductEmbedProps) {\n const [product, setProduct] = useState<CommerceOffering | null>(propProduct || null)\n const [loading, setLoading] = useState(!propProduct && !!slug)\n \n useEffect(() => {\n if (propProduct) {\n setProduct(propProduct)\n return\n }\n \n async function load() {\n setLoading(true)\n try {\n let data: CommerceOffering | null = null\n \n if (mode === 'specific' && slug) {\n data = await fetchProductBySlug(slug)\n } else if (mode === 'latest' || mode === 'featured') {\n data = await fetchLatestOffering('product', category)\n }\n \n setProduct(data)\n } catch (e) {\n console.error('Failed to load product:', e)\n } finally {\n setLoading(false)\n }\n }\n \n load()\n }, [propProduct, slug, mode, category])\n \n if (loading) {\n return (\n <div className={`site-kit-product-embed ${className}`} style={{\n padding: '2rem',\n textAlign: 'center',\n background: '#f9fafb',\n borderRadius: '12px',\n }}>\n <div style={{\n width: '40px',\n height: '40px',\n margin: '0 auto',\n border: '3px solid #e5e7eb',\n borderTopColor: '#2563eb',\n borderRadius: '50%',\n animation: 'spin 1s linear infinite',\n }} />\n <style>{`\n @keyframes spin {\n to { transform: rotate(360deg); }\n }\n `}</style>\n </div>\n )\n }\n \n if (!product) {\n return null // Silent fail - don't show anything if no product\n }\n \n return (\n <div className={`site-kit-product-embed ${className}`}>\n <OfferingCard\n offering={product}\n variant={variant}\n showImage={showImage}\n showPrice={showPrice}\n showDescription={showDescription}\n showCta={showCta}\n ctaText={ctaText}\n onCtaClick={onCtaClick}\n />\n </div>\n )\n}\n\nexport default ProductEmbed\n","/**\n * @sonordev/site-kit/commerce - ProductDetail\n * \n * Full product detail view with image gallery, variants, pricing, and checkout.\n * Use on product pages for complete product information display.\n */\n\n'use client'\n\nimport React, { useState, useEffect } from 'react'\nimport type { CommerceOffering, CommerceVariant, CheckoutResult } from './types'\nimport { formatPrice } from './utils'\nimport { fetchProductBySlug, createCheckoutSession } from './api'\n\nexport interface ProductDetailProps {\n /** Pre-loaded product data (for SSR) */\n product?: CommerceOffering\n /** Product slug to fetch (if not pre-loaded) */\n slug?: string\n /** Show add to cart button */\n showAddToCart?: boolean\n /** Show buy now button */\n showBuyNow?: boolean\n /** Show quantity selector */\n showQuantity?: boolean\n /** Show variant selector */\n showVariants?: boolean\n /** Show product gallery */\n showGallery?: boolean\n /** Show product features */\n showFeatures?: boolean\n /** Show specifications table */\n showSpecifications?: boolean\n /** Success URL after checkout */\n successUrl?: string\n /** Cancel URL if checkout cancelled */\n cancelUrl?: string\n /** Callback when added to cart */\n onAddToCart?: (product: CommerceOffering, variant?: CommerceVariant, quantity?: number) => void\n /** Callback when buy now clicked */\n onBuyNow?: (product: CommerceOffering, variant?: CommerceVariant, quantity?: number) => void\n /** Callback on checkout success */\n onCheckoutSuccess?: (result: CheckoutResult) => void\n /** Callback on checkout error */\n onCheckoutError?: (error: string) => void\n /** Additional class names */\n className?: string\n /** Custom styles */\n style?: React.CSSProperties\n}\n\nexport function ProductDetail({\n product: propProduct,\n slug,\n showAddToCart = true,\n showBuyNow = true,\n showQuantity = true,\n showVariants = true,\n showGallery = true,\n showFeatures = true,\n showSpecifications = true,\n successUrl,\n cancelUrl,\n onAddToCart,\n onBuyNow,\n onCheckoutSuccess,\n onCheckoutError,\n className = '',\n style,\n}: ProductDetailProps) {\n const [product, setProduct] = useState<CommerceOffering | null>(propProduct || null)\n const [loading, setLoading] = useState(!propProduct && !!slug)\n const [selectedVariant, setSelectedVariant] = useState<CommerceVariant | undefined>()\n const [quantity, setQuantity] = useState(1)\n const [selectedImage, setSelectedImage] = useState(0)\n const [checkingOut, setCheckingOut] = useState(false)\n\n // Fetch product if not provided\n useEffect(() => {\n if (propProduct) {\n setProduct(propProduct)\n // Set default variant\n const defaultVariant = propProduct.variants?.find(v => v.is_default) || propProduct.variants?.[0]\n setSelectedVariant(defaultVariant)\n return\n }\n\n if (!slug) return\n\n async function load() {\n setLoading(true)\n try {\n const data = await fetchProductBySlug(slug!)\n setProduct(data)\n if (data?.variants?.length) {\n const defaultVariant = data.variants.find(v => v.is_default) || data.variants[0]\n setSelectedVariant(defaultVariant)\n }\n } catch (e) {\n console.error('Failed to load product:', e)\n } finally {\n setLoading(false)\n }\n }\n\n load()\n }, [propProduct, slug])\n\n if (loading) {\n return (\n <div className={`site-kit-product-detail site-kit-product-detail--loading ${className}`} style={style}>\n <div className=\"site-kit-product-detail__loader\" style={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n minHeight: '400px',\n }}>\n <div style={{\n width: '48px',\n height: '48px',\n border: '3px solid #e5e7eb',\n borderTopColor: '#2563eb',\n borderRadius: '50%',\n animation: 'spin 1s linear infinite',\n }} />\n </div>\n <style>{`@keyframes spin { to { transform: rotate(360deg); } }`}</style>\n </div>\n )\n }\n\n if (!product) {\n return (\n <div className={`site-kit-product-detail site-kit-product-detail--not-found ${className}`} style={style}>\n <div style={{ textAlign: 'center', padding: '4rem 2rem', color: '#666' }}>\n <h2 style={{ margin: 0, fontSize: '1.5rem', color: '#333' }}>Product Not Found</h2>\n <p style={{ marginTop: '0.5rem' }}>The product you're looking for doesn't exist or has been removed.</p>\n </div>\n </div>\n )\n }\n\n // Get current price (from variant or product)\n const currentPrice = selectedVariant?.price ?? product.price ?? 0\n const compareAtPrice = product.compare_at_price\n const hasDiscount = compareAtPrice && compareAtPrice > currentPrice\n\n // Get all images\n const allImages = [\n product.featured_image_url,\n ...(product.gallery_images || []),\n ...(product.variants?.map(v => v.image_url).filter(Boolean) || []),\n ].filter(Boolean) as string[]\n\n // Check inventory\n const inventoryCount = selectedVariant?.inventory_count ?? product.inventory_count\n const isOutOfStock = product.track_inventory && inventoryCount !== undefined && inventoryCount <= 0\n const isLowStock = product.track_inventory && inventoryCount !== undefined && inventoryCount > 0 && inventoryCount <= 5\n const needsVariantSelection = (product.is_clothing || (product.variants?.length ?? 0) > 0) && !selectedVariant\n\n const handleAddToCart = () => {\n if (onAddToCart) {\n onAddToCart(product, selectedVariant, quantity)\n }\n }\n\n const handleBuyNow = async () => {\n if (onBuyNow) {\n onBuyNow(product, selectedVariant, quantity)\n return\n }\n\n // Default: Create checkout session\n setCheckingOut(true)\n try {\n const result = await createCheckoutSession({\n offeringId: product.id,\n variantId: selectedVariant?.id,\n quantity,\n successUrl: successUrl || `${window.location.origin}/checkout/success`,\n cancelUrl: cancelUrl || window.location.href,\n })\n\n if (result.success && result.checkout_url) {\n onCheckoutSuccess?.(result)\n window.location.href = result.checkout_url\n } else {\n throw new Error(result.error || 'Failed to create checkout')\n }\n } catch (error: any) {\n console.error('Checkout error:', error)\n onCheckoutError?.(error.message || 'Checkout failed')\n } finally {\n setCheckingOut(false)\n }\n }\n\n const handleVariantChange = (variant: CommerceVariant) => {\n setSelectedVariant(variant)\n // If variant has its own image, switch to it\n if (variant.image_url) {\n const imageIndex = allImages.indexOf(variant.image_url)\n if (imageIndex >= 0) setSelectedImage(imageIndex)\n }\n }\n\n return (\n <div className={`site-kit-product-detail ${className}`} style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fit, minmax(320px, 1fr))',\n gap: '2rem',\n ...style,\n }}>\n {/* Image Gallery */}\n {showGallery && allImages.length > 0 && (\n <div className=\"site-kit-product-detail__gallery\">\n {/* Main Image */}\n <div className=\"site-kit-product-detail__main-image\" style={{\n aspectRatio: '1',\n borderRadius: '12px',\n overflow: 'hidden',\n backgroundColor: '#f9fafb',\n }}>\n <img\n src={allImages[selectedImage]}\n alt={product.name}\n style={{\n width: '100%',\n height: '100%',\n objectFit: 'cover',\n }}\n />\n </div>\n\n {/* Thumbnails */}\n {allImages.length > 1 && (\n <div className=\"site-kit-product-detail__thumbnails\" style={{\n display: 'flex',\n gap: '0.5rem',\n marginTop: '0.75rem',\n overflowX: 'auto',\n }}>\n {allImages.map((img, idx) => (\n <button\n key={idx}\n onClick={() => setSelectedImage(idx)}\n style={{\n flex: '0 0 auto',\n width: '64px',\n height: '64px',\n borderRadius: '8px',\n overflow: 'hidden',\n border: idx === selectedImage ? '2px solid #2563eb' : '2px solid transparent',\n padding: 0,\n cursor: 'pointer',\n backgroundColor: '#f9fafb',\n }}\n >\n <img\n src={img}\n alt={`${product.name} ${idx + 1}`}\n style={{\n width: '100%',\n height: '100%',\n objectFit: 'cover',\n }}\n />\n </button>\n ))}\n </div>\n )}\n </div>\n )}\n\n {/* Product Info */}\n <div className=\"site-kit-product-detail__info\">\n {/* Category */}\n {product.category && (\n <div className=\"site-kit-product-detail__category\" style={{\n fontSize: '0.875rem',\n color: '#6b7280',\n marginBottom: '0.5rem',\n textTransform: 'uppercase',\n letterSpacing: '0.05em',\n }}>\n {product.category.name}\n </div>\n )}\n\n {/* Title */}\n <h1 className=\"site-kit-product-detail__title\" style={{\n margin: 0,\n fontSize: '2rem',\n fontWeight: 700,\n color: '#111827',\n lineHeight: 1.2,\n }}>\n {product.name}\n </h1>\n\n {/* Short Description */}\n {product.short_description && (\n <p className=\"site-kit-product-detail__short-description\" style={{\n marginTop: '0.75rem',\n fontSize: '1rem',\n color: '#4b5563',\n lineHeight: 1.6,\n }}>\n {product.short_description}\n </p>\n )}\n\n {/* Price */}\n {product.price_is_public && currentPrice !== undefined && (\n <div className=\"site-kit-product-detail__price\" style={{\n marginTop: '1rem',\n display: 'flex',\n alignItems: 'baseline',\n gap: '0.75rem',\n }}>\n <span style={{\n fontSize: '1.75rem',\n fontWeight: 700,\n color: hasDiscount ? '#dc2626' : '#111827',\n }}>\n {formatPrice(currentPrice, product.currency)}\n </span>\n {hasDiscount && (\n <span style={{\n fontSize: '1.25rem',\n color: '#9ca3af',\n textDecoration: 'line-through',\n }}>\n {formatPrice(compareAtPrice, product.currency)}\n </span>\n )}\n </div>\n )}\n\n {/* Stock Status */}\n {product.track_inventory && (\n <div className=\"site-kit-product-detail__stock\" style={{\n marginTop: '0.75rem',\n fontSize: '0.875rem',\n fontWeight: 500,\n }}>\n {isOutOfStock ? (\n <span style={{ color: '#dc2626' }}>Out of Stock</span>\n ) : isLowStock ? (\n <span style={{ color: '#f59e0b' }}>Only {inventoryCount} left!</span>\n ) : (\n <span style={{ color: '#10b981' }}>In Stock</span>\n )}\n </div>\n )}\n\n {/* Variants / Size */}\n {showVariants && product.variants && (product.variants.length > 1 || product.is_clothing) && (\n <div className=\"site-kit-product-detail__variants\" style={{ marginTop: '1.5rem' }}>\n <label style={{\n display: 'block',\n fontSize: '0.875rem',\n fontWeight: 600,\n color: '#374151',\n marginBottom: '0.5rem',\n }}>\n {product.is_clothing ? 'Size' : 'Options'}\n </label>\n <div style={{ display: 'flex', flexWrap: 'wrap', gap: '0.5rem' }}>\n {product.variants.map(variant => {\n const variantOutOfStock = variant.track_inventory !== false && (variant.inventory_count ?? 0) <= 0\n return (\n <button\n key={variant.id}\n onClick={() => !variantOutOfStock && handleVariantChange(variant)}\n disabled={variantOutOfStock}\n style={{\n padding: '0.5rem 1rem',\n borderRadius: '8px',\n border: selectedVariant?.id === variant.id \n ? '2px solid #2563eb' \n : '1px solid #d1d5db',\n backgroundColor: selectedVariant?.id === variant.id ? '#eff6ff' : 'white',\n color: variantOutOfStock ? '#9ca3af' : '#374151',\n fontSize: '0.875rem',\n fontWeight: 500,\n cursor: variantOutOfStock ? 'not-allowed' : 'pointer',\n opacity: variantOutOfStock ? 0.6 : 1,\n transition: 'all 0.15s ease',\n }}\n >\n {(variant.options as Record<string, string>)?.Size || variant.name}\n {variantOutOfStock && ' (Out of stock)'}\n </button>\n )\n })}\n </div>\n </div>\n )}\n\n {/* Quantity */}\n {showQuantity && !isOutOfStock && (\n <div className=\"site-kit-product-detail__quantity\" style={{ marginTop: '1.5rem' }}>\n <label style={{\n display: 'block',\n fontSize: '0.875rem',\n fontWeight: 600,\n color: '#374151',\n marginBottom: '0.5rem',\n }}>\n Quantity\n </label>\n <div style={{ display: 'flex', alignItems: 'center', gap: '0.5rem' }}>\n <button\n onClick={() => setQuantity(Math.max(1, quantity - 1))}\n disabled={quantity <= 1}\n style={{\n width: '40px',\n height: '40px',\n borderRadius: '8px',\n border: '1px solid #d1d5db',\n backgroundColor: 'white',\n fontSize: '1.25rem',\n cursor: quantity <= 1 ? 'not-allowed' : 'pointer',\n opacity: quantity <= 1 ? 0.5 : 1,\n }}\n >\n −\n </button>\n <input\n type=\"number\"\n min=\"1\"\n max={inventoryCount ?? 99}\n value={quantity}\n onChange={(e) => setQuantity(Math.max(1, parseInt(e.target.value) || 1))}\n style={{\n width: '60px',\n height: '40px',\n textAlign: 'center',\n borderRadius: '8px',\n border: '1px solid #d1d5db',\n fontSize: '1rem',\n }}\n />\n <button\n onClick={() => setQuantity(quantity + 1)}\n disabled={product.track_inventory && inventoryCount !== undefined && quantity >= inventoryCount}\n style={{\n width: '40px',\n height: '40px',\n borderRadius: '8px',\n border: '1px solid #d1d5db',\n backgroundColor: 'white',\n fontSize: '1.25rem',\n cursor: 'pointer',\n }}\n >\n +\n </button>\n </div>\n </div>\n )}\n\n {/* Action Buttons */}\n <div className=\"site-kit-product-detail__actions\" style={{\n marginTop: '1.5rem',\n display: 'flex',\n flexDirection: 'column',\n gap: '0.75rem',\n }}>\n {showBuyNow && (\n <button\n onClick={handleBuyNow}\n disabled={isOutOfStock || checkingOut || needsVariantSelection}\n className=\"site-kit-product-detail__buy-now\"\n style={{\n padding: '1rem 2rem',\n borderRadius: '8px',\n border: 'none',\n backgroundColor: isOutOfStock ? '#d1d5db' : '#2563eb',\n color: 'white',\n fontSize: '1rem',\n fontWeight: 600,\n cursor: isOutOfStock ? 'not-allowed' : 'pointer',\n transition: 'all 0.15s ease',\n }}\n >\n {checkingOut ? 'Processing...' : needsVariantSelection ? 'Select Size' : isOutOfStock ? 'Out of Stock' : 'Buy Now'}\n </button>\n )}\n {showAddToCart && onAddToCart && (\n <button\n onClick={handleAddToCart}\n disabled={isOutOfStock || needsVariantSelection}\n className=\"site-kit-product-detail__add-to-cart\"\n style={{\n padding: '1rem 2rem',\n borderRadius: '8px',\n border: '2px solid #2563eb',\n backgroundColor: 'white',\n color: '#2563eb',\n fontSize: '1rem',\n fontWeight: 600,\n cursor: isOutOfStock || needsVariantSelection ? 'not-allowed' : 'pointer',\n transition: 'all 0.15s ease',\n }}\n >\n {needsVariantSelection ? 'Select Size' : isOutOfStock ? 'Out of Stock' : 'Add to Cart'}\n </button>\n )}\n </div>\n\n {/* Features */}\n {showFeatures && product.features && product.features.length > 0 && (\n <div className=\"site-kit-product-detail__features\" style={{ marginTop: '2rem' }}>\n <h3 style={{\n fontSize: '1rem',\n fontWeight: 600,\n color: '#111827',\n marginBottom: '0.75rem',\n }}>\n Features\n </h3>\n <ul style={{\n margin: 0,\n paddingLeft: '1.25rem',\n display: 'flex',\n flexDirection: 'column',\n gap: '0.5rem',\n }}>\n {product.features.map((feature, idx) => (\n <li key={idx} style={{ color: '#4b5563', fontSize: '0.9375rem' }}>\n {feature}\n </li>\n ))}\n </ul>\n </div>\n )}\n\n {/* Specifications */}\n {showSpecifications && product.specifications && Object.keys(product.specifications).length > 0 && (\n <div className=\"site-kit-product-detail__specifications\" style={{ marginTop: '2rem' }}>\n <h3 style={{\n fontSize: '1rem',\n fontWeight: 600,\n color: '#111827',\n marginBottom: '0.75rem',\n }}>\n Specifications\n </h3>\n <dl style={{\n margin: 0,\n display: 'grid',\n gridTemplateColumns: 'auto 1fr',\n gap: '0.5rem 1rem',\n }}>\n {Object.entries(product.specifications).map(([key, value]) => (\n <React.Fragment key={key}>\n <dt style={{ color: '#6b7280', fontSize: '0.875rem' }}>{key}</dt>\n <dd style={{ margin: 0, color: '#111827', fontSize: '0.875rem' }}>{value}</dd>\n </React.Fragment>\n ))}\n </dl>\n </div>\n )}\n </div>\n\n {/* Long Description */}\n {product.long_description && (\n <div \n className=\"site-kit-product-detail__description\"\n style={{\n gridColumn: '1 / -1',\n marginTop: '2rem',\n padding: '2rem',\n backgroundColor: '#f9fafb',\n borderRadius: '12px',\n }}\n >\n <h2 style={{\n fontSize: '1.25rem',\n fontWeight: 600,\n color: '#111827',\n marginBottom: '1rem',\n }}>\n About This Product\n </h2>\n <div \n style={{ color: '#4b5563', lineHeight: 1.7 }}\n dangerouslySetInnerHTML={{ __html: product.long_description }}\n />\n </div>\n )}\n </div>\n )\n}\n","/**\n * @sonordev/site-kit/commerce - ProductGrid\n * \n * Grid layout for displaying multiple products with filtering and sorting.\n * Ideal for shop pages, category pages, and product listings.\n */\n\n'use client'\n\nimport React, { useState, useEffect, useMemo } from 'react'\nimport type { CommerceOffering, CommerceCategory } from './types'\nimport { OfferingCard } from './OfferingCard'\nimport { fetchProductsPublic } from './api'\n\nexport interface ProductGridProps {\n /** Pre-loaded products (for SSR) */\n products?: CommerceOffering[]\n /** Limit number of products */\n limit?: number\n /** Category to filter by */\n category?: string\n /** Show category filter */\n showCategoryFilter?: boolean\n /** Show sort dropdown */\n showSort?: boolean\n /** Show search input */\n showSearch?: boolean\n /** Number of columns (responsive) */\n columns?: 2 | 3 | 4\n /** Loading skeleton count */\n skeletonCount?: number\n /** Custom empty state message */\n emptyMessage?: string\n /** Callback when product is clicked */\n onProductClick?: (product: CommerceOffering) => void\n /** Navigate to product page on click */\n linkToProduct?: boolean\n /** Base path for product links */\n productBasePath?: string\n /** Additional class names */\n className?: string\n /** Card variant style */\n cardVariant?: 'card' | 'minimal' | 'horizontal'\n /** Custom styles */\n style?: React.CSSProperties\n}\n\ntype SortOption = 'newest' | 'oldest' | 'price-low' | 'price-high' | 'name-az' | 'name-za'\n\nexport function ProductGrid({\n products: propProducts,\n limit,\n category: propCategory,\n showCategoryFilter = false,\n showSort = true,\n showSearch = true,\n columns = 3,\n skeletonCount = 6,\n emptyMessage = 'No products found',\n onProductClick,\n linkToProduct = true,\n productBasePath = '/shop',\n className = '',\n cardVariant = 'card',\n style,\n}: ProductGridProps) {\n const [products, setProducts] = useState<CommerceOffering[]>(propProducts || [])\n const [total, setTotal] = useState(0)\n const [loading, setLoading] = useState(!propProducts)\n const [searchQuery, setSearchQuery] = useState('')\n const [selectedCategory, setSelectedCategory] = useState<string | undefined>(propCategory)\n const [sortBy, setSortBy] = useState<SortOption>('newest')\n\n // Extract unique categories from products\n const categories = useMemo(() => {\n const categoryMap = new Map<string, CommerceCategory>()\n products.forEach(p => {\n if (p.category) {\n categoryMap.set(p.category.id, p.category)\n }\n })\n return Array.from(categoryMap.values())\n }, [products])\n\n // Fetch products\n useEffect(() => {\n if (propProducts) {\n setProducts(propProducts)\n setTotal(propProducts.length)\n return\n }\n\n async function load() {\n setLoading(true)\n try {\n const { products: data, total: count } = await fetchProductsPublic({\n category: selectedCategory,\n limit,\n orderBy: 'created_at',\n order: 'desc',\n })\n setProducts(data)\n setTotal(count)\n } catch (e) {\n console.error('Failed to load products:', e)\n } finally {\n setLoading(false)\n }\n }\n\n load()\n }, [propProducts, selectedCategory, limit])\n\n // Filter and sort products\n const filteredProducts = useMemo(() => {\n let filtered = [...products]\n\n // Search filter\n if (searchQuery) {\n const query = searchQuery.toLowerCase()\n filtered = filtered.filter(p => \n p.name.toLowerCase().includes(query) ||\n p.short_description?.toLowerCase().includes(query) ||\n p.tags?.some(tag => tag.toLowerCase().includes(query))\n )\n }\n\n // Category filter (if not already filtered by fetch)\n if (selectedCategory && !propCategory) {\n filtered = filtered.filter(p => p.category_id === selectedCategory)\n }\n\n // Sort\n switch (sortBy) {\n case 'newest':\n filtered.sort((a, b) => new Date(b.created_at).getTime() - new Date(a.created_at).getTime())\n break\n case 'oldest':\n filtered.sort((a, b) => new Date(a.created_at).getTime() - new Date(b.created_at).getTime())\n break\n case 'price-low':\n filtered.sort((a, b) => (a.price || 0) - (b.price || 0))\n break\n case 'price-high':\n filtered.sort((a, b) => (b.price || 0) - (a.price || 0))\n break\n case 'name-az':\n filtered.sort((a, b) => a.name.localeCompare(b.name))\n break\n case 'name-za':\n filtered.sort((a, b) => b.name.localeCompare(a.name))\n break\n }\n\n return filtered\n }, [products, searchQuery, selectedCategory, sortBy, propCategory])\n\n const handleProductClick = (product: CommerceOffering) => {\n if (onProductClick) {\n onProductClick(product)\n } else if (linkToProduct && typeof window !== 'undefined') {\n window.location.href = `${productBasePath}/${product.slug}`\n }\n }\n\n // Grid column styles\n const gridColumns = {\n 2: 'repeat(auto-fill, minmax(280px, 1fr))',\n 3: 'repeat(auto-fill, minmax(240px, 1fr))',\n 4: 'repeat(auto-fill, minmax(200px, 1fr))',\n }\n\n return (\n <div className={`site-kit-product-grid ${className}`} style={style}>\n {/* Filters & Controls */}\n {(showSearch || showSort || showCategoryFilter) && (\n <div className=\"site-kit-product-grid__controls\" style={{\n display: 'flex',\n flexWrap: 'wrap',\n gap: '1rem',\n marginBottom: '1.5rem',\n alignItems: 'center',\n }}>\n {/* Search */}\n {showSearch && (\n <div className=\"site-kit-product-grid__search\" style={{ flex: '1 1 200px' }}>\n <input\n type=\"search\"\n placeholder=\"Search products...\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n style={{\n width: '100%',\n padding: '0.625rem 1rem',\n borderRadius: '8px',\n border: '1px solid #d1d5db',\n fontSize: '0.9375rem',\n }}\n />\n </div>\n )}\n\n {/* Category Filter */}\n {showCategoryFilter && categories.length > 0 && (\n <select\n value={selectedCategory || ''}\n onChange={(e) => setSelectedCategory(e.target.value || undefined)}\n className=\"site-kit-product-grid__category-filter\"\n style={{\n padding: '0.625rem 1rem',\n borderRadius: '8px',\n border: '1px solid #d1d5db',\n fontSize: '0.9375rem',\n backgroundColor: 'white',\n minWidth: '150px',\n }}\n >\n <option value=\"\">All Categories</option>\n {categories.map(cat => (\n <option key={cat.id} value={cat.id}>{cat.name}</option>\n ))}\n </select>\n )}\n\n {/* Sort */}\n {showSort && (\n <select\n value={sortBy}\n onChange={(e) => setSortBy(e.target.value as SortOption)}\n className=\"site-kit-product-grid__sort\"\n style={{\n padding: '0.625rem 1rem',\n borderRadius: '8px',\n border: '1px solid #d1d5db',\n fontSize: '0.9375rem',\n backgroundColor: 'white',\n }}\n >\n <option value=\"newest\">Newest First</option>\n <option value=\"oldest\">Oldest First</option>\n <option value=\"price-low\">Price: Low to High</option>\n <option value=\"price-high\">Price: High to Low</option>\n <option value=\"name-az\">Name: A-Z</option>\n <option value=\"name-za\">Name: Z-A</option>\n </select>\n )}\n\n {/* Results count */}\n <div className=\"site-kit-product-grid__count\" style={{\n marginLeft: 'auto',\n fontSize: '0.875rem',\n color: '#6b7280',\n }}>\n {searchQuery ? filteredProducts.length : total} product{(searchQuery ? filteredProducts.length : total) !== 1 ? 's' : ''}\n </div>\n </div>\n )}\n\n {/* Loading Skeletons */}\n {loading && (\n <div className=\"site-kit-product-grid__grid\" style={{\n display: 'grid',\n gridTemplateColumns: gridColumns[columns],\n gap: '1.5rem',\n }}>\n {Array.from({ length: skeletonCount }).map((_, i) => (\n <div key={i} className=\"site-kit-product-grid__skeleton\" style={{\n aspectRatio: '1',\n backgroundColor: '#f3f4f6',\n borderRadius: '12px',\n animation: 'pulse 2s infinite',\n }} />\n ))}\n <style>{`\n @keyframes pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.5; }\n }\n `}</style>\n </div>\n )}\n\n {/* Products Grid */}\n {!loading && filteredProducts.length > 0 && (\n <div className=\"site-kit-product-grid__grid\" style={{\n display: 'grid',\n gridTemplateColumns: gridColumns[columns],\n gap: '1.5rem',\n }}>\n {filteredProducts.map(product => (\n <OfferingCard\n key={product.id}\n offering={product}\n variant={cardVariant}\n showImage\n showPrice\n showDescription\n showCta\n ctaText=\"View Product\"\n onCtaClick={() => handleProductClick(product)}\n />\n ))}\n </div>\n )}\n\n {/* Empty State */}\n {!loading && filteredProducts.length === 0 && (\n <div className=\"site-kit-product-grid__empty\" style={{\n textAlign: 'center',\n padding: '4rem 2rem',\n backgroundColor: '#f9fafb',\n borderRadius: '12px',\n }}>\n <div style={{ fontSize: '3rem', marginBottom: '1rem' }}>🛍️</div>\n <p style={{ \n margin: 0, \n color: '#6b7280',\n fontSize: '1rem',\n }}>\n {searchQuery ? `No products match \"${searchQuery}\"` : emptyMessage}\n </p>\n {searchQuery && (\n <button\n onClick={() => setSearchQuery('')}\n style={{\n marginTop: '1rem',\n padding: '0.5rem 1rem',\n borderRadius: '6px',\n border: 'none',\n backgroundColor: '#2563eb',\n color: 'white',\n fontSize: '0.875rem',\n cursor: 'pointer',\n }}\n >\n Clear Search\n </button>\n )}\n </div>\n )}\n </div>\n )\n}\n","/**\n * @sonordev/site-kit/commerce - ProductPage\n * \n * Complete product page component with SEO metadata, breadcrumbs, and related products.\n * Use this as a drop-in for dynamic [slug] routes.\n */\n\n'use client'\n\nimport React, { useEffect, useState } from 'react'\nimport type { CommerceOffering, CommerceVariant, CheckoutResult } from './types'\nimport { ProductDetail } from './ProductDetail'\nimport { ProductGrid } from './ProductGrid'\nimport { fetchProductBySlug, fetchProductsPublic } from './api'\n\nexport interface ProductPageProps {\n /** Pre-loaded product data (for SSR) */\n product?: CommerceOffering\n /** Product slug to fetch (if not pre-loaded) */\n slug?: string\n /** Show breadcrumbs navigation */\n showBreadcrumbs?: boolean\n /** Show related products section */\n showRelatedProducts?: boolean\n /** Number of related products to show */\n relatedProductsLimit?: number\n /** Show back to shop link */\n showBackLink?: boolean\n /** Base path for shop */\n shopBasePath?: string\n /** Success URL after checkout */\n successUrl?: string\n /** Cancel URL if checkout cancelled */\n cancelUrl?: string\n /** Callback when added to cart */\n onAddToCart?: (product: CommerceOffering, variant?: CommerceVariant, quantity?: number) => void\n /** Custom breadcrumb renderer */\n renderBreadcrumbs?: (product: CommerceOffering) => React.ReactNode\n /** Custom SEO head renderer (for Next.js Head or similar) */\n renderHead?: (product: CommerceOffering) => React.ReactNode\n /** Additional class names */\n className?: string\n /** Custom styles */\n style?: React.CSSProperties\n}\n\nexport function ProductPage({\n product: propProduct,\n slug,\n showBreadcrumbs = true,\n showRelatedProducts = true,\n relatedProductsLimit = 4,\n showBackLink = true,\n shopBasePath = '/shop',\n successUrl,\n cancelUrl,\n onAddToCart,\n renderBreadcrumbs,\n renderHead,\n className = '',\n style,\n}: ProductPageProps) {\n const [product, setProduct] = useState<CommerceOffering | null>(propProduct || null)\n const [relatedProducts, setRelatedProducts] = useState<CommerceOffering[]>([])\n const [loading, setLoading] = useState(!propProduct && !!slug)\n\n // Fetch product if not provided\n useEffect(() => {\n if (propProduct) {\n setProduct(propProduct)\n return\n }\n\n if (!slug) return\n\n async function load() {\n setLoading(true)\n try {\n const data = await fetchProductBySlug(slug!)\n setProduct(data)\n } catch (e) {\n console.error('Failed to load product:', e)\n } finally {\n setLoading(false)\n }\n }\n\n load()\n }, [propProduct, slug])\n\n // Fetch related products\n useEffect(() => {\n if (!product || !showRelatedProducts) return\n\n async function loadRelated() {\n try {\n const { products } = await fetchProductsPublic({\n category: product?.category_id,\n limit: relatedProductsLimit + 1, // Fetch one extra to exclude current\n })\n // Exclude current product\n const filtered = products.filter(p => p.id !== product?.id).slice(0, relatedProductsLimit)\n setRelatedProducts(filtered)\n } catch (e) {\n console.error('Failed to load related products:', e)\n }\n }\n\n loadRelated()\n }, [product, showRelatedProducts, relatedProductsLimit])\n\n // Update document title for SEO\n useEffect(() => {\n if (product && typeof document !== 'undefined') {\n document.title = product.seo_title || `${product.name} | Shop`\n \n // Update meta description\n const metaDesc = document.querySelector('meta[name=\"description\"]')\n if (metaDesc && (product.seo_description || product.short_description)) {\n metaDesc.setAttribute('content', product.seo_description || product.short_description || '')\n }\n }\n }, [product])\n\n if (loading) {\n return (\n <div className={`site-kit-product-page site-kit-product-page--loading ${className}`} style={style}>\n <div style={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n minHeight: '60vh',\n }}>\n <div style={{\n width: '48px',\n height: '48px',\n border: '3px solid #e5e7eb',\n borderTopColor: '#2563eb',\n borderRadius: '50%',\n animation: 'spin 1s linear infinite',\n }} />\n </div>\n <style>{`@keyframes spin { to { transform: rotate(360deg); } }`}</style>\n </div>\n )\n }\n\n if (!product) {\n return (\n <div className={`site-kit-product-page site-kit-product-page--not-found ${className}`} style={style}>\n <div style={{\n textAlign: 'center',\n padding: '6rem 2rem',\n }}>\n <div style={{ fontSize: '4rem', marginBottom: '1rem' }}>🔍</div>\n <h1 style={{ margin: 0, fontSize: '2rem', color: '#111827' }}>Product Not Found</h1>\n <p style={{ marginTop: '0.75rem', color: '#6b7280' }}>\n The product you're looking for doesn't exist or has been removed.\n </p>\n <a\n href={shopBasePath}\n style={{\n display: 'inline-block',\n marginTop: '1.5rem',\n padding: '0.75rem 1.5rem',\n borderRadius: '8px',\n backgroundColor: '#2563eb',\n color: 'white',\n textDecoration: 'none',\n fontWeight: 600,\n }}\n >\n Back to Shop\n </a>\n </div>\n </div>\n )\n }\n\n // Default breadcrumbs\n const defaultBreadcrumbs = (\n <nav className=\"site-kit-product-page__breadcrumbs\" aria-label=\"Breadcrumb\" style={{\n marginBottom: '1.5rem',\n fontSize: '0.875rem',\n }}>\n <ol style={{\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n gap: '0.5rem',\n listStyle: 'none',\n margin: 0,\n padding: 0,\n }}>\n <li>\n <a href=\"/\" style={{ color: '#6b7280', textDecoration: 'none' }}>Home</a>\n </li>\n <li style={{ color: '#9ca3af' }}>/</li>\n <li>\n <a href={shopBasePath} style={{ color: '#6b7280', textDecoration: 'none' }}>Shop</a>\n </li>\n {product.category && (\n <>\n <li style={{ color: '#9ca3af' }}>/</li>\n <li>\n <a \n href={`${shopBasePath}?category=${product.category.id}`} \n style={{ color: '#6b7280', textDecoration: 'none' }}\n >\n {product.category.name}\n </a>\n </li>\n </>\n )}\n <li style={{ color: '#9ca3af' }}>/</li>\n <li style={{ color: '#111827', fontWeight: 500 }}>{product.name}</li>\n </ol>\n </nav>\n )\n\n return (\n <div className={`site-kit-product-page ${className}`} style={style}>\n {/* Custom head for SEO */}\n {renderHead?.(product)}\n\n {/* Back Link */}\n {showBackLink && (\n <div className=\"site-kit-product-page__back\" style={{ marginBottom: '1rem' }}>\n <a\n href={shopBasePath}\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: '0.5rem',\n color: '#6b7280',\n textDecoration: 'none',\n fontSize: '0.875rem',\n }}\n >\n <span>←</span>\n <span>Back to Shop</span>\n </a>\n </div>\n )}\n\n {/* Breadcrumbs */}\n {showBreadcrumbs && (\n renderBreadcrumbs ? renderBreadcrumbs(product) : defaultBreadcrumbs\n )}\n\n {/* Product Detail */}\n <ProductDetail\n product={product}\n showAddToCart={!!onAddToCart}\n showBuyNow\n showQuantity\n showVariants\n showGallery\n showFeatures\n showSpecifications\n successUrl={successUrl}\n cancelUrl={cancelUrl}\n onAddToCart={onAddToCart}\n />\n\n {/* Related Products */}\n {showRelatedProducts && relatedProducts.length > 0 && (\n <section className=\"site-kit-product-page__related\" style={{ marginTop: '4rem' }}>\n <h2 style={{\n fontSize: '1.5rem',\n fontWeight: 600,\n color: '#111827',\n marginBottom: '1.5rem',\n }}>\n {product.category ? `More ${product.category.name}` : 'Related Products'}\n </h2>\n <ProductGrid\n products={relatedProducts}\n showSearch={false}\n showSort={false}\n showCategoryFilter={false}\n columns={4}\n productBasePath={shopBasePath}\n />\n </section>\n )}\n </div>\n )\n}\n","/**\n * @sonordev/site-kit/commerce - EventEmbed\n * \n * Embeddable widget for displaying an event on a homepage or landing page.\n * Great for featuring the next upcoming event.\n */\n\n'use client'\n\nimport React, { useEffect, useState } from 'react'\nimport type { EventEmbedProps, CommerceOffering } from './types'\nimport { EventTile } from './EventTile'\nimport { fetchOffering, fetchNextEvent } from './api'\n\nexport function EventEmbed({\n event: propEvent,\n slug,\n mode = 'next', // 'specific', 'next'\n category,\n variant = 'standard',\n showDate = true,\n showTime = true,\n showLocation = true,\n showCapacity = true,\n showPrice = true,\n showCta = true,\n ctaText,\n onRegister,\n onCtaClick,\n className = '',\n}: EventEmbedProps) {\n const [event, setEvent] = useState<CommerceOffering | null>(propEvent || null)\n const [loading, setLoading] = useState(!propEvent && (!!slug || mode === 'next'))\n \n useEffect(() => {\n if (propEvent) {\n setEvent(propEvent)\n return\n }\n \n async function load() {\n setLoading(true)\n try {\n let data: CommerceOffering | null = null\n \n if (mode === 'specific' && slug) {\n data = await fetchOffering(slug)\n } else if (mode === 'next') {\n data = await fetchNextEvent(category)\n }\n \n setEvent(data)\n } catch (e) {\n console.error('Failed to load event:', e)\n } finally {\n setLoading(false)\n }\n }\n \n load()\n }, [propEvent, slug, mode, category])\n \n if (loading) {\n return (\n <div className={`site-kit-event-embed ${className}`} style={{\n padding: '2rem',\n textAlign: 'center',\n background: '#f9fafb',\n borderRadius: '12px',\n }}>\n <div style={{\n width: '40px',\n height: '40px',\n margin: '0 auto',\n border: '3px solid #e5e7eb',\n borderTopColor: '#2563eb',\n borderRadius: '50%',\n animation: 'spin 1s linear infinite',\n }} />\n <style>{`\n @keyframes spin {\n to { transform: rotate(360deg); }\n }\n `}</style>\n </div>\n )\n }\n \n if (!event) {\n return null // Silent fail - don't show anything if no event\n }\n \n return (\n <div className={`site-kit-event-embed ${className}`}>\n <EventTile\n event={event}\n variant={variant}\n showDate={showDate}\n showTime={showTime}\n showLocation={showLocation}\n showCapacity={showCapacity}\n showPrice={showPrice}\n showCta={showCta}\n ctaText={ctaText}\n onRegister={onRegister}\n onCtaClick={onCtaClick}\n />\n </div>\n )\n}\n\nexport default EventEmbed\n","/**\n * @sonordev/site-kit/commerce - CheckoutForm\n * \n * Checkout/registration form for purchasing products or registering for events.\n * Supports shipping flow when shipping_enabled and product type.\n */\n\n'use client'\n\nimport React, { useState, useEffect } from 'react'\nimport type { CheckoutFormProps, CommerceOffering, CheckoutCustomer } from './types'\nimport type { ShippingAddress, ShippingRate, CreateCheckoutOptions } from './api'\nimport {\n createCheckoutSession,\n registerForEvent,\n fetchActiveProcessor,\n fetchProcessorConfig,\n fetchShippingRates,\n} from './api'\nimport { formatPrice } from './utils'\n\ntype ShippingStep = 'address' | 'rates'\n\nexport function CheckoutForm({\n offering,\n scheduleId,\n variantId,\n quantity: initialQuantity = 1,\n mode = 'checkout', // 'checkout' | 'register'\n showQuantity = true,\n submitText,\n onSuccess,\n onError,\n className = '',\n formClassName = '',\n inputClassName = '',\n buttonClassName = '',\n}: CheckoutFormProps) {\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState<string | null>(null)\n const [success, setSuccess] = useState(false)\n const [quantity, setQuantity] = useState(initialQuantity)\n const [processor, setProcessor] = useState<'stripe' | 'square' | null>(null)\n const [shippingEnabled, setShippingEnabled] = useState(false)\n const [shippingStep, setShippingStep] = useState<ShippingStep>('address')\n const [shippingAddress, setShippingAddress] = useState<ShippingAddress>({\n street1: '',\n street2: '',\n city: '',\n state: '',\n zip: '',\n country: 'US',\n })\n const [shippingRates, setShippingRates] = useState<ShippingRate[]>([])\n const [selectedRate, setSelectedRate] = useState<ShippingRate | null>(null)\n const [loadingRates, setLoadingRates] = useState(false)\n\n const [customer, setCustomer] = useState<CheckoutCustomer>({\n email: '',\n name: '',\n phone: '',\n })\n\n const isProduct = offering.type === 'product'\n\n // Fetch processor config (includes shipping_enabled)\n useEffect(() => {\n fetchProcessorConfig().then((config) => {\n if (config?.processor) setProcessor(config.processor)\n if (config?.shipping_enabled && isProduct) setShippingEnabled(true)\n })\n }, [isProduct])\n \n const isEvent = offering.type === 'event' || offering.type === 'class'\n const isFree = !offering.price || offering.price === 0\n const actualMode = isEvent && isFree ? 'register' : mode\n \n const defaultSubmitText = actualMode === 'register' \n ? 'Register' \n : isFree \n ? 'Complete Order' \n : 'Continue to Payment'\n \n const subtotal = offering.price ? offering.price * quantity : 0\n const shippingCost = selectedRate ? parseFloat(selectedRate.amount) : 0\n const total = subtotal + shippingCost\n\n const updateShippingAddress = (field: keyof ShippingAddress, value: string) => {\n setShippingAddress((prev) => ({ ...prev, [field]: value }))\n }\n\n const handleGetShippingRates = async () => {\n if (!shippingAddress.street1 || !shippingAddress.city || !shippingAddress.state || !shippingAddress.zip) {\n setError('Please fill in all required address fields.')\n return\n }\n setLoadingRates(true)\n setError(null)\n try {\n const rates = await fetchShippingRates(\n { ...shippingAddress, name: customer.name, phone: customer.phone },\n [{ offering_id: offering.id, quantity }]\n )\n setShippingRates(rates)\n if (rates.length > 0) setSelectedRate(rates[0])\n setShippingStep('rates')\n } catch (e) {\n setError('Failed to get shipping rates. Please check your address.')\n } finally {\n setLoadingRates(false)\n }\n }\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault()\n setLoading(true)\n setError(null)\n \n try {\n if (actualMode === 'register' && isEvent && scheduleId) {\n // Free event registration\n const result = await registerForEvent(offering.id, scheduleId, customer)\n \n if (result.success) {\n setSuccess(true)\n onSuccess?.(result)\n } else {\n setError(result.error || 'Registration failed')\n onError?.(result.error || 'Registration failed')\n }\n } else {\n // Paid checkout - redirect to Stripe/Square\n const checkoutOptions: Omit<CreateCheckoutOptions, 'offeringId'> = {\n variantId,\n scheduleId,\n quantity,\n customer,\n }\n if (shippingEnabled && shippingAddress.street1 && selectedRate) {\n checkoutOptions.shippingAddress = {\n ...shippingAddress,\n name: customer.name,\n phone: customer.phone,\n }\n checkoutOptions.shippingCarrier = selectedRate.carrier\n checkoutOptions.shippingService = selectedRate.service\n checkoutOptions.shippingCost = parseFloat(selectedRate.amount)\n }\n const result = await createCheckoutSession(offering.id, checkoutOptions)\n \n if (result.success && result.payment_url) {\n // Redirect to payment\n window.location.href = result.payment_url\n } else {\n setError(result.error || 'Checkout failed')\n onError?.(result.error || 'Checkout failed')\n }\n }\n } catch (err) {\n const message = err instanceof Error ? err.message : 'An error occurred'\n setError(message)\n onError?.(message)\n } finally {\n setLoading(false)\n }\n }\n \n const updateCustomer = (field: keyof CheckoutCustomer, value: string) => {\n setCustomer((prev) => ({ ...prev, [field]: value }))\n }\n\n const canProceedToPayment = !shippingEnabled || (shippingStep === 'rates' && selectedRate)\n \n if (success) {\n return (\n <div className={`site-kit-checkout-success ${className}`} style={{\n padding: '2rem',\n textAlign: 'center',\n background: '#f0fdf4',\n borderRadius: '12px',\n border: '1px solid #bbf7d0',\n }}>\n <div style={{ fontSize: '3rem', marginBottom: '1rem' }}>🎉</div>\n <h3 style={{ margin: '0 0 0.5rem', color: '#166534' }}>\n {actualMode === 'register' ? 'Registration Complete!' : 'Order Confirmed!'}\n </h3>\n <p style={{ color: '#15803d', margin: 0 }}>\n {actualMode === 'register' \n ? `You're registered for ${offering.name}. Check your email for confirmation.`\n : `Thank you for your order! Check your email for details.`\n }\n </p>\n </div>\n )\n }\n \n return (\n <div className={`site-kit-checkout ${className}`}>\n <form onSubmit={handleSubmit} className={formClassName}>\n {/* Order Summary */}\n <div style={{\n padding: '1rem',\n background: '#f9fafb',\n borderRadius: '8px',\n marginBottom: '1.5rem',\n }}>\n <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'flex-start' }}>\n <div>\n <h4 style={{ margin: '0 0 0.25rem', fontSize: '1rem' }}>{offering.name}</h4>\n {offering.short_description && (\n <p style={{ margin: 0, fontSize: '0.875rem', color: '#666' }}>\n {offering.short_description}\n </p>\n )}\n </div>\n {offering.price_is_public && offering.price != null && (\n <div style={{ fontWeight: 600, fontSize: '1.125rem' }}>\n {offering.price === 0 ? 'Free' : formatPrice(offering.price, offering.currency)}\n </div>\n )}\n </div>\n \n {showQuantity && !isEvent && offering.price && offering.price > 0 && (\n <div style={{ marginTop: '1rem', display: 'flex', alignItems: 'center', gap: '0.5rem' }}>\n <label style={{ fontSize: '0.875rem', color: '#666' }}>Quantity:</label>\n <select\n value={quantity}\n onChange={(e) => setQuantity(Number(e.target.value))}\n className={inputClassName}\n style={{\n padding: '0.375rem 0.75rem',\n borderRadius: '6px',\n border: '1px solid #d1d5db',\n background: 'white',\n }}\n >\n {[1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map(n => (\n <option key={n} value={n}>{n}</option>\n ))}\n </select>\n <span style={{ marginLeft: 'auto', fontWeight: 600 }}>\n {shippingEnabled && selectedRate ? `Subtotal: ${formatPrice(subtotal, offering.currency)}` : `Total: ${formatPrice(total, offering.currency)}`}\n </span>\n </div>\n )}\n </div>\n \n {/* Customer Info */}\n <div style={{ display: 'flex', flexDirection: 'column', gap: '1rem' }}>\n <div>\n <label style={{ display: 'block', fontSize: '0.875rem', fontWeight: 500, marginBottom: '0.25rem' }}>\n Full Name *\n </label>\n <input\n type=\"text\"\n required\n value={customer.name}\n onChange={(e) => updateCustomer('name', e.target.value)}\n className={inputClassName}\n style={{\n width: '100%',\n padding: '0.625rem 0.75rem',\n borderRadius: '6px',\n border: '1px solid #d1d5db',\n fontSize: '1rem',\n }}\n />\n </div>\n \n <div>\n <label style={{ display: 'block', fontSize: '0.875rem', fontWeight: 500, marginBottom: '0.25rem' }}>\n Email Address *\n </label>\n <input\n type=\"email\"\n required\n value={customer.email}\n onChange={(e) => updateCustomer('email', e.target.value)}\n className={inputClassName}\n style={{\n width: '100%',\n padding: '0.625rem 0.75rem',\n borderRadius: '6px',\n border: '1px solid #d1d5db',\n fontSize: '1rem',\n }}\n />\n </div>\n \n <div>\n <label style={{ display: 'block', fontSize: '0.875rem', fontWeight: 500, marginBottom: '0.25rem' }}>\n Phone Number\n </label>\n <input\n type=\"tel\"\n value={customer.phone || ''}\n onChange={(e) => updateCustomer('phone', e.target.value)}\n className={inputClassName}\n style={{\n width: '100%',\n padding: '0.625rem 0.75rem',\n borderRadius: '6px',\n border: '1px solid #d1d5db',\n fontSize: '1rem',\n }}\n />\n </div>\n </div>\n\n {/* Shipping Address (when shipping enabled) */}\n {shippingEnabled && !isEvent && (\n <div style={{ marginTop: '1.5rem', paddingTop: '1.5rem', borderTop: '1px solid #e5e7eb' }}>\n <h4 style={{ margin: '0 0 1rem', fontSize: '1rem' }}>Shipping Address</h4>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '1rem' }}>\n <div>\n <label style={{ display: 'block', fontSize: '0.875rem', fontWeight: 500, marginBottom: '0.25rem' }}>Street Address *</label>\n <input\n type=\"text\"\n required={shippingEnabled}\n value={shippingAddress.street1}\n onChange={(e) => updateShippingAddress('street1', e.target.value)}\n className={inputClassName}\n placeholder=\"123 Main St\"\n style={{ width: '100%', padding: '0.625rem 0.75rem', borderRadius: '6px', border: '1px solid #d1d5db', fontSize: '1rem' }}\n />\n </div>\n <div>\n <label style={{ display: 'block', fontSize: '0.875rem', fontWeight: 500, marginBottom: '0.25rem' }}>Apartment, suite, etc.</label>\n <input\n type=\"text\"\n value={shippingAddress.street2 || ''}\n onChange={(e) => updateShippingAddress('street2', e.target.value)}\n className={inputClassName}\n style={{ width: '100%', padding: '0.625rem 0.75rem', borderRadius: '6px', border: '1px solid #d1d5db', fontSize: '1rem' }}\n />\n </div>\n <div style={{ display: 'grid', gridTemplateColumns: '1fr 1fr', gap: '1rem' }}>\n <div>\n <label style={{ display: 'block', fontSize: '0.875rem', fontWeight: 500, marginBottom: '0.25rem' }}>City *</label>\n <input\n type=\"text\"\n required={shippingEnabled}\n value={shippingAddress.city}\n onChange={(e) => updateShippingAddress('city', e.target.value)}\n className={inputClassName}\n style={{ width: '100%', padding: '0.625rem 0.75rem', borderRadius: '6px', border: '1px solid #d1d5db', fontSize: '1rem' }}\n />\n </div>\n <div>\n <label style={{ display: 'block', fontSize: '0.875rem', fontWeight: 500, marginBottom: '0.25rem' }}>State *</label>\n <input\n type=\"text\"\n required={shippingEnabled}\n value={shippingAddress.state}\n onChange={(e) => updateShippingAddress('state', e.target.value)}\n className={inputClassName}\n style={{ width: '100%', padding: '0.625rem 0.75rem', borderRadius: '6px', border: '1px solid #d1d5db', fontSize: '1rem' }}\n />\n </div>\n </div>\n <div>\n <label style={{ display: 'block', fontSize: '0.875rem', fontWeight: 500, marginBottom: '0.25rem' }}>ZIP Code *</label>\n <input\n type=\"text\"\n required={shippingEnabled}\n value={shippingAddress.zip}\n onChange={(e) => updateShippingAddress('zip', e.target.value)}\n className={inputClassName}\n style={{ width: '100%', maxWidth: '120px', padding: '0.625rem 0.75rem', borderRadius: '6px', border: '1px solid #d1d5db', fontSize: '1rem' }}\n />\n </div>\n </div>\n {shippingStep === 'address' && (\n <button\n type=\"button\"\n onClick={handleGetShippingRates}\n disabled={loadingRates || !shippingAddress.street1 || !shippingAddress.city || !shippingAddress.state || !shippingAddress.zip}\n style={{\n marginTop: '1rem',\n padding: '0.625rem 1.25rem',\n borderRadius: '6px',\n border: '1px solid #2563eb',\n background: 'white',\n color: '#2563eb',\n fontSize: '0.875rem',\n fontWeight: 500,\n cursor: loadingRates ? 'not-allowed' : 'pointer',\n }}\n >\n {loadingRates ? 'Getting rates...' : 'Get shipping options'}\n </button>\n )}\n {shippingStep === 'rates' && shippingRates.length > 0 && (\n <div style={{ marginTop: '1rem' }}>\n <label style={{ display: 'block', fontSize: '0.875rem', fontWeight: 500, marginBottom: '0.5rem' }}>Select shipping method</label>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '0.5rem' }}>\n {shippingRates.map((rate) => (\n <label\n key={rate.objectId || `${rate.carrier}-${rate.service}`}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '0.75rem',\n padding: '0.75rem',\n borderRadius: '6px',\n border: `2px solid ${selectedRate === rate ? '#2563eb' : '#e5e7eb'}`,\n background: selectedRate === rate ? '#eff6ff' : 'white',\n cursor: 'pointer',\n }}\n >\n <input\n type=\"radio\"\n name=\"shipping-rate\"\n checked={selectedRate === rate}\n onChange={() => setSelectedRate(rate)}\n />\n <span style={{ flex: 1 }}>{rate.carrier} - {rate.service}</span>\n <span style={{ fontWeight: 600 }}>{formatPrice(parseFloat(rate.amount), rate.currency || 'USD')}</span>\n {rate.estimatedDays && (\n <span style={{ fontSize: '0.75rem', color: '#666' }}>({rate.estimatedDays} days)</span>\n )}\n </label>\n ))}\n </div>\n <button\n type=\"button\"\n onClick={() => setShippingStep('address')}\n style={{\n marginTop: '0.75rem',\n fontSize: '0.875rem',\n color: '#6b7280',\n background: 'none',\n border: 'none',\n cursor: 'pointer',\n textDecoration: 'underline',\n }}\n >\n Change address\n </button>\n </div>\n )}\n </div>\n )}\n \n {error && (\n <div style={{\n marginTop: '1rem',\n padding: '0.75rem',\n background: '#fef2f2',\n border: '1px solid #fecaca',\n borderRadius: '6px',\n color: '#dc2626',\n fontSize: '0.875rem',\n }}>\n {error}\n </div>\n )}\n \n <button\n type=\"submit\"\n disabled={loading || (!isEvent && !isFree && !canProceedToPayment)}\n className={buttonClassName}\n style={{\n width: '100%',\n marginTop: '1.5rem',\n padding: '0.875rem',\n fontSize: '1rem',\n fontWeight: 600,\n borderRadius: '8px',\n border: 'none',\n background: loading ? '#93c5fd' : '#2563eb',\n color: 'white',\n cursor: loading ? 'not-allowed' : 'pointer',\n }}\n >\n {loading ? 'Processing...' : (submitText || defaultSubmitText)}\n </button>\n \n {!isFree && (\n <p style={{ \n textAlign: 'center', \n fontSize: '0.75rem', \n color: '#666',\n marginTop: '0.75rem',\n }}>\n You'll be redirected to our secure payment page\n </p>\n )}\n \n {/* Powered by Stripe / Square badge */}\n {processor && !isFree && (\n <div style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '0.375rem',\n marginTop: '0.5rem',\n opacity: 0.5,\n }}>\n {processor === 'stripe' ? (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M13.976 9.15c-2.172-.806-3.356-1.426-3.356-2.409 0-.831.683-1.305 1.901-1.305 2.227 0 4.515.858 6.09 1.631l.89-5.494C18.252.975 15.697 0 12.165 0 9.667 0 7.589.654 6.104 1.872 4.56 3.147 3.757 4.992 3.757 7.218c0 4.039 2.467 5.76 6.476 7.219 2.585.92 3.445 1.574 3.445 2.583 0 .98-.84 1.545-2.354 1.545-1.875 0-4.965-.921-6.99-2.109l-.9 5.555C5.175 22.99 8.385 24 11.714 24c2.641 0 4.843-.624 6.328-1.813 1.664-1.305 2.525-3.236 2.525-5.732 0-4.128-2.524-5.851-6.591-7.305z\" fill=\"#635BFF\"/>\n </svg>\n ) : (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"24\" height=\"24\" rx=\"4\" fill=\"#3E4348\"/>\n <rect x=\"4\" y=\"4\" width=\"16\" height=\"16\" rx=\"2\" fill=\"white\"/>\n </svg>\n )}\n <span style={{ fontSize: '0.625rem', color: '#999', letterSpacing: '0.02em' }}>\n Powered by {processor === 'stripe' ? 'Stripe' : 'Square'}\n </span>\n </div>\n )}\n </form>\n </div>\n )\n}\n\nexport default CheckoutForm\n","/**\n * @sonordev/site-kit/commerce - RegistrationForm\n * \n * Simplified registration form for free events/classes.\n */\n\n'use client'\n\nimport React, { useState } from 'react'\nimport type { RegistrationFormProps, CheckoutCustomer, AdditionalField, AdditionalFieldOption } from './types'\nimport { registerForEvent } from './api'\n\nexport function RegistrationForm({\n event,\n scheduleId,\n title = 'Register for Event',\n submitText = 'Register',\n successMessage,\n collectPhone = false,\n additionalFields = [],\n onSuccess,\n onError,\n className = '',\n formClassName = '',\n inputClassName = '',\n buttonClassName = '',\n}: RegistrationFormProps) {\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState<string | null>(null)\n const [success, setSuccess] = useState(false)\n \n const [customer, setCustomer] = useState<CheckoutCustomer>({\n email: '',\n name: '',\n phone: '',\n })\n \n const [additionalData, setAdditionalData] = useState<Record<string, string>>({})\n \n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault()\n setLoading(true)\n setError(null)\n \n try {\n const result = await registerForEvent(event.id, scheduleId, {\n ...customer,\n ...additionalData,\n })\n \n if (result.success) {\n setSuccess(true)\n onSuccess?.(result)\n } else {\n setError(result.error || 'Registration failed')\n onError?.(result.error || 'Registration failed')\n }\n } catch (err) {\n const message = err instanceof Error ? err.message : 'An error occurred'\n setError(message)\n onError?.(message)\n } finally {\n setLoading(false)\n }\n }\n \n if (success) {\n return (\n <div className={`site-kit-registration-success ${className}`} style={{\n padding: '2rem',\n textAlign: 'center',\n background: '#f0fdf4',\n borderRadius: '12px',\n border: '1px solid #bbf7d0',\n }}>\n <div style={{ fontSize: '3rem', marginBottom: '1rem' }}>🎉</div>\n <h3 style={{ margin: '0 0 0.5rem', color: '#166534' }}>\n You're Registered!\n </h3>\n <p style={{ color: '#15803d', margin: 0 }}>\n {successMessage || `You've been registered for ${event.name}. Check your email for confirmation.`}\n </p>\n </div>\n )\n }\n \n return (\n <div className={`site-kit-registration ${className}`}>\n {title && (\n <h3 style={{ margin: '0 0 1.5rem', fontSize: '1.25rem', fontWeight: 600 }}>\n {title}\n </h3>\n )}\n \n <form onSubmit={handleSubmit} className={formClassName}>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '1rem' }}>\n <div>\n <label style={{ display: 'block', fontSize: '0.875rem', fontWeight: 500, marginBottom: '0.25rem' }}>\n Full Name *\n </label>\n <input\n type=\"text\"\n required\n value={customer.name}\n onChange={(e) => setCustomer(prev => ({ ...prev, name: e.target.value }))}\n className={inputClassName}\n style={{\n width: '100%',\n padding: '0.625rem 0.75rem',\n borderRadius: '6px',\n border: '1px solid #d1d5db',\n fontSize: '1rem',\n }}\n />\n </div>\n \n <div>\n <label style={{ display: 'block', fontSize: '0.875rem', fontWeight: 500, marginBottom: '0.25rem' }}>\n Email Address *\n </label>\n <input\n type=\"email\"\n required\n value={customer.email}\n onChange={(e) => setCustomer(prev => ({ ...prev, email: e.target.value }))}\n className={inputClassName}\n style={{\n width: '100%',\n padding: '0.625rem 0.75rem',\n borderRadius: '6px',\n border: '1px solid #d1d5db',\n fontSize: '1rem',\n }}\n />\n </div>\n \n {collectPhone && (\n <div>\n <label style={{ display: 'block', fontSize: '0.875rem', fontWeight: 500, marginBottom: '0.25rem' }}>\n Phone Number\n </label>\n <input\n type=\"tel\"\n value={customer.phone || ''}\n onChange={(e) => setCustomer(prev => ({ ...prev, phone: e.target.value }))}\n className={inputClassName}\n style={{\n width: '100%',\n padding: '0.625rem 0.75rem',\n borderRadius: '6px',\n border: '1px solid #d1d5db',\n fontSize: '1rem',\n }}\n />\n </div>\n )}\n \n {additionalFields.map((field: AdditionalField) => (\n <div key={field.name}>\n <label style={{ display: 'block', fontSize: '0.875rem', fontWeight: 500, marginBottom: '0.25rem' }}>\n {field.label} {field.required && '*'}\n </label>\n {field.type === 'textarea' ? (\n <textarea\n required={field.required}\n placeholder={field.placeholder}\n value={additionalData[field.name] || ''}\n onChange={(e) => setAdditionalData(prev => ({ ...prev, [field.name]: e.target.value }))}\n className={inputClassName}\n style={{\n width: '100%',\n padding: '0.625rem 0.75rem',\n borderRadius: '6px',\n border: '1px solid #d1d5db',\n fontSize: '1rem',\n minHeight: '80px',\n }}\n />\n ) : field.type === 'select' && field.options ? (\n <select\n required={field.required}\n value={additionalData[field.name] || ''}\n onChange={(e) => setAdditionalData(prev => ({ ...prev, [field.name]: e.target.value }))}\n className={inputClassName}\n style={{\n width: '100%',\n padding: '0.625rem 0.75rem',\n borderRadius: '6px',\n border: '1px solid #d1d5db',\n fontSize: '1rem',\n background: 'white',\n }}\n >\n <option value=\"\">Select...</option>\n {field.options.map((opt: AdditionalFieldOption) => (\n <option key={opt.value} value={opt.value}>{opt.label}</option>\n ))}\n </select>\n ) : (\n <input\n type={field.type || 'text'}\n required={field.required}\n placeholder={field.placeholder}\n value={additionalData[field.name] || ''}\n onChange={(e) => setAdditionalData(prev => ({ ...prev, [field.name]: e.target.value }))}\n className={inputClassName}\n style={{\n width: '100%',\n padding: '0.625rem 0.75rem',\n borderRadius: '6px',\n border: '1px solid #d1d5db',\n fontSize: '1rem',\n }}\n />\n )}\n </div>\n ))}\n </div>\n \n {error && (\n <div style={{\n marginTop: '1rem',\n padding: '0.75rem',\n background: '#fef2f2',\n border: '1px solid #fecaca',\n borderRadius: '6px',\n color: '#dc2626',\n fontSize: '0.875rem',\n }}>\n {error}\n </div>\n )}\n \n <button\n type=\"submit\"\n disabled={loading}\n className={buttonClassName}\n style={{\n width: '100%',\n marginTop: '1.5rem',\n padding: '0.875rem',\n fontSize: '1rem',\n fontWeight: 600,\n borderRadius: '8px',\n border: 'none',\n background: loading ? '#93c5fd' : '#2563eb',\n color: 'white',\n cursor: loading ? 'not-allowed' : 'pointer',\n }}\n >\n {loading ? 'Registering...' : submitText}\n </button>\n </form>\n </div>\n )\n}\n\nexport default RegistrationForm\n","/**\n * @sonordev/site-kit/commerce - CalendarView\n * \n * Monthly calendar view for displaying events.\n */\n\n'use client'\n\nimport React, { useEffect, useState, useMemo } from 'react'\nimport type { CommerceOffering, CommerceSchedule } from './types'\nimport { fetchUpcomingEvents } from './api'\nimport { formatTime } from './utils'\n\nexport interface CalendarViewProps {\n /** Pre-loaded events (optional - will fetch if not provided) */\n events?: CommerceOffering[]\n /** Initial month to display (defaults to current) */\n initialDate?: Date\n /** Category filter */\n category?: string\n /** Callback when event is clicked */\n onEventClick?: (event: CommerceOffering, schedule: CommerceSchedule) => void\n /** Callback when day is clicked */\n onDayClick?: (date: Date, events: EventOnDay[]) => void\n /** Show navigation arrows */\n showNavigation?: boolean\n /** Show month/year header */\n showHeader?: boolean\n /** First day of week (0 = Sunday, 1 = Monday) */\n weekStartsOn?: 0 | 1\n /** Minimum date to show */\n minDate?: Date\n /** Maximum date to show */\n maxDate?: Date\n /** How to display events in cells: 'title' = text, 'image' = thumbnail with details on hover */\n eventDisplay?: 'title' | 'image'\n /** Custom class names */\n className?: string\n headerClassName?: string\n dayClassName?: string\n eventClassName?: string\n todayClassName?: string\n}\n\nexport interface EventOnDay {\n event: CommerceOffering\n schedule: CommerceSchedule\n}\n\ninterface DayData {\n date: Date\n isCurrentMonth: boolean\n isToday: boolean\n events: EventOnDay[]\n}\n\nconst DAYS_SHORT = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']\nconst MONTHS = [\n 'January', 'February', 'March', 'April', 'May', 'June',\n 'July', 'August', 'September', 'October', 'November', 'December'\n]\n\nfunction formatDateForTooltip(dateStr: string): string {\n const d = new Date(dateStr)\n return d.toLocaleDateString('en-US', { weekday: 'short', month: 'short', day: 'numeric', year: 'numeric' })\n}\n\nfunction CalendarEventCell({\n item,\n eventDisplay,\n eventClassName,\n onEventClick,\n formatTime,\n}: {\n item: EventOnDay\n eventDisplay: 'title' | 'image'\n eventClassName: string\n onEventClick: (e: React.MouseEvent) => void\n formatTime: (dateStr: string) => string\n}) {\n const [hover, setHover] = React.useState(false)\n const { event, schedule } = item\n const imageUrl = event.featured_image_url\n\n if (eventDisplay === 'image') {\n return (\n <div\n className={`site-kit-calendar-event-image-wrapper ${eventClassName}`}\n style={{ position: 'relative' }}\n onMouseEnter={() => setHover(true)}\n onMouseLeave={() => setHover(false)}\n >\n <button\n onClick={onEventClick}\n className={`site-kit-calendar-event site-kit-calendar-event-image ${eventClassName}`}\n style={{\n display: 'block',\n width: '100%',\n height: '28px',\n padding: 0,\n border: 'none',\n borderRadius: '4px',\n cursor: 'pointer',\n overflow: 'hidden',\n background: imageUrl ? 'transparent' : '#dbeafe',\n }}\n >\n {imageUrl ? (\n <img\n src={imageUrl}\n alt={event.name}\n style={{\n width: '100%',\n height: '100%',\n objectFit: 'cover',\n }}\n />\n ) : (\n <span style={{\n fontSize: '0.65rem',\n color: '#1d4ed8',\n fontWeight: 500,\n padding: '2px 4px',\n display: 'block',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}>\n {event.name}\n </span>\n )}\n </button>\n {/* Hover tooltip with event details */}\n <div\n className=\"site-kit-calendar-event-tooltip\"\n style={{\n position: 'absolute',\n bottom: '100%',\n left: '50%',\n transform: 'translateX(-50%) translateY(-4px)',\n padding: '8px 12px',\n background: '#1f2937',\n color: 'white',\n borderRadius: '8px',\n fontSize: '0.75rem',\n minWidth: '180px',\n maxWidth: '220px',\n boxShadow: '0 4px 12px rgba(0,0,0,0.2)',\n pointerEvents: 'none',\n opacity: hover ? 1 : 0,\n visibility: hover ? 'visible' : 'hidden',\n transition: 'opacity 0.15s, visibility 0.15s',\n zIndex: 50,\n }}\n >\n <div style={{ fontWeight: 600, marginBottom: '4px' }}>{event.name}</div>\n <div style={{ opacity: 0.9, fontSize: '0.7rem' }}>\n {formatDateForTooltip(schedule.starts_at)} • {formatTime(schedule.starts_at)}\n </div>\n {event.location && (\n <div style={{ opacity: 0.8, fontSize: '0.65rem', marginTop: '2px' }}>{event.location}</div>\n )}\n </div>\n </div>\n )\n }\n\n // Title mode (default fallback)\n return (\n <button\n onClick={onEventClick}\n className={`site-kit-calendar-event ${eventClassName}`}\n style={{\n display: 'block',\n width: '100%',\n padding: '2px 4px',\n fontSize: '0.7rem',\n fontWeight: 500,\n textAlign: 'left',\n border: 'none',\n borderRadius: '3px',\n background: '#dbeafe',\n color: '#1d4ed8',\n cursor: 'pointer',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n }}\n title={`${event.name} - ${formatTime(schedule.starts_at)}`}\n >\n {event.name}\n </button>\n )\n}\n\nexport function CalendarView({\n events: propEvents,\n initialDate,\n category,\n onEventClick,\n onDayClick,\n showNavigation = true,\n showHeader = true,\n weekStartsOn = 0,\n minDate,\n maxDate,\n eventDisplay = 'image',\n className = '',\n headerClassName = '',\n dayClassName = '',\n eventClassName = '',\n todayClassName = '',\n}: CalendarViewProps) {\n const [currentDate, setCurrentDate] = useState(initialDate || new Date())\n const [events, setEvents] = useState<CommerceOffering[]>(propEvents || [])\n const [loading, setLoading] = useState(!propEvents)\n \n // Fetch events if not provided\n useEffect(() => {\n if (propEvents) {\n setEvents(propEvents)\n return\n }\n \n async function load() {\n setLoading(true)\n try {\n // Fetch events for a reasonable range (6 months)\n const data = await fetchUpcomingEvents({ limit: 100, category })\n setEvents(data)\n } catch (e) {\n console.error('Failed to load events:', e)\n } finally {\n setLoading(false)\n }\n }\n \n load()\n }, [propEvents, category])\n \n // Build calendar grid\n const calendarDays = useMemo(() => {\n const year = currentDate.getFullYear()\n const month = currentDate.getMonth()\n \n // First day of the month\n const firstDay = new Date(year, month, 1)\n // Last day of the month\n const lastDay = new Date(year, month + 1, 0)\n \n // Start from the first day of the week containing the first of the month\n const startDate = new Date(firstDay)\n const dayOfWeek = startDate.getDay()\n const daysToSubtract = (dayOfWeek - weekStartsOn + 7) % 7\n startDate.setDate(startDate.getDate() - daysToSubtract)\n \n // End on the last day of the week containing the last of the month\n const endDate = new Date(lastDay)\n const endDayOfWeek = endDate.getDay()\n const daysToAdd = (6 - endDayOfWeek + weekStartsOn) % 7\n endDate.setDate(endDate.getDate() + daysToAdd)\n \n // Build event lookup by date\n const eventsByDate = new Map<string, EventOnDay[]>()\n \n events.forEach(event => {\n const schedules = event.schedules || []\n schedules.forEach(schedule => {\n const scheduleDate = new Date(schedule.starts_at)\n const dateKey = `${scheduleDate.getFullYear()}-${scheduleDate.getMonth()}-${scheduleDate.getDate()}`\n \n if (!eventsByDate.has(dateKey)) {\n eventsByDate.set(dateKey, [])\n }\n eventsByDate.get(dateKey)!.push({ event, schedule })\n })\n })\n \n // Generate days\n const days: DayData[] = []\n const today = new Date()\n const todayKey = `${today.getFullYear()}-${today.getMonth()}-${today.getDate()}`\n \n const current = new Date(startDate)\n while (current <= endDate) {\n const dateKey = `${current.getFullYear()}-${current.getMonth()}-${current.getDate()}`\n \n days.push({\n date: new Date(current),\n isCurrentMonth: current.getMonth() === month,\n isToday: dateKey === todayKey,\n events: eventsByDate.get(dateKey) || [],\n })\n \n current.setDate(current.getDate() + 1)\n }\n \n return days\n }, [currentDate, events, weekStartsOn])\n \n // Navigation\n const goToPreviousMonth = () => {\n const newDate = new Date(currentDate)\n newDate.setMonth(newDate.getMonth() - 1)\n if (!minDate || newDate >= minDate) {\n setCurrentDate(newDate)\n }\n }\n \n const goToNextMonth = () => {\n const newDate = new Date(currentDate)\n newDate.setMonth(newDate.getMonth() + 1)\n if (!maxDate || newDate <= maxDate) {\n setCurrentDate(newDate)\n }\n }\n \n const goToToday = () => {\n setCurrentDate(new Date())\n }\n \n // Day headers adjusted for week start\n const dayHeaders = weekStartsOn === 1\n ? [...DAYS_SHORT.slice(1), DAYS_SHORT[0]]\n : DAYS_SHORT\n \n const handleEventClick = (e: React.MouseEvent, event: CommerceOffering, schedule: CommerceSchedule) => {\n e.stopPropagation()\n if (onEventClick) {\n onEventClick(event, schedule)\n } else {\n window.location.href = `/events/${event.slug}`\n }\n }\n \n const handleDayClick = (day: DayData) => {\n if (onDayClick) {\n onDayClick(day.date, day.events)\n }\n }\n \n return (\n <div className={`site-kit-calendar ${className}`} style={{\n background: 'white',\n borderRadius: '12px',\n overflow: 'hidden',\n boxShadow: '0 1px 3px rgba(0,0,0,0.1)',\n }}>\n {/* Header */}\n {showHeader && (\n <div \n className={`site-kit-calendar-header ${headerClassName}`}\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: '1rem 1.25rem',\n borderBottom: '1px solid #e5e7eb',\n }}\n >\n {showNavigation && (\n <button\n onClick={goToPreviousMonth}\n style={{\n padding: '0.5rem',\n border: 'none',\n background: '#f3f4f6',\n borderRadius: '6px',\n cursor: 'pointer',\n fontSize: '1.25rem',\n lineHeight: 1,\n }}\n aria-label=\"Previous month\"\n >\n ←\n </button>\n )}\n \n <div style={{ textAlign: 'center' }}>\n <h2 style={{ margin: 0, fontSize: '1.25rem', fontWeight: 600 }}>\n {MONTHS[currentDate.getMonth()]} {currentDate.getFullYear()}\n </h2>\n {showNavigation && (\n <button\n onClick={goToToday}\n style={{\n marginTop: '0.25rem',\n padding: '0.25rem 0.5rem',\n fontSize: '0.75rem',\n border: 'none',\n background: 'transparent',\n color: '#2563eb',\n cursor: 'pointer',\n }}\n >\n Today\n </button>\n )}\n </div>\n \n {showNavigation && (\n <button\n onClick={goToNextMonth}\n style={{\n padding: '0.5rem',\n border: 'none',\n background: '#f3f4f6',\n borderRadius: '6px',\n cursor: 'pointer',\n fontSize: '1.25rem',\n lineHeight: 1,\n }}\n aria-label=\"Next month\"\n >\n →\n </button>\n )}\n </div>\n )}\n \n {/* Day headers */}\n <div style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(7, 1fr)',\n borderBottom: '1px solid #e5e7eb',\n }}>\n {dayHeaders.map(day => (\n <div\n key={day}\n style={{\n padding: '0.75rem 0.5rem',\n textAlign: 'center',\n fontSize: '0.75rem',\n fontWeight: 600,\n color: '#666',\n textTransform: 'uppercase',\n }}\n >\n {day}\n </div>\n ))}\n </div>\n \n {/* Calendar grid */}\n <div style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(7, 1fr)',\n }}>\n {calendarDays.map((day, index) => (\n <div\n key={index}\n onClick={() => handleDayClick(day)}\n className={`site-kit-calendar-day ${dayClassName} ${day.isToday ? `site-kit-calendar-today ${todayClassName}` : ''}`}\n style={{\n minHeight: '100px',\n padding: '0.5rem',\n borderRight: (index + 1) % 7 !== 0 ? '1px solid #e5e7eb' : 'none',\n borderBottom: '1px solid #e5e7eb',\n background: day.isCurrentMonth ? 'white' : '#f9fafb',\n cursor: day.events.length > 0 || onDayClick ? 'pointer' : 'default',\n }}\n >\n <div style={{\n display: 'flex',\n justifyContent: 'flex-end',\n marginBottom: '0.25rem',\n }}>\n <span style={{\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '28px',\n height: '28px',\n borderRadius: '50%',\n fontSize: '0.875rem',\n fontWeight: day.isToday ? 600 : 400,\n color: day.isToday ? 'white' : (day.isCurrentMonth ? '#111' : '#9ca3af'),\n background: day.isToday ? '#2563eb' : 'transparent',\n }}>\n {day.date.getDate()}\n </span>\n </div>\n \n {/* Events */}\n <div style={{ display: 'flex', flexDirection: 'column', gap: '2px' }}>\n {day.events.slice(0, 3).map((item) => (\n <CalendarEventCell\n key={`${item.event.id}-${item.schedule.id}`}\n item={item}\n eventDisplay={eventDisplay}\n eventClassName={eventClassName}\n onEventClick={(e) => handleEventClick(e, item.event, item.schedule)}\n formatTime={formatTime}\n />\n ))}\n {day.events.length > 3 && (\n <span style={{\n fontSize: '0.65rem',\n color: '#666',\n textAlign: 'center',\n }}>\n +{day.events.length - 3} more\n </span>\n )}\n </div>\n </div>\n ))}\n </div>\n \n {loading && (\n <div style={{\n position: 'absolute',\n inset: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n background: 'rgba(255,255,255,0.8)',\n }}>\n Loading...\n </div>\n )}\n </div>\n )\n}\n\nexport default CalendarView\n","/**\n * @sonordev/site-kit/commerce - EventModal\n * \n * Modal popup for event registration and checkout.\n * Handles both free registration and paid tickets via Stripe/Square.\n */\n\n'use client'\n\nimport React, { useState, useEffect, useCallback, useRef } from 'react'\nimport type { CommerceOffering, CommerceSchedule, CheckoutCustomer, CheckoutResult } from './types'\nimport type { ProcessorConfig } from './api'\nimport { registerForEvent, createCheckoutSession, fetchProcessorConfig } from './api'\n\nfunction loadSquareSDK(environment: string): Promise<void> {\n return new Promise((resolve, reject) => {\n if (typeof window === 'undefined') return reject(new Error('No window'))\n if ((window as any).Square) return resolve()\n const script = document.createElement('script')\n script.src = environment === 'sandbox'\n ? 'https://sandbox.web.squarecdn.com/v1/square.js'\n : 'https://web.squarecdn.com/v1/square.js'\n script.onload = () => resolve()\n script.onerror = () => reject(new Error('Failed to load Square SDK'))\n document.head.appendChild(script)\n })\n}\nimport { formatDate, formatTime, formatPrice, getSpotsRemaining, isEventSoldOut } from './utils'\n\nexport interface EventModalProps {\n /** Event to display */\n event: CommerceOffering | null\n /** Specific schedule (optional - uses first upcoming if not provided) */\n schedule?: CommerceSchedule | null\n /** Whether modal is open */\n isOpen: boolean\n /** Close modal callback */\n onClose: () => void\n /** Success callback */\n onSuccess?: (result: CheckoutResult) => void\n /** Error callback */\n onError?: (error: string) => void\n /** Collect phone number */\n collectPhone?: boolean\n /** Additional form fields */\n additionalFields?: AdditionalField[]\n /** Custom class names */\n className?: string\n overlayClassName?: string\n contentClassName?: string\n}\n\nexport interface AdditionalField {\n name: string\n label: string\n type?: 'text' | 'email' | 'tel' | 'textarea' | 'select' | 'number'\n required?: boolean\n placeholder?: string\n options?: { value: string; label: string }[]\n}\n\nexport function EventModal({\n event,\n schedule: propSchedule,\n isOpen,\n onClose,\n onSuccess,\n onError,\n collectPhone = false,\n additionalFields = [],\n className = '',\n overlayClassName = '',\n contentClassName = '',\n}: EventModalProps) {\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState<string | null>(null)\n const [success, setSuccess] = useState(false)\n const [quantity, setQuantity] = useState(1)\n \n const [customer, setCustomer] = useState<CheckoutCustomer>({\n email: '',\n name: '',\n phone: '',\n })\n \n const [additionalData, setAdditionalData] = useState<Record<string, string>>({})\n const [processor, setProcessor] = useState<'stripe' | 'square' | null>(null)\n const [processorConfig, setProcessorConfig] = useState<ProcessorConfig | null>(null)\n const [squareCard, setSquareCard] = useState<any>(null)\n const [cardReady, setCardReady] = useState(false)\n const cardContainerRef = useRef<HTMLDivElement>(null)\n\n // Get schedule\n const schedule = propSchedule || event?.schedules?.[0] || (event as any)?.next_schedule\n \n // Fetch processor config when modal opens for a paid event, then mount Square card element\n useEffect(() => {\n if (!isOpen) return\n\n fetchProcessorConfig().then(async (config) => {\n setProcessorConfig(config)\n if (config?.processor) setProcessor(config.processor)\n\n if (config?.processor === 'square' && config.squareAppId && config.squareLocationId) {\n try {\n await loadSquareSDK(config.squareEnvironment || 'production')\n const Square = (window as any).Square\n const payments = Square.payments(config.squareAppId, config.squareLocationId)\n const card = await payments.card({\n style: {\n '.input-container': {\n borderColor: '#d1d5db',\n borderRadius: '6px',\n },\n '.input-container.is-focus': {\n borderColor: '#2563eb',\n },\n '.input-container.is-error': {\n borderColor: '#dc2626',\n },\n },\n })\n await card.attach('#sq-card-container')\n setSquareCard(card)\n setCardReady(true)\n } catch (err) {\n console.error('[Commerce] Square card init failed:', err)\n }\n }\n })\n\n return () => {\n // Destroy card element on close so it re-mounts cleanly next time\n setSquareCard((prev: any) => {\n if (prev) {\n prev.destroy?.().catch(() => {})\n }\n return null\n })\n setCardReady(false)\n setProcessorConfig(null)\n }\n }, [isOpen])\n\n // Reset state when modal opens with new event\n useEffect(() => {\n if (isOpen && event) {\n setError(null)\n setSuccess(false)\n setQuantity(1)\n setCustomer({ email: '', name: '', phone: '' })\n setAdditionalData({})\n }\n }, [isOpen, event?.id])\n \n // Handle escape key\n useEffect(() => {\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && isOpen) {\n onClose()\n }\n }\n \n document.addEventListener('keydown', handleEscape)\n return () => document.removeEventListener('keydown', handleEscape)\n }, [isOpen, onClose])\n \n // Prevent body scroll when open\n useEffect(() => {\n if (isOpen) {\n document.body.style.overflow = 'hidden'\n } else {\n document.body.style.overflow = ''\n }\n return () => {\n document.body.style.overflow = ''\n }\n }, [isOpen])\n \n const handleOverlayClick = useCallback((e: React.MouseEvent) => {\n if (e.target === e.currentTarget) {\n onClose()\n }\n }, [onClose])\n \n if (!isOpen || !event) return null\n \n const isFree = !event.price || event.price === 0\n const soldOut = schedule ? isEventSoldOut(schedule.capacity, schedule.current_registrations) : false\n const spotsRemaining = schedule ? getSpotsRemaining(schedule.capacity, schedule.current_registrations) : null\n const total = event.price ? event.price * quantity : 0\n \n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault()\n \n if (!schedule) {\n setError('No schedule available for this event')\n return\n }\n \n setLoading(true)\n setError(null)\n \n try {\n if (isFree) {\n // Free event registration\n const result = await registerForEvent(event.id, schedule.id, {\n ...customer,\n ...additionalData,\n })\n \n if (result.success) {\n setSuccess(true)\n onSuccess?.(result)\n } else {\n setError(result.error || 'Registration failed')\n onError?.(result.error || 'Registration failed')\n }\n } else {\n // Paid checkout — inline card if Square card is mounted, otherwise redirect\n let sourceId: string | undefined\n\n if (squareCard && cardReady) {\n const tokenResult = await squareCard.tokenize()\n if (tokenResult.status !== 'OK') {\n const msg = tokenResult.errors?.[0]?.message || 'Card verification failed. Please check your card details.'\n setError(msg)\n onError?.(msg)\n setLoading(false)\n return\n }\n sourceId = tokenResult.token\n }\n\n const result = await createCheckoutSession({\n offeringId: event.id,\n scheduleId: schedule.id,\n quantity,\n customer: {\n ...customer,\n ...additionalData,\n },\n sourceId,\n successUrl: window.location.href + '?registration=success',\n cancelUrl: window.location.href,\n })\n\n if (result.success && !result.payment_url) {\n // Inline payment completed — no redirect needed\n setSuccess(true)\n onSuccess?.(result)\n } else if (result.success && result.payment_url) {\n // Fallback: redirect to hosted payment page\n window.location.href = result.payment_url\n } else {\n setError(result.error || 'Checkout failed')\n onError?.(result.error || 'Checkout failed')\n }\n }\n } catch (err) {\n const message = err instanceof Error ? err.message : 'An error occurred'\n setError(message)\n onError?.(message)\n } finally {\n setLoading(false)\n }\n }\n \n const updateCustomer = (field: keyof CheckoutCustomer, value: string) => {\n setCustomer(prev => ({ ...prev, [field]: value }))\n }\n \n return (\n <div\n className={`site-kit-modal-overlay ${overlayClassName}`}\n onClick={handleOverlayClick}\n style={{\n position: 'fixed',\n inset: 0,\n zIndex: 9999,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '1rem',\n background: 'rgba(0, 0, 0, 0.5)',\n backdropFilter: 'blur(4px)',\n }}\n >\n <div\n className={`site-kit-modal ${className}`}\n style={{\n position: 'relative',\n width: '100%',\n maxWidth: '500px',\n maxHeight: '90vh',\n overflow: 'auto',\n background: 'white',\n borderRadius: '16px',\n boxShadow: '0 25px 50px -12px rgba(0, 0, 0, 0.25)',\n }}\n onClick={e => e.stopPropagation()}\n >\n {/* Close button */}\n <button\n onClick={onClose}\n style={{\n position: 'absolute',\n top: '1rem',\n right: '1rem',\n padding: '0.5rem',\n border: 'none',\n background: '#f3f4f6',\n borderRadius: '50%',\n cursor: 'pointer',\n fontSize: '1.25rem',\n lineHeight: 1,\n width: '36px',\n height: '36px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: 10,\n }}\n aria-label=\"Close\"\n >\n ×\n </button>\n \n {/* Event header */}\n {event.featured_image_url && (\n <div style={{ position: 'relative' }}>\n <img\n src={event.featured_image_url}\n alt={event.name}\n style={{\n width: '100%',\n height: '180px',\n objectFit: 'cover',\n borderRadius: '16px 16px 0 0',\n }}\n />\n {soldOut && (\n <div style={{\n position: 'absolute',\n top: '1rem',\n left: '1rem',\n background: '#ef4444',\n color: 'white',\n padding: '0.25rem 0.75rem',\n borderRadius: '4px',\n fontSize: '0.875rem',\n fontWeight: 600,\n }}>\n Sold Out\n </div>\n )}\n </div>\n )}\n \n <div className={`site-kit-modal-content ${contentClassName}`} style={{ padding: '1.5rem' }}>\n {/* Success state */}\n {success ? (\n <div style={{ textAlign: 'center', padding: '2rem 0' }}>\n <div style={{ fontSize: '4rem', marginBottom: '1rem' }}>🎉</div>\n <h2 style={{ margin: '0 0 0.5rem', color: '#166534' }}>\n You're Registered!\n </h2>\n <p style={{ color: '#15803d', margin: '0 0 1.5rem' }}>\n Check your email for confirmation details.\n </p>\n <button\n onClick={onClose}\n style={{\n padding: '0.75rem 2rem',\n fontSize: '1rem',\n fontWeight: 500,\n border: 'none',\n borderRadius: '8px',\n background: '#2563eb',\n color: 'white',\n cursor: 'pointer',\n }}\n >\n Done\n </button>\n </div>\n ) : (\n <>\n {/* Event info */}\n <div style={{ marginBottom: '1.5rem' }}>\n <h2 style={{ margin: '0 0 0.5rem', fontSize: '1.5rem', fontWeight: 600, paddingRight: '2rem' }}>\n {event.name}\n </h2>\n \n {schedule && (\n <div style={{ display: 'flex', flexWrap: 'wrap', gap: '1rem', color: '#666', fontSize: '0.9rem' }}>\n <span>📅 {formatDate(schedule.starts_at)}</span>\n <span>🕐 {formatTime(schedule.starts_at)}</span>\n {event.location && <span>📍 {event.location}</span>}\n </div>\n )}\n \n {event.short_description && (\n <p style={{ margin: '0.75rem 0 0', color: '#666', fontSize: '0.9rem' }}>\n {event.short_description}\n </p>\n )}\n \n {/* Capacity warning */}\n {spotsRemaining !== null && spotsRemaining <= 10 && spotsRemaining > 0 && (\n <div style={{\n marginTop: '0.75rem',\n padding: '0.5rem 0.75rem',\n background: '#fef3c7',\n borderRadius: '6px',\n color: '#92400e',\n fontSize: '0.875rem',\n }}>\n ⚠️ Only {spotsRemaining} spot{spotsRemaining > 1 ? 's' : ''} remaining!\n </div>\n )}\n </div>\n \n {soldOut ? (\n <div style={{\n padding: '2rem',\n textAlign: 'center',\n background: '#f3f4f6',\n borderRadius: '8px',\n }}>\n <p style={{ margin: 0, color: '#666' }}>\n This event is sold out. Check back for future dates!\n </p>\n </div>\n ) : (\n <form onSubmit={handleSubmit}>\n {/* Price / Quantity */}\n {!isFree && event.price_is_public && (\n <div style={{\n padding: '1rem',\n background: '#f9fafb',\n borderRadius: '8px',\n marginBottom: '1rem',\n }}>\n <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}>\n <div>\n <span style={{ fontWeight: 600, fontSize: '1.25rem' }}>\n {formatPrice(event.price!, event.currency)}\n </span>\n <span style={{ color: '#666', fontSize: '0.875rem' }}> per ticket</span>\n </div>\n \n <div style={{ display: 'flex', alignItems: 'center', gap: '0.5rem' }}>\n <label style={{ fontSize: '0.875rem', color: '#666' }}>Qty:</label>\n <select\n value={quantity}\n onChange={(e) => setQuantity(Number(e.target.value))}\n style={{\n padding: '0.5rem',\n borderRadius: '6px',\n border: '1px solid #d1d5db',\n background: 'white',\n fontSize: '1rem',\n }}\n >\n {[...Array(Math.min(10, spotsRemaining || 10))].map((_, i) => (\n <option key={i + 1} value={i + 1}>{i + 1}</option>\n ))}\n </select>\n </div>\n </div>\n \n {quantity > 1 && (\n <div style={{ \n marginTop: '0.75rem', \n paddingTop: '0.75rem', \n borderTop: '1px solid #e5e7eb',\n display: 'flex',\n justifyContent: 'space-between',\n }}>\n <span style={{ fontWeight: 500 }}>Total</span>\n <span style={{ fontWeight: 600, fontSize: '1.125rem' }}>\n {formatPrice(total, event.currency)}\n </span>\n </div>\n )}\n </div>\n )}\n \n {/* Customer info */}\n <div style={{ display: 'flex', flexDirection: 'column', gap: '0.875rem' }}>\n <div>\n <label style={{ display: 'block', fontSize: '0.875rem', fontWeight: 500, marginBottom: '0.25rem' }}>\n Full Name *\n </label>\n <input\n type=\"text\"\n required\n value={customer.name}\n onChange={(e) => updateCustomer('name', e.target.value)}\n placeholder=\"John Smith\"\n style={{\n width: '100%',\n padding: '0.625rem 0.75rem',\n borderRadius: '6px',\n border: '1px solid #d1d5db',\n fontSize: '1rem',\n }}\n />\n </div>\n \n <div>\n <label style={{ display: 'block', fontSize: '0.875rem', fontWeight: 500, marginBottom: '0.25rem' }}>\n Email Address *\n </label>\n <input\n type=\"email\"\n required\n value={customer.email}\n onChange={(e) => updateCustomer('email', e.target.value)}\n placeholder=\"john@example.com\"\n style={{\n width: '100%',\n padding: '0.625rem 0.75rem',\n borderRadius: '6px',\n border: '1px solid #d1d5db',\n fontSize: '1rem',\n }}\n />\n </div>\n \n {collectPhone && (\n <div>\n <label style={{ display: 'block', fontSize: '0.875rem', fontWeight: 500, marginBottom: '0.25rem' }}>\n Phone Number\n </label>\n <input\n type=\"tel\"\n value={customer.phone || ''}\n onChange={(e) => updateCustomer('phone', e.target.value)}\n placeholder=\"(555) 123-4567\"\n style={{\n width: '100%',\n padding: '0.625rem 0.75rem',\n borderRadius: '6px',\n border: '1px solid #d1d5db',\n fontSize: '1rem',\n }}\n />\n </div>\n )}\n \n {/* Additional fields */}\n {additionalFields.map(field => (\n <div key={field.name}>\n <label style={{ display: 'block', fontSize: '0.875rem', fontWeight: 500, marginBottom: '0.25rem' }}>\n {field.label} {field.required && '*'}\n </label>\n {field.type === 'textarea' ? (\n <textarea\n required={field.required}\n placeholder={field.placeholder}\n value={additionalData[field.name] || ''}\n onChange={(e) => setAdditionalData(prev => ({ ...prev, [field.name]: e.target.value }))}\n style={{\n width: '100%',\n padding: '0.625rem 0.75rem',\n borderRadius: '6px',\n border: '1px solid #d1d5db',\n fontSize: '1rem',\n minHeight: '80px',\n resize: 'vertical',\n }}\n />\n ) : field.type === 'select' && field.options ? (\n <select\n required={field.required}\n value={additionalData[field.name] || ''}\n onChange={(e) => setAdditionalData(prev => ({ ...prev, [field.name]: e.target.value }))}\n style={{\n width: '100%',\n padding: '0.625rem 0.75rem',\n borderRadius: '6px',\n border: '1px solid #d1d5db',\n fontSize: '1rem',\n background: 'white',\n }}\n >\n <option value=\"\">Select...</option>\n {field.options.map(opt => (\n <option key={opt.value} value={opt.value}>{opt.label}</option>\n ))}\n </select>\n ) : (\n <input\n type={field.type || 'text'}\n required={field.required}\n placeholder={field.placeholder}\n value={additionalData[field.name] || ''}\n onChange={(e) => setAdditionalData(prev => ({ ...prev, [field.name]: e.target.value }))}\n style={{\n width: '100%',\n padding: '0.625rem 0.75rem',\n borderRadius: '6px',\n border: '1px solid #d1d5db',\n fontSize: '1rem',\n }}\n />\n )}\n </div>\n ))}\n </div>\n \n {/* Inline Square card element */}\n {!isFree && processor === 'square' && (\n <div style={{ marginTop: '1rem' }}>\n <label style={{\n display: 'block',\n fontSize: '0.875rem',\n fontWeight: 500,\n color: '#374151',\n marginBottom: '0.375rem',\n }}>\n Card Details *\n </label>\n <div\n id=\"sq-card-container\"\n ref={cardContainerRef}\n style={{\n minHeight: '42px',\n border: '1px solid #d1d5db',\n borderRadius: '6px',\n padding: '0.5rem 0.75rem',\n background: '#fff',\n }}\n />\n {!cardReady && (\n <p style={{ fontSize: '0.75rem', color: '#9ca3af', marginTop: '0.25rem' }}>\n Loading card form...\n </p>\n )}\n </div>\n )}\n\n {error && (\n <div style={{\n marginTop: '1rem',\n padding: '0.75rem',\n background: '#fef2f2',\n border: '1px solid #fecaca',\n borderRadius: '6px',\n color: '#dc2626',\n fontSize: '0.875rem',\n }}>\n {error}\n </div>\n )}\n \n <button\n type=\"submit\"\n disabled={loading || (!isFree && processor === 'square' && !cardReady)}\n style={{\n width: '100%',\n marginTop: '1.25rem',\n padding: '0.875rem',\n fontSize: '1rem',\n fontWeight: 600,\n borderRadius: '8px',\n border: 'none',\n background: (loading || (!isFree && processor === 'square' && !cardReady)) ? '#93c5fd' : '#2563eb',\n color: 'white',\n cursor: (loading || (!isFree && processor === 'square' && !cardReady)) ? 'not-allowed' : 'pointer',\n }}\n >\n {loading ? 'Processing...' : (\n isFree ? 'Register Free' : `Pay ${formatPrice(total, event.currency)}`\n )}\n </button>\n \n {!isFree && (\n <p style={{ \n textAlign: 'center', \n fontSize: '0.75rem', \n color: '#666',\n margin: '0.75rem 0 0',\n }}>\n 🔒 Secure checkout via {processor === 'square' ? 'Square' : processor === 'stripe' ? 'Stripe' : 'secure payment'}\n </p>\n )}\n {!isFree && processor && (\n <p style={{ fontSize: '0.625rem', color: '#999', margin: '0.25rem 0 0', textAlign: 'center' }}>\n Powered by {processor === 'stripe' ? 'Stripe' : 'Square'}\n </p>\n )}\n </form>\n )}\n </>\n )}\n </div>\n </div>\n </div>\n )\n}\n\nexport default EventModal\n","/**\n * @sonordev/site-kit/commerce - useEventModal hook\n * \n * Hook for managing event modal state.\n */\n\n'use client'\n\nimport { useState, useCallback } from 'react'\nimport type { CommerceOffering, CommerceSchedule } from './types'\n\nexport interface UseEventModalReturn {\n /** Currently selected event */\n event: CommerceOffering | null\n /** Currently selected schedule */\n schedule: CommerceSchedule | null\n /** Whether modal is open */\n isOpen: boolean\n /** Open modal with event */\n openModal: (event: CommerceOffering, schedule?: CommerceSchedule) => void\n /** Close modal */\n closeModal: () => void\n}\n\nexport function useEventModal(): UseEventModalReturn {\n const [event, setEvent] = useState<CommerceOffering | null>(null)\n const [schedule, setSchedule] = useState<CommerceSchedule | null>(null)\n const [isOpen, setIsOpen] = useState(false)\n \n const openModal = useCallback((newEvent: CommerceOffering, newSchedule?: CommerceSchedule) => {\n setEvent(newEvent)\n setSchedule(newSchedule || newEvent.schedules?.[0] || null)\n setIsOpen(true)\n }, [])\n \n const closeModal = useCallback(() => {\n setIsOpen(false)\n // Delay clearing event data for exit animation\n setTimeout(() => {\n setEvent(null)\n setSchedule(null)\n }, 200)\n }, [])\n \n return {\n event,\n schedule,\n isOpen,\n openModal,\n closeModal,\n }\n}\n\nexport default useEventModal\n","/**\n * @sonordev/site-kit/commerce - EventCalendar\n * \n * Calendar view with built-in registration modal.\n * Clicking an event opens a popup for registration/checkout.\n */\n\n'use client'\n\nimport React from 'react'\nimport type { CommerceOffering, CommerceSchedule, CheckoutResult } from './types'\nimport type { CalendarViewProps } from './CalendarView'\nimport type { AdditionalField } from './EventModal'\nimport { CalendarView } from './CalendarView'\nimport { EventModal } from './EventModal'\nimport { useEventModal } from './useEventModal'\n\nexport interface EventCalendarProps extends Omit<CalendarViewProps, 'onEventClick'> {\n /** Callback when registration/checkout succeeds */\n onRegistrationSuccess?: (result: CheckoutResult) => void\n /** Callback when registration/checkout fails */\n onRegistrationError?: (error: string) => void\n /** Collect phone number in registration form */\n collectPhone?: boolean\n /** Additional form fields for registration */\n additionalFields?: AdditionalField[]\n /** Custom modal class names */\n modalClassName?: string\n modalOverlayClassName?: string\n modalContentClassName?: string\n}\n\nexport function EventCalendar({\n onRegistrationSuccess,\n onRegistrationError,\n collectPhone = false,\n additionalFields = [],\n modalClassName,\n modalOverlayClassName,\n modalContentClassName,\n ...calendarProps\n}: EventCalendarProps) {\n const { event, schedule, isOpen, openModal, closeModal } = useEventModal()\n \n const handleEventClick = (clickedEvent: CommerceOffering, clickedSchedule: CommerceSchedule) => {\n openModal(clickedEvent, clickedSchedule)\n }\n \n const handleSuccess = (result: CheckoutResult) => {\n onRegistrationSuccess?.(result)\n // Keep modal open to show success state\n }\n \n const handleError = (error: string) => {\n onRegistrationError?.(error)\n }\n \n return (\n <>\n <CalendarView\n {...calendarProps}\n onEventClick={handleEventClick}\n />\n \n <EventModal\n event={event}\n schedule={schedule}\n isOpen={isOpen}\n onClose={closeModal}\n onSuccess={handleSuccess}\n onError={handleError}\n collectPhone={collectPhone}\n additionalFields={additionalFields}\n className={modalClassName}\n overlayClassName={modalOverlayClassName}\n contentClassName={modalContentClassName}\n />\n </>\n )\n}\n\nexport default EventCalendar\n","/**\n * @sonordev/site-kit/commerce - EventsWidget\n * \n * Comprehensive events widget with calendar/list toggle and integrated booking.\n * Plug-and-play component for displaying commerce events.\n * \n * @example\n * ```tsx\n * // Basic usage - automatically fetches events\n * <EventsWidget />\n * \n * // With calendar view as default\n * <EventsWidget defaultView=\"calendar\" />\n * \n * // Custom styling\n * <EventsWidget\n * className=\"my-events-section\"\n * title=\"Upcoming Events\"\n * showViewToggle={true}\n * onRegistrationSuccess={(result) => console.log('Registered!', result)}\n * />\n * ```\n */\n\n'use client'\n\nimport React, { useState, useEffect, useCallback } from 'react'\nimport type { CommerceOffering, CommerceSchedule, CheckoutResult } from './types'\nimport { CalendarView } from './CalendarView'\nimport { EventModal } from './EventModal'\nimport { useEventModal } from './useEventModal'\nimport { formatDate, formatTime, formatPrice } from './utils'\n\nexport type EventsViewMode = 'list' | 'grid' | 'calendar'\n\nexport interface EventsWidgetProps {\n /** Pre-loaded events (optional - will fetch if not provided) */\n events?: CommerceOffering[]\n /** Initial view mode */\n defaultView?: EventsViewMode\n /** Which view modes to show in the toggle (e.g. ['list', 'grid'] when calendar is embedded above) */\n availableViews?: EventsViewMode[]\n /** Show view toggle buttons */\n showViewToggle?: boolean\n /** Section title */\n title?: string\n /** Subtitle or description */\n subtitle?: string\n /** Category filter */\n category?: string\n /** Maximum events to show in list view */\n limit?: number\n /** Show \"View All\" link */\n showViewAll?: boolean\n /** URL for \"View All\" link */\n viewAllUrl?: string\n /** Text for \"View All\" link */\n viewAllText?: string\n /** Message when no events */\n emptyMessage?: string\n /** Show empty state with icon */\n showEmptyIcon?: boolean\n \n // Registration options\n /** Collect phone number in registration */\n collectPhone?: boolean\n /** Additional form fields */\n additionalFields?: AdditionalField[]\n \n // Callbacks\n /** Called when registration/checkout succeeds */\n onRegistrationSuccess?: (result: CheckoutResult) => void\n /** Called when registration/checkout fails */\n onRegistrationError?: (error: string) => void\n /** Called when event is clicked (before modal opens) */\n onEventClick?: (event: CommerceOffering, schedule: CommerceSchedule) => void\n \n // Styling\n className?: string\n headerClassName?: string\n toggleClassName?: string\n listClassName?: string\n calendarClassName?: string\n eventCardClassName?: string\n modalClassName?: string\n}\n\nexport interface AdditionalField {\n name: string\n label: string\n type?: 'text' | 'email' | 'tel' | 'textarea' | 'select' | 'number'\n required?: boolean\n placeholder?: string\n options?: { value: string; label: string }[]\n}\n\n// Icons\nconst CalendarIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect>\n <line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\"></line>\n <line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\"></line>\n <line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\"></line>\n </svg>\n)\n\nconst ListIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <line x1=\"8\" y1=\"6\" x2=\"21\" y2=\"6\"></line>\n <line x1=\"8\" y1=\"12\" x2=\"21\" y2=\"12\"></line>\n <line x1=\"8\" y1=\"18\" x2=\"21\" y2=\"18\"></line>\n <line x1=\"3\" y1=\"6\" x2=\"3.01\" y2=\"6\"></line>\n <line x1=\"3\" y1=\"12\" x2=\"3.01\" y2=\"12\"></line>\n <line x1=\"3\" y1=\"18\" x2=\"3.01\" y2=\"18\"></line>\n </svg>\n)\n\nconst GridIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <rect x=\"3\" y=\"3\" width=\"7\" height=\"7\"></rect>\n <rect x=\"14\" y=\"3\" width=\"7\" height=\"7\"></rect>\n <rect x=\"14\" y=\"14\" width=\"7\" height=\"7\"></rect>\n <rect x=\"3\" y=\"14\" width=\"7\" height=\"7\"></rect>\n </svg>\n)\n\nconst ClockIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle>\n <polyline points=\"12 6 12 12 16 14\"></polyline>\n </svg>\n)\n\nconst LocationIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z\"></path>\n <circle cx=\"12\" cy=\"10\" r=\"3\"></circle>\n </svg>\n)\n\nconst DEFAULT_VIEWS: EventsViewMode[] = ['list', 'grid', 'calendar']\n\nexport function EventsWidget({\n events: propEvents,\n defaultView = 'list',\n availableViews = DEFAULT_VIEWS,\n showViewToggle = true,\n title,\n subtitle,\n category,\n limit = 10,\n showViewAll = false,\n viewAllUrl = '/events',\n viewAllText = 'View All Events',\n emptyMessage = 'No upcoming events scheduled.',\n showEmptyIcon = true,\n collectPhone = false,\n additionalFields = [],\n onRegistrationSuccess,\n onRegistrationError,\n onEventClick,\n className = '',\n headerClassName = '',\n toggleClassName = '',\n listClassName = '',\n calendarClassName = '',\n eventCardClassName = '',\n modalClassName = '',\n}: EventsWidgetProps) {\n const views = availableViews.length > 0 ? availableViews : DEFAULT_VIEWS\n const resolvedDefault = views.includes(defaultView) ? defaultView : views[0]\n const [viewMode, setViewMode] = useState<EventsViewMode>(resolvedDefault)\n const effectiveView = views.includes(viewMode) ? viewMode : views[0]\n const [events, setEvents] = useState<CommerceOffering[]>(propEvents || [])\n const [loading, setLoading] = useState(!propEvents)\n const [error, setError] = useState<string | null>(null)\n const [retryCount, setRetryCount] = useState(0)\n \n const { event, schedule, isOpen, openModal, closeModal } = useEventModal()\n \n // Fetch events from API\n useEffect(() => {\n if (propEvents) {\n setEvents(propEvents)\n return\n }\n \n async function loadEvents() {\n const apiUrl = getApiUrl()\n const apiKey = getApiKey()\n \n // Wait for API key to be available (set by SiteKitProvider)\n // If not available after a short delay, retry up to 3 times\n if (!apiKey) {\n if (retryCount < 3) {\n setTimeout(() => setRetryCount(c => c + 1), 100)\n return\n }\n console.warn('[EventsWidget] No API key configured. Make sure SiteKitProvider is wrapping your app.')\n setError(null) // Don't show error, just show empty state\n setEvents([])\n setLoading(false)\n return\n }\n \n setLoading(true)\n setError(null)\n \n try {\n const response = await fetch(`${apiUrl}/api/public/commerce/events`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-key': apiKey,\n },\n body: JSON.stringify({\n type: 'event',\n category,\n limit: limit * 2, // Fetch extra for calendar view\n }),\n })\n \n if (!response.ok) {\n throw new Error('Failed to fetch events')\n }\n \n const data = await response.json()\n setEvents(data.events || [])\n } catch (err) {\n console.error('Error loading events:', err)\n setError('Unable to load events. Please try again later.')\n } finally {\n setLoading(false)\n }\n }\n \n loadEvents()\n }, [propEvents, category, limit, retryCount])\n \n const handleEventClick = useCallback((clickedEvent: CommerceOffering, clickedSchedule: CommerceSchedule) => {\n onEventClick?.(clickedEvent, clickedSchedule)\n openModal(clickedEvent, clickedSchedule)\n }, [onEventClick, openModal])\n \n const handleSuccess = useCallback((result: CheckoutResult) => {\n onRegistrationSuccess?.(result)\n }, [onRegistrationSuccess])\n \n const handleError = useCallback((err: string) => {\n onRegistrationError?.(err)\n }, [onRegistrationError])\n \n // Loading state\n if (loading) {\n return (\n <div className={`site-kit-events-widget ${className}`}>\n {(title || subtitle) && (\n <div className={`site-kit-events-header ${headerClassName}`} style={{ marginBottom: '1.5rem' }}>\n {title && <h2 style={{ margin: 0, fontSize: '1.5rem', fontWeight: 600 }}>{title}</h2>}\n {subtitle && <p style={{ margin: '0.5rem 0 0', color: '#666' }}>{subtitle}</p>}\n </div>\n )}\n <div style={{ textAlign: 'center', padding: '3rem 1rem', color: '#666' }}>\n <div style={{\n width: '40px',\n height: '40px',\n margin: '0 auto 1rem',\n border: '3px solid #e5e7eb',\n borderTopColor: '#3b82f6',\n borderRadius: '50%',\n animation: 'site-kit-spin 1s linear infinite',\n }} />\n <p>Loading events...</p>\n </div>\n <style>{`\n @keyframes site-kit-spin {\n to { transform: rotate(360deg); }\n }\n `}</style>\n </div>\n )\n }\n \n // Error state\n if (error) {\n return (\n <div className={`site-kit-events-widget ${className}`}>\n {(title || subtitle) && (\n <div className={`site-kit-events-header ${headerClassName}`} style={{ marginBottom: '1.5rem' }}>\n {title && <h2 style={{ margin: 0, fontSize: '1.5rem', fontWeight: 600 }}>{title}</h2>}\n {subtitle && <p style={{ margin: '0.5rem 0 0', color: '#666' }}>{subtitle}</p>}\n </div>\n )}\n <div style={{ textAlign: 'center', padding: '3rem 1rem', color: '#dc2626' }}>\n <p>{error}</p>\n </div>\n </div>\n )\n }\n \n // Empty state\n if (events.length === 0) {\n return (\n <div className={`site-kit-events-widget ${className}`}>\n {(title || subtitle) && (\n <div className={`site-kit-events-header ${headerClassName}`} style={{ marginBottom: '1.5rem' }}>\n {title && <h2 style={{ margin: 0, fontSize: '1.5rem', fontWeight: 600 }}>{title}</h2>}\n {subtitle && <p style={{ margin: '0.5rem 0 0', color: '#666' }}>{subtitle}</p>}\n </div>\n )}\n <div style={{ textAlign: 'center', padding: '3rem 1rem', color: '#666' }}>\n {showEmptyIcon && (\n <svg\n style={{ width: '64px', height: '64px', margin: '0 auto 1rem', color: '#d1d5db' }}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={1.5} d=\"M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z\" />\n </svg>\n )}\n <p style={{ fontSize: '1.125rem', fontWeight: 500, margin: 0 }}>{emptyMessage}</p>\n </div>\n </div>\n )\n }\n \n // Limit events for list/grid view\n const displayEvents = (effectiveView === 'list' || effectiveView === 'grid') ? events.slice(0, limit) : events\n \n return (\n <div className={`site-kit-events-widget ${className}`}>\n {/* Header */}\n {(title || subtitle || showViewToggle) && (\n <div \n className={`site-kit-events-header ${headerClassName}`}\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'flex-start',\n marginBottom: '1.5rem',\n flexWrap: 'wrap',\n gap: '1rem',\n }}\n >\n <div>\n {title && <h2 style={{ margin: 0, fontSize: '1.5rem', fontWeight: 600 }}>{title}</h2>}\n {subtitle && <p style={{ margin: '0.5rem 0 0', color: '#666' }}>{subtitle}</p>}\n </div>\n \n {showViewToggle && (\n <div \n className={`site-kit-events-toggle ${toggleClassName}`}\n style={{\n display: 'flex',\n gap: '0.25rem',\n background: '#f3f4f6',\n padding: '0.25rem',\n borderRadius: '0.5rem',\n }}\n >\n {views.includes('list') && (\n <button\n onClick={() => setViewMode('list')}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '0.5rem',\n padding: '0.5rem 1rem',\n border: 'none',\n borderRadius: '0.375rem',\n background: viewMode === 'list' ? '#fff' : 'transparent',\n color: viewMode === 'list' ? '#1f2937' : '#6b7280',\n fontWeight: 500,\n fontSize: '0.875rem',\n cursor: 'pointer',\n boxShadow: viewMode === 'list' ? '0 1px 2px rgba(0,0,0,0.05)' : 'none',\n transition: 'all 150ms',\n }}\n >\n <ListIcon />\n List\n </button>\n )}\n {views.includes('grid') && (\n <button\n onClick={() => setViewMode('grid')}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '0.5rem',\n padding: '0.5rem 1rem',\n border: 'none',\n borderRadius: '0.375rem',\n background: viewMode === 'grid' ? '#fff' : 'transparent',\n color: viewMode === 'grid' ? '#1f2937' : '#6b7280',\n fontWeight: 500,\n fontSize: '0.875rem',\n cursor: 'pointer',\n boxShadow: viewMode === 'grid' ? '0 1px 2px rgba(0,0,0,0.05)' : 'none',\n transition: 'all 150ms',\n }}\n >\n <GridIcon />\n Grid\n </button>\n )}\n {views.includes('calendar') && (\n <button\n onClick={() => setViewMode('calendar')}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '0.5rem',\n padding: '0.5rem 1rem',\n border: 'none',\n borderRadius: '0.375rem',\n background: viewMode === 'calendar' ? '#fff' : 'transparent',\n color: viewMode === 'calendar' ? '#1f2937' : '#6b7280',\n fontWeight: 500,\n fontSize: '0.875rem',\n cursor: 'pointer',\n boxShadow: viewMode === 'calendar' ? '0 1px 2px rgba(0,0,0,0.05)' : 'none',\n transition: 'all 150ms',\n }}\n >\n <CalendarIcon />\n Calendar\n </button>\n )}\n </div>\n )}\n </div>\n )}\n \n {/* Content */}\n {effectiveView === 'list' ? (\n <div className={`site-kit-events-list ${listClassName}`}>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '1rem' }}>\n {displayEvents.map((eventItem, index) => {\n const nextSchedule = eventItem.next_schedule || eventItem.schedules?.[0]\n const isFree = !eventItem.price || eventItem.price === 0\n const imageUrl = eventItem.featured_image_url\n const uniqueKey = nextSchedule\n ? `${eventItem.id}-${nextSchedule.id}`\n : `${eventItem.id}-${index}`\n \n return (\n <div\n key={uniqueKey}\n className={`site-kit-event-card ${eventCardClassName}`}\n onClick={() => nextSchedule && handleEventClick(eventItem, nextSchedule)}\n style={{\n display: 'flex',\n flexDirection: 'row',\n gap: 0,\n padding: 0,\n background: '#fff',\n border: '1px solid #e5e7eb',\n borderRadius: '0.75rem',\n cursor: nextSchedule ? 'pointer' : 'default',\n transition: 'all 150ms',\n overflow: 'hidden',\n }}\n onMouseEnter={(e) => {\n if (nextSchedule) {\n e.currentTarget.style.borderColor = '#3b82f6'\n e.currentTarget.style.boxShadow = '0 4px 6px -1px rgba(0, 0, 0, 0.1)'\n }\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.borderColor = '#e5e7eb'\n e.currentTarget.style.boxShadow = 'none'\n }}\n >\n {/* Image on the left */}\n <div style={{\n width: '160px',\n minWidth: '160px',\n flexShrink: 0,\n background: '#f3f4f6',\n }}>\n {imageUrl ? (\n <img\n src={imageUrl}\n alt={eventItem.name}\n crossOrigin=\"anonymous\"\n referrerPolicy=\"no-referrer\"\n onError={(e) => {\n const el = e.currentTarget\n el.style.display = 'none'\n const placeholder = el.nextElementSibling as HTMLElement\n if (placeholder) placeholder.style.display = 'flex'\n }}\n style={{\n width: '100%',\n height: '100%',\n minHeight: '120px',\n objectFit: 'cover',\n display: 'block',\n }}\n />\n ) : null}\n <div\n style={{\n width: '100%',\n minHeight: '120px',\n display: imageUrl ? 'none' : 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: '#9ca3af',\n }}\n aria-hidden\n >\n <CalendarIcon />\n </div>\n </div>\n <div style={{ flex: 1, display: 'flex', flexDirection: 'column', gap: '0.75rem', padding: '1.25rem' }}>\n <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'flex-start', gap: '1rem' }}>\n <div style={{ flex: 1 }}>\n <h3 style={{ margin: 0, fontSize: '1.125rem', fontWeight: 600, color: '#1f2937' }}>\n {eventItem.name}\n </h3>\n {eventItem.short_description && (\n <p style={{ margin: '0.5rem 0 0', color: '#6b7280', fontSize: '0.875rem', lineHeight: 1.5 }}>\n {eventItem.short_description}\n </p>\n )}\n </div>\n \n {eventItem.price_is_public && (\n <div style={{\n padding: '0.375rem 0.75rem',\n background: isFree ? '#dcfce7' : '#dbeafe',\n color: isFree ? '#166534' : '#1e40af',\n borderRadius: '9999px',\n fontSize: '0.875rem',\n fontWeight: 600,\n whiteSpace: 'nowrap',\n }}>\n {isFree ? 'Free' : formatPrice(eventItem.price ?? 0, eventItem.currency)}\n </div>\n )}\n </div>\n \n {nextSchedule && (\n <div style={{ display: 'flex', flexWrap: 'wrap', gap: '1rem', fontSize: '0.875rem', color: '#6b7280' }}>\n <span style={{ display: 'flex', alignItems: 'center', gap: '0.375rem' }}>\n <CalendarIcon />\n {formatDate(nextSchedule.starts_at)}\n </span>\n <span style={{ display: 'flex', alignItems: 'center', gap: '0.375rem' }}>\n <ClockIcon />\n {formatTime(nextSchedule.starts_at)}\n </span>\n {eventItem.location && (\n <span style={{ display: 'flex', alignItems: 'center', gap: '0.375rem' }}>\n <LocationIcon />\n {eventItem.location}\n </span>\n )}\n {nextSchedule.spots_remaining !== null && nextSchedule.spots_remaining !== undefined && (\n <span style={{\n color: nextSchedule.spots_remaining < 5 ? '#dc2626' : '#6b7280',\n fontWeight: nextSchedule.spots_remaining < 5 ? 500 : 400,\n }}>\n {nextSchedule.spots_remaining === 0 \n ? 'Sold Out' \n : `${nextSchedule.spots_remaining} spots left`}\n </span>\n )}\n </div>\n )}\n </div>\n </div>\n )\n })}\n </div>\n \n {showViewAll && events.length > limit && (\n <div style={{ textAlign: 'center', marginTop: '1.5rem' }}>\n <a\n href={viewAllUrl}\n style={{\n display: 'inline-block',\n padding: '0.75rem 1.5rem',\n background: '#f3f4f6',\n color: '#1f2937',\n borderRadius: '0.5rem',\n textDecoration: 'none',\n fontWeight: 500,\n fontSize: '0.875rem',\n transition: 'all 150ms',\n }}\n >\n {viewAllText}\n </a>\n </div>\n )}\n </div>\n ) : effectiveView === 'grid' ? (\n <div className={`site-kit-events-grid ${listClassName}`}>\n <div style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fill, minmax(280px, 1fr))',\n gap: '1.25rem',\n }}>\n {displayEvents.map((eventItem, index) => {\n const nextSchedule = eventItem.next_schedule || eventItem.schedules?.[0]\n const isFree = !eventItem.price || eventItem.price === 0\n const imageUrl = eventItem.featured_image_url\n const uniqueKey = nextSchedule\n ? `${eventItem.id}-${nextSchedule.id}`\n : `${eventItem.id}-${index}`\n \n return (\n <div\n key={uniqueKey}\n className={`site-kit-event-card site-kit-event-card--grid ${eventCardClassName}`}\n onClick={() => nextSchedule && handleEventClick(eventItem, nextSchedule)}\n style={{\n position: 'relative',\n minHeight: '220px',\n borderRadius: '0.75rem',\n overflow: 'hidden',\n cursor: nextSchedule ? 'pointer' : 'default',\n transition: 'all 150ms',\n border: '1px solid #e5e7eb',\n }}\n onMouseEnter={(e) => {\n if (nextSchedule) {\n e.currentTarget.style.boxShadow = '0 10px 25px -5px rgba(0, 0, 0, 0.15)'\n e.currentTarget.style.transform = 'translateY(-2px)'\n }\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.boxShadow = 'none'\n e.currentTarget.style.transform = 'none'\n }}\n >\n {/* Background image */}\n <div style={{\n position: 'absolute',\n inset: 0,\n background: imageUrl\n ? `linear-gradient(to top, rgba(0,0,0,0.75) 0%, rgba(0,0,0,0.35) 45%, rgba(0,0,0,0.15) 70%), url(${imageUrl}) center/cover`\n : 'linear-gradient(135deg, #4b5563 0%, #6b7280 100%)',\n }} />\n {/* Content overlay */}\n <div style={{\n position: 'relative',\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'flex-end',\n padding: '1.25rem',\n color: '#fff',\n }}>\n <h3 style={{ margin: 0, fontSize: '1.125rem', fontWeight: 600, color: '#fff', textShadow: '0 1px 2px rgba(0,0,0,0.5)' }}>\n {eventItem.name}\n </h3>\n {eventItem.short_description && (\n <p style={{ margin: '0.25rem 0 0', fontSize: '0.8125rem', opacity: 0.95, lineHeight: 1.4, overflow: 'hidden', textOverflow: 'ellipsis', maxHeight: '2.8em' }}>\n {eventItem.short_description}\n </p>\n )}\n {nextSchedule && (\n <div style={{ display: 'flex', flexWrap: 'wrap', gap: '0.75rem', marginTop: '0.75rem', fontSize: '0.8125rem', opacity: 0.95 }}>\n <span style={{ display: 'flex', alignItems: 'center', gap: '0.25rem' }}>\n <CalendarIcon />\n {formatDate(nextSchedule.starts_at)}\n </span>\n <span style={{ display: 'flex', alignItems: 'center', gap: '0.25rem' }}>\n <ClockIcon />\n {formatTime(nextSchedule.starts_at)}\n </span>\n {nextSchedule.spots_remaining !== null && nextSchedule.spots_remaining !== undefined && (\n <span>\n {nextSchedule.spots_remaining === 0 ? 'Sold Out' : `${nextSchedule.spots_remaining} spots left`}\n </span>\n )}\n </div>\n )}\n {eventItem.price_is_public && (\n <div style={{\n marginTop: '0.5rem',\n display: 'inline-block',\n padding: '0.25rem 0.5rem',\n background: 'rgba(255,255,255,0.2)',\n borderRadius: '9999px',\n fontSize: '0.875rem',\n fontWeight: 600,\n }}>\n {isFree ? 'Free' : formatPrice(eventItem.price ?? 0, eventItem.currency)}\n </div>\n )}\n </div>\n </div>\n )\n })}\n </div>\n \n {showViewAll && events.length > limit && (\n <div style={{ textAlign: 'center', marginTop: '1.5rem' }}>\n <a\n href={viewAllUrl}\n style={{\n display: 'inline-block',\n padding: '0.75rem 1.5rem',\n background: '#f3f4f6',\n color: '#1f2937',\n borderRadius: '0.5rem',\n textDecoration: 'none',\n fontWeight: 500,\n fontSize: '0.875rem',\n transition: 'all 150ms',\n }}\n >\n {viewAllText}\n </a>\n </div>\n )}\n </div>\n ) : (\n <div className={`site-kit-events-calendar ${calendarClassName}`}>\n <CalendarView\n events={events}\n onEventClick={handleEventClick}\n showNavigation={true}\n showHeader={true}\n />\n </div>\n )}\n \n {/* Registration Modal */}\n <EventModal\n event={event}\n schedule={schedule}\n isOpen={isOpen}\n onClose={closeModal}\n onSuccess={handleSuccess}\n onError={handleError}\n collectPhone={collectPhone}\n additionalFields={additionalFields}\n className={modalClassName}\n />\n </div>\n )\n}\n\n// ============================================\n// Helpers\n// ============================================\n\nfunction getApiUrl(): string {\n if (typeof window !== 'undefined') {\n return (window as any).__SITE_KIT_API_URL__ || 'https://api.uptrademedia.com'\n }\n return 'https://api.uptrademedia.com'\n}\n\nfunction getApiKey(): string {\n if (typeof window !== 'undefined') {\n return (window as any).__SITE_KIT_API_KEY__ || ''\n }\n return ''\n}\n\nexport default EventsWidget\n"]}