@sonordev/site-kit 1.2.7

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 (300) hide show
  1. package/README.md +376 -0
  2. package/dist/SetupWizard-Cki06kB0.d.mts +12 -0
  3. package/dist/SetupWizard-Cki06kB0.d.ts +12 -0
  4. package/dist/analytics/index.d.mts +93 -0
  5. package/dist/analytics/index.d.ts +93 -0
  6. package/dist/analytics/index.js +89 -0
  7. package/dist/analytics/index.js.map +1 -0
  8. package/dist/analytics/index.mjs +71 -0
  9. package/dist/analytics/index.mjs.map +1 -0
  10. package/dist/api-CWtoFJCO.d.mts +137 -0
  11. package/dist/api-CWtoFJCO.d.ts +137 -0
  12. package/dist/blog/index.d.mts +305 -0
  13. package/dist/blog/index.d.ts +305 -0
  14. package/dist/blog/index.js +1578 -0
  15. package/dist/blog/index.js.map +1 -0
  16. package/dist/blog/index.mjs +1562 -0
  17. package/dist/blog/index.mjs.map +1 -0
  18. package/dist/blog/server.d.mts +229 -0
  19. package/dist/blog/server.d.ts +229 -0
  20. package/dist/blog/server.js +692 -0
  21. package/dist/blog/server.js.map +1 -0
  22. package/dist/blog/server.mjs +666 -0
  23. package/dist/blog/server.mjs.map +1 -0
  24. package/dist/chunk-24277A3Q.mjs +968 -0
  25. package/dist/chunk-24277A3Q.mjs.map +1 -0
  26. package/dist/chunk-373TK6TZ.js +321 -0
  27. package/dist/chunk-373TK6TZ.js.map +1 -0
  28. package/dist/chunk-3MYZS6PD.js +30 -0
  29. package/dist/chunk-3MYZS6PD.js.map +1 -0
  30. package/dist/chunk-43GBM4SX.js +283 -0
  31. package/dist/chunk-43GBM4SX.js.map +1 -0
  32. package/dist/chunk-4XPGGLVP.mjs +53 -0
  33. package/dist/chunk-4XPGGLVP.mjs.map +1 -0
  34. package/dist/chunk-622GAQP5.js +2008 -0
  35. package/dist/chunk-622GAQP5.js.map +1 -0
  36. package/dist/chunk-6BIPAKL4.mjs +28 -0
  37. package/dist/chunk-6BIPAKL4.mjs.map +1 -0
  38. package/dist/chunk-6ZCISNAB.mjs +343 -0
  39. package/dist/chunk-6ZCISNAB.mjs.map +1 -0
  40. package/dist/chunk-72MQFHYJ.js +1429 -0
  41. package/dist/chunk-72MQFHYJ.js.map +1 -0
  42. package/dist/chunk-7557OTHW.js +62 -0
  43. package/dist/chunk-7557OTHW.js.map +1 -0
  44. package/dist/chunk-7FUV73JZ.js +981 -0
  45. package/dist/chunk-7FUV73JZ.js.map +1 -0
  46. package/dist/chunk-7RF6PVHA.mjs +324 -0
  47. package/dist/chunk-7RF6PVHA.mjs.map +1 -0
  48. package/dist/chunk-7RYCHO6D.mjs +134 -0
  49. package/dist/chunk-7RYCHO6D.mjs.map +1 -0
  50. package/dist/chunk-7UKPRW25.mjs +1999 -0
  51. package/dist/chunk-7UKPRW25.mjs.map +1 -0
  52. package/dist/chunk-7URAOG2M.js +14864 -0
  53. package/dist/chunk-7URAOG2M.js.map +1 -0
  54. package/dist/chunk-AFAO3TGS.mjs +810 -0
  55. package/dist/chunk-AFAO3TGS.mjs.map +1 -0
  56. package/dist/chunk-BYLIU6XG.js +343 -0
  57. package/dist/chunk-BYLIU6XG.js.map +1 -0
  58. package/dist/chunk-D63MUKZ6.mjs +4423 -0
  59. package/dist/chunk-D63MUKZ6.mjs.map +1 -0
  60. package/dist/chunk-DDKW2FNA.js +390 -0
  61. package/dist/chunk-DDKW2FNA.js.map +1 -0
  62. package/dist/chunk-DQYMKR27.mjs +341 -0
  63. package/dist/chunk-DQYMKR27.mjs.map +1 -0
  64. package/dist/chunk-DW5UJKHH.js +221 -0
  65. package/dist/chunk-DW5UJKHH.js.map +1 -0
  66. package/dist/chunk-EEZCR6E6.js +50 -0
  67. package/dist/chunk-EEZCR6E6.js.map +1 -0
  68. package/dist/chunk-GCJXQ4AG.mjs +59 -0
  69. package/dist/chunk-GCJXQ4AG.mjs.map +1 -0
  70. package/dist/chunk-JGNQK2G6.mjs +14845 -0
  71. package/dist/chunk-JGNQK2G6.mjs.map +1 -0
  72. package/dist/chunk-JTLOJLWQ.mjs +563 -0
  73. package/dist/chunk-JTLOJLWQ.mjs.map +1 -0
  74. package/dist/chunk-K23A4G76.mjs +202 -0
  75. package/dist/chunk-K23A4G76.mjs.map +1 -0
  76. package/dist/chunk-KKU3K7RG.js +336 -0
  77. package/dist/chunk-KKU3K7RG.js.map +1 -0
  78. package/dist/chunk-KUGMH4ZF.js +571 -0
  79. package/dist/chunk-KUGMH4ZF.js.map +1 -0
  80. package/dist/chunk-LBVWVP72.js +110 -0
  81. package/dist/chunk-LBVWVP72.js.map +1 -0
  82. package/dist/chunk-LIVWLY2P.js +138 -0
  83. package/dist/chunk-LIVWLY2P.js.map +1 -0
  84. package/dist/chunk-M2T6R7BA.mjs +1003 -0
  85. package/dist/chunk-M2T6R7BA.mjs.map +1 -0
  86. package/dist/chunk-MV3QN7PW.mjs +47 -0
  87. package/dist/chunk-MV3QN7PW.mjs.map +1 -0
  88. package/dist/chunk-OB7E654K.js +72 -0
  89. package/dist/chunk-OB7E654K.js.map +1 -0
  90. package/dist/chunk-OIIKTGRL.mjs +380 -0
  91. package/dist/chunk-OIIKTGRL.mjs.map +1 -0
  92. package/dist/chunk-P3UWIUJS.mjs +1427 -0
  93. package/dist/chunk-P3UWIUJS.mjs.map +1 -0
  94. package/dist/chunk-PKN27UMH.mjs +136 -0
  95. package/dist/chunk-PKN27UMH.mjs.map +1 -0
  96. package/dist/chunk-QXV4667R.mjs +105 -0
  97. package/dist/chunk-QXV4667R.mjs.map +1 -0
  98. package/dist/chunk-S7FRYNSU.mjs +315 -0
  99. package/dist/chunk-S7FRYNSU.mjs.map +1 -0
  100. package/dist/chunk-TFLQX7K7.mjs +68 -0
  101. package/dist/chunk-TFLQX7K7.mjs.map +1 -0
  102. package/dist/chunk-UWE5PCYJ.mjs +279 -0
  103. package/dist/chunk-UWE5PCYJ.mjs.map +1 -0
  104. package/dist/chunk-UYFDNX2F.js +4469 -0
  105. package/dist/chunk-UYFDNX2F.js.map +1 -0
  106. package/dist/chunk-W4PALSGM.js +350 -0
  107. package/dist/chunk-W4PALSGM.js.map +1 -0
  108. package/dist/chunk-WECQ6KOB.js +1008 -0
  109. package/dist/chunk-WECQ6KOB.js.map +1 -0
  110. package/dist/chunk-XQQWI6WB.js +814 -0
  111. package/dist/chunk-XQQWI6WB.js.map +1 -0
  112. package/dist/chunk-XZJOZJB6.js +140 -0
  113. package/dist/chunk-XZJOZJB6.js.map +1 -0
  114. package/dist/chunk-ZSMWDLMK.js +63 -0
  115. package/dist/chunk-ZSMWDLMK.js.map +1 -0
  116. package/dist/cli/index.js +37243 -0
  117. package/dist/cli/index.js.map +1 -0
  118. package/dist/cli/index.mjs +37209 -0
  119. package/dist/cli/index.mjs.map +1 -0
  120. package/dist/commerce/index.d.mts +170 -0
  121. package/dist/commerce/index.d.ts +170 -0
  122. package/dist/commerce/index.js +174 -0
  123. package/dist/commerce/index.js.map +1 -0
  124. package/dist/commerce/index.mjs +5 -0
  125. package/dist/commerce/index.mjs.map +1 -0
  126. package/dist/commerce/server.d.mts +107 -0
  127. package/dist/commerce/server.d.ts +107 -0
  128. package/dist/commerce/server.js +187 -0
  129. package/dist/commerce/server.js.map +1 -0
  130. package/dist/commerce/server.mjs +177 -0
  131. package/dist/commerce/server.mjs.map +1 -0
  132. package/dist/config/index.d.mts +43 -0
  133. package/dist/config/index.d.ts +43 -0
  134. package/dist/config/index.js +66 -0
  135. package/dist/config/index.js.map +1 -0
  136. package/dist/config/index.mjs +64 -0
  137. package/dist/config/index.mjs.map +1 -0
  138. package/dist/engage/index.d.mts +33 -0
  139. package/dist/engage/index.d.ts +33 -0
  140. package/dist/engage/index.js +22 -0
  141. package/dist/engage/index.js.map +1 -0
  142. package/dist/engage/index.mjs +5 -0
  143. package/dist/engage/index.mjs.map +1 -0
  144. package/dist/forms/index.d.mts +437 -0
  145. package/dist/forms/index.d.ts +437 -0
  146. package/dist/forms/index.js +1168 -0
  147. package/dist/forms/index.js.map +1 -0
  148. package/dist/forms/index.mjs +1142 -0
  149. package/dist/forms/index.mjs.map +1 -0
  150. package/dist/generators-2XKQMPKH.mjs +4 -0
  151. package/dist/generators-2XKQMPKH.mjs.map +1 -0
  152. package/dist/generators-DTMO36DV.js +33 -0
  153. package/dist/generators-DTMO36DV.js.map +1 -0
  154. package/dist/images/index.d.mts +4 -0
  155. package/dist/images/index.d.ts +4 -0
  156. package/dist/images/index.js +46 -0
  157. package/dist/images/index.js.map +1 -0
  158. package/dist/images/index.mjs +5 -0
  159. package/dist/images/index.mjs.map +1 -0
  160. package/dist/images/server.d.mts +69 -0
  161. package/dist/images/server.d.ts +69 -0
  162. package/dist/images/server.js +21 -0
  163. package/dist/images/server.js.map +1 -0
  164. package/dist/images/server.mjs +4 -0
  165. package/dist/images/server.mjs.map +1 -0
  166. package/dist/index.d.mts +846 -0
  167. package/dist/index.d.ts +846 -0
  168. package/dist/index.js +2623 -0
  169. package/dist/index.js.map +1 -0
  170. package/dist/index.mjs +2416 -0
  171. package/dist/index.mjs.map +1 -0
  172. package/dist/layout/index.d.mts +53 -0
  173. package/dist/layout/index.d.ts +53 -0
  174. package/dist/layout/index.js +187 -0
  175. package/dist/layout/index.js.map +1 -0
  176. package/dist/layout/index.mjs +185 -0
  177. package/dist/layout/index.mjs.map +1 -0
  178. package/dist/llms/index.d.mts +448 -0
  179. package/dist/llms/index.d.ts +448 -0
  180. package/dist/llms/index.js +581 -0
  181. package/dist/llms/index.js.map +1 -0
  182. package/dist/llms/index.mjs +529 -0
  183. package/dist/llms/index.mjs.map +1 -0
  184. package/dist/manifest/index.d.mts +62 -0
  185. package/dist/manifest/index.d.ts +62 -0
  186. package/dist/manifest/index.js +85 -0
  187. package/dist/manifest/index.js.map +1 -0
  188. package/dist/manifest/index.mjs +83 -0
  189. package/dist/manifest/index.mjs.map +1 -0
  190. package/dist/middleware/index.d.mts +63 -0
  191. package/dist/middleware/index.d.ts +63 -0
  192. package/dist/middleware/index.js +54 -0
  193. package/dist/middleware/index.js.map +1 -0
  194. package/dist/middleware/index.mjs +51 -0
  195. package/dist/middleware/index.mjs.map +1 -0
  196. package/dist/migrator-2MQHOFDQ.mjs +4 -0
  197. package/dist/migrator-2MQHOFDQ.mjs.map +1 -0
  198. package/dist/migrator-THJCF6MZ.js +37 -0
  199. package/dist/migrator-THJCF6MZ.js.map +1 -0
  200. package/dist/redirects/index.d.mts +78 -0
  201. package/dist/redirects/index.d.ts +78 -0
  202. package/dist/redirects/index.js +26 -0
  203. package/dist/redirects/index.js.map +1 -0
  204. package/dist/redirects/index.mjs +5 -0
  205. package/dist/redirects/index.mjs.map +1 -0
  206. package/dist/reputation/index.d.mts +57 -0
  207. package/dist/reputation/index.d.ts +57 -0
  208. package/dist/reputation/index.js +21 -0
  209. package/dist/reputation/index.js.map +1 -0
  210. package/dist/reputation/index.mjs +4 -0
  211. package/dist/reputation/index.mjs.map +1 -0
  212. package/dist/robots/index.d.mts +38 -0
  213. package/dist/robots/index.d.ts +38 -0
  214. package/dist/robots/index.js +52 -0
  215. package/dist/robots/index.js.map +1 -0
  216. package/dist/robots/index.mjs +50 -0
  217. package/dist/robots/index.mjs.map +1 -0
  218. package/dist/routing-B5XS-6_W.d.mts +118 -0
  219. package/dist/routing-DZYzyDHw.d.ts +118 -0
  220. package/dist/scanner-GAF5PO5F.js +53 -0
  221. package/dist/scanner-GAF5PO5F.js.map +1 -0
  222. package/dist/scanner-LKJKW7IT.mjs +4 -0
  223. package/dist/scanner-LKJKW7IT.mjs.map +1 -0
  224. package/dist/securityHeaders-nwZ6nP4g.d.mts +24 -0
  225. package/dist/securityHeaders-nwZ6nP4g.d.ts +24 -0
  226. package/dist/seo/index.d.mts +600 -0
  227. package/dist/seo/index.d.ts +600 -0
  228. package/dist/seo/index.js +883 -0
  229. package/dist/seo/index.js.map +1 -0
  230. package/dist/seo/index.mjs +773 -0
  231. package/dist/seo/index.mjs.map +1 -0
  232. package/dist/seo/register-sitemap-cli.js +151 -0
  233. package/dist/seo/register-sitemap-cli.js.map +1 -0
  234. package/dist/seo/register-sitemap-cli.mjs +144 -0
  235. package/dist/seo/register-sitemap-cli.mjs.map +1 -0
  236. package/dist/seo/server.d.mts +107 -0
  237. package/dist/seo/server.d.ts +107 -0
  238. package/dist/seo/server.js +207 -0
  239. package/dist/seo/server.js.map +1 -0
  240. package/dist/seo/server.mjs +186 -0
  241. package/dist/seo/server.mjs.map +1 -0
  242. package/dist/server-api-EWXKOQZA.mjs +4 -0
  243. package/dist/server-api-EWXKOQZA.mjs.map +1 -0
  244. package/dist/server-api-GJPNRYUP.js +81 -0
  245. package/dist/server-api-GJPNRYUP.js.map +1 -0
  246. package/dist/setup/client.d.mts +60 -0
  247. package/dist/setup/client.d.ts +60 -0
  248. package/dist/setup/client.js +31 -0
  249. package/dist/setup/client.js.map +1 -0
  250. package/dist/setup/client.mjs +6 -0
  251. package/dist/setup/client.mjs.map +1 -0
  252. package/dist/setup/index.d.mts +5 -0
  253. package/dist/setup/index.d.ts +5 -0
  254. package/dist/setup/index.js +35 -0
  255. package/dist/setup/index.js.map +1 -0
  256. package/dist/setup/index.mjs +6 -0
  257. package/dist/setup/index.mjs.map +1 -0
  258. package/dist/setup/server.d.mts +14 -0
  259. package/dist/setup/server.d.ts +14 -0
  260. package/dist/setup/server.js +13 -0
  261. package/dist/setup/server.js.map +1 -0
  262. package/dist/setup/server.mjs +4 -0
  263. package/dist/setup/server.mjs.map +1 -0
  264. package/dist/site-config/index.d.mts +24 -0
  265. package/dist/site-config/index.d.ts +24 -0
  266. package/dist/site-config/index.js +17 -0
  267. package/dist/site-config/index.js.map +1 -0
  268. package/dist/site-config/index.mjs +4 -0
  269. package/dist/site-config/index.mjs.map +1 -0
  270. package/dist/sitemap/index.d.mts +96 -0
  271. package/dist/sitemap/index.d.ts +96 -0
  272. package/dist/sitemap/index.js +288 -0
  273. package/dist/sitemap/index.js.map +1 -0
  274. package/dist/sitemap/index.mjs +285 -0
  275. package/dist/sitemap/index.mjs.map +1 -0
  276. package/dist/socket-loader-J26QHHOB.js +16 -0
  277. package/dist/socket-loader-J26QHHOB.js.map +1 -0
  278. package/dist/socket-loader-R7S2YJ2J.mjs +14 -0
  279. package/dist/socket-loader-R7S2YJ2J.mjs.map +1 -0
  280. package/dist/types-0dmq3k20.d.mts +168 -0
  281. package/dist/types-0dmq3k20.d.ts +168 -0
  282. package/dist/types-Blb2QNkV.d.mts +263 -0
  283. package/dist/types-Blb2QNkV.d.ts +263 -0
  284. package/dist/types-BnCwwUX3.d.mts +250 -0
  285. package/dist/types-BnCwwUX3.d.ts +250 -0
  286. package/dist/types-CGlnp43R.d.mts +312 -0
  287. package/dist/types-CGlnp43R.d.ts +312 -0
  288. package/dist/types-D08004rU.d.mts +179 -0
  289. package/dist/types-D08004rU.d.ts +179 -0
  290. package/dist/types-DNSYU7qI.d.mts +127 -0
  291. package/dist/types-DNSYU7qI.d.ts +127 -0
  292. package/dist/types-KZP_VWZp.d.mts +266 -0
  293. package/dist/types-KZP_VWZp.d.ts +266 -0
  294. package/dist/useEventModal-BVTx69XE.d.mts +274 -0
  295. package/dist/useEventModal-Dx1dItTJ.d.ts +274 -0
  296. package/dist/web-vitals-444RLW3B.js +252 -0
  297. package/dist/web-vitals-444RLW3B.js.map +1 -0
  298. package/dist/web-vitals-KPICZIEF.mjs +241 -0
  299. package/dist/web-vitals-KPICZIEF.mjs.map +1 -0
  300. package/package.json +192 -0
@@ -0,0 +1,274 @@
1
+ import { F as FetchOfferingsOptions, C as CommerceOffering, q as FetchEventsOptions, h as CheckoutCustomer, b as CheckoutResult, i as OfferingCardProps, j as OfferingListProps, E as EventTileProps, U as UpcomingEventsProps, l as ProductEmbedProps, m as EventEmbedProps, n as CheckoutFormProps, R as RegistrationFormProps, c as CommerceSchedule } from './types-CGlnp43R.mjs';
2
+ import * as react_jsx_runtime from 'react/jsx-runtime';
3
+
4
+ /**
5
+ * @sonordev/site-kit/commerce - Utility functions
6
+ */
7
+ declare function formatPrice(amount: number, currency?: string): string;
8
+ declare function formatDate(dateString: string): string;
9
+ declare function formatDateTime(dateString: string): string;
10
+ declare function formatTime(dateString: string): string;
11
+ declare function formatDateRange(startDate: string, endDate?: string): string;
12
+ declare function getRelativeTimeUntil(dateString: string): string;
13
+ declare function getSpotsRemaining(capacity: number | null | undefined, registrations?: number): number | null;
14
+ declare function isEventSoldOut(capacity: number | null | undefined, registrations?: number): boolean;
15
+ declare function getOfferingUrl(slug: string, type: string, basePaths?: {
16
+ product?: string;
17
+ service?: string;
18
+ event?: string;
19
+ class?: string;
20
+ }): string;
21
+
22
+ /**
23
+ * @sonordev/site-kit/commerce - Commerce API
24
+ *
25
+ * API functions for fetching offerings, submitting orders, and registrations.
26
+ * All data goes through Portal API with API key auth - never Supabase directly.
27
+ */
28
+
29
+ declare function fetchOfferings(options?: FetchOfferingsOptions): Promise<CommerceOffering[]>;
30
+ declare function fetchOffering(slug: string): Promise<CommerceOffering | null>;
31
+ declare function fetchLatestOffering(type?: string, category?: string): Promise<CommerceOffering | null>;
32
+ declare function fetchUpcomingEvents(options?: FetchEventsOptions): Promise<CommerceOffering[]>;
33
+ declare function fetchNextEvent(category?: string): Promise<CommerceOffering | null>;
34
+ declare function fetchProducts(options?: Omit<FetchOfferingsOptions, 'type'>): Promise<CommerceOffering[]>;
35
+ declare function fetchServices(options?: Omit<FetchOfferingsOptions, 'type'>): Promise<CommerceOffering[]>;
36
+ /**
37
+ * Fetch products via public API
38
+ */
39
+ declare function fetchProductsPublic(options?: {
40
+ category?: string;
41
+ limit?: number;
42
+ offset?: number;
43
+ orderBy?: 'name' | 'price' | 'created_at' | 'sort_order';
44
+ order?: 'asc' | 'desc';
45
+ search?: string;
46
+ }): Promise<{
47
+ products: CommerceOffering[];
48
+ total: number;
49
+ }>;
50
+ /**
51
+ * Fetch single product by slug
52
+ */
53
+ declare function fetchProductBySlug(slug: string): Promise<CommerceOffering | null>;
54
+ /**
55
+ * Fetch product categories
56
+ */
57
+ declare function fetchCategories(): Promise<{
58
+ id: string;
59
+ name: string;
60
+ slug: string;
61
+ }[]>;
62
+ interface ShippingAddress {
63
+ street1: string;
64
+ street2?: string;
65
+ city: string;
66
+ state: string;
67
+ zip: string;
68
+ country?: string;
69
+ name?: string;
70
+ phone?: string;
71
+ }
72
+ interface ShippingRate {
73
+ carrier: string;
74
+ service: string;
75
+ amount: string;
76
+ currency: string;
77
+ estimatedDays?: number;
78
+ objectId?: string;
79
+ }
80
+ interface ValidateAddressResult {
81
+ isValid: boolean;
82
+ normalized?: {
83
+ street1: string;
84
+ street2?: string;
85
+ city: string;
86
+ state: string;
87
+ zip: string;
88
+ country: string;
89
+ };
90
+ messages?: string[];
91
+ }
92
+ /**
93
+ * Fetch shipping rates for checkout (when shipping is enabled)
94
+ */
95
+ declare function fetchShippingRates(shippingAddress: ShippingAddress, offerings: Array<{
96
+ offering_id: string;
97
+ quantity?: number;
98
+ }>): Promise<ShippingRate[]>;
99
+ /**
100
+ * Validate a shipping address before checkout
101
+ */
102
+ declare function validateAddress(address: Omit<ShippingAddress, 'name' | 'phone'>): Promise<ValidateAddressResult>;
103
+ /**
104
+ * Fetch the active payment processor for the current project.
105
+ * Returns 'stripe' | 'square' | null.
106
+ */
107
+ declare function fetchActiveProcessor(): Promise<'stripe' | 'square' | null>;
108
+ declare function registerForEvent(eventId: string, scheduleId: string | undefined, customer: CheckoutCustomer): Promise<CheckoutResult>;
109
+ interface CreateCheckoutOptions {
110
+ offeringId: string;
111
+ variantId?: string;
112
+ scheduleId?: string;
113
+ quantity?: number;
114
+ customer?: CheckoutCustomer;
115
+ successUrl?: string;
116
+ cancelUrl?: string;
117
+ /** Square card nonce from Web Payments SDK for inline card collection (no redirect) */
118
+ sourceId?: string;
119
+ /** Shipping address (required for physical products when shipping_enabled) */
120
+ shippingAddress?: ShippingAddress;
121
+ /** Selected shipping carrier from rates */
122
+ shippingCarrier?: string;
123
+ /** Selected shipping service from rates */
124
+ shippingService?: string;
125
+ /** Shipping cost in dollars (from selected rate) */
126
+ shippingCost?: number;
127
+ }
128
+ interface ProcessorConfig {
129
+ processor: 'stripe' | 'square' | null;
130
+ squareAppId?: string;
131
+ squareLocationId?: string;
132
+ squareEnvironment?: string;
133
+ stripePublishableKey?: string;
134
+ /** Whether shipping is enabled for this project */
135
+ shipping_enabled?: boolean;
136
+ }
137
+ /**
138
+ * Fetch client-side SDK config for the active payment processor.
139
+ * Returns public-safe values (app IDs, location IDs) for SDK initialization.
140
+ */
141
+ declare function fetchProcessorConfig(): Promise<ProcessorConfig | null>;
142
+ /**
143
+ * Create a checkout session for a product or service
144
+ * Supports both Stripe and Square based on project configuration
145
+ */
146
+ declare function createCheckoutSession(optionsOrOfferingId: CreateCheckoutOptions | string, legacyOptions?: Omit<CreateCheckoutOptions, 'offeringId'>): Promise<CheckoutResult>;
147
+
148
+ declare function OfferingCard({ offering, variant, showImage, showPrice, showDescription, showCta, ctaText, onCtaClick, className, imageClassName, titleClassName, priceClassName, descriptionClassName, ctaClassName, }: OfferingCardProps): react_jsx_runtime.JSX.Element;
149
+
150
+ declare function OfferingList({ offerings: propOfferings, type, category, limit, status, layout, columns, cardVariant, showFilters, emptyMessage, showImage, showPrice, showDescription, showCta, ctaText, onCtaClick, className, cardClassName, filterClassName, renderCard, renderEmpty, }: OfferingListProps): react_jsx_runtime.JSX.Element;
151
+
152
+ declare function EventTile({ event, variant, showDate, showTime, showLocation, showCapacity, showPrice, showCta, ctaText, onRegister, onCtaClick, className, dateClassName, titleClassName, ctaClassName, }: EventTileProps): react_jsx_runtime.JSX.Element;
153
+
154
+ declare function UpcomingEvents({ events: propEvents, limit, category, variant, layout, showViewAll, viewAllUrl, viewAllText, emptyMessage, title, onRegister, onCtaClick, className, titleClassName, eventClassName, }: UpcomingEventsProps): react_jsx_runtime.JSX.Element;
155
+
156
+ declare function ProductEmbed({ product: propProduct, slug, mode, // 'specific', 'latest', 'featured'
157
+ category, variant, showImage, showPrice, showDescription, showCta, ctaText, onCtaClick, className, }: ProductEmbedProps): react_jsx_runtime.JSX.Element | null;
158
+
159
+ declare function EventEmbed({ event: propEvent, slug, mode, // 'specific', 'next'
160
+ category, variant, showDate, showTime, showLocation, showCapacity, showPrice, showCta, ctaText, onRegister, onCtaClick, className, }: EventEmbedProps): react_jsx_runtime.JSX.Element | null;
161
+
162
+ declare function CheckoutForm({ offering, scheduleId, variantId, quantity: initialQuantity, mode, // 'checkout' | 'register'
163
+ showQuantity, submitText, onSuccess, onError, className, formClassName, inputClassName, buttonClassName, }: CheckoutFormProps): react_jsx_runtime.JSX.Element;
164
+
165
+ declare function RegistrationForm({ event, scheduleId, title, submitText, successMessage, collectPhone, additionalFields, onSuccess, onError, className, formClassName, inputClassName, buttonClassName, }: RegistrationFormProps): react_jsx_runtime.JSX.Element;
166
+
167
+ interface CalendarViewProps {
168
+ /** Pre-loaded events (optional - will fetch if not provided) */
169
+ events?: CommerceOffering[];
170
+ /** Initial month to display (defaults to current) */
171
+ initialDate?: Date;
172
+ /** Category filter */
173
+ category?: string;
174
+ /** Callback when event is clicked */
175
+ onEventClick?: (event: CommerceOffering, schedule: CommerceSchedule) => void;
176
+ /** Callback when day is clicked */
177
+ onDayClick?: (date: Date, events: EventOnDay[]) => void;
178
+ /** Show navigation arrows */
179
+ showNavigation?: boolean;
180
+ /** Show month/year header */
181
+ showHeader?: boolean;
182
+ /** First day of week (0 = Sunday, 1 = Monday) */
183
+ weekStartsOn?: 0 | 1;
184
+ /** Minimum date to show */
185
+ minDate?: Date;
186
+ /** Maximum date to show */
187
+ maxDate?: Date;
188
+ /** How to display events in cells: 'title' = text, 'image' = thumbnail with details on hover */
189
+ eventDisplay?: 'title' | 'image';
190
+ /** Custom class names */
191
+ className?: string;
192
+ headerClassName?: string;
193
+ dayClassName?: string;
194
+ eventClassName?: string;
195
+ todayClassName?: string;
196
+ }
197
+ interface EventOnDay {
198
+ event: CommerceOffering;
199
+ schedule: CommerceSchedule;
200
+ }
201
+ declare function CalendarView({ events: propEvents, initialDate, category, onEventClick, onDayClick, showNavigation, showHeader, weekStartsOn, minDate, maxDate, eventDisplay, className, headerClassName, dayClassName, eventClassName, todayClassName, }: CalendarViewProps): react_jsx_runtime.JSX.Element;
202
+
203
+ interface EventModalProps {
204
+ /** Event to display */
205
+ event: CommerceOffering | null;
206
+ /** Specific schedule (optional - uses first upcoming if not provided) */
207
+ schedule?: CommerceSchedule | null;
208
+ /** Whether modal is open */
209
+ isOpen: boolean;
210
+ /** Close modal callback */
211
+ onClose: () => void;
212
+ /** Success callback */
213
+ onSuccess?: (result: CheckoutResult) => void;
214
+ /** Error callback */
215
+ onError?: (error: string) => void;
216
+ /** Collect phone number */
217
+ collectPhone?: boolean;
218
+ /** Additional form fields */
219
+ additionalFields?: AdditionalField[];
220
+ /** Custom class names */
221
+ className?: string;
222
+ overlayClassName?: string;
223
+ contentClassName?: string;
224
+ }
225
+ interface AdditionalField {
226
+ name: string;
227
+ label: string;
228
+ type?: 'text' | 'email' | 'tel' | 'textarea' | 'select' | 'number';
229
+ required?: boolean;
230
+ placeholder?: string;
231
+ options?: {
232
+ value: string;
233
+ label: string;
234
+ }[];
235
+ }
236
+ declare function EventModal({ event, schedule: propSchedule, isOpen, onClose, onSuccess, onError, collectPhone, additionalFields, className, overlayClassName, contentClassName, }: EventModalProps): react_jsx_runtime.JSX.Element | null;
237
+
238
+ interface EventCalendarProps extends Omit<CalendarViewProps, 'onEventClick'> {
239
+ /** Callback when registration/checkout succeeds */
240
+ onRegistrationSuccess?: (result: CheckoutResult) => void;
241
+ /** Callback when registration/checkout fails */
242
+ onRegistrationError?: (error: string) => void;
243
+ /** Collect phone number in registration form */
244
+ collectPhone?: boolean;
245
+ /** Additional form fields for registration */
246
+ additionalFields?: AdditionalField[];
247
+ /** Custom modal class names */
248
+ modalClassName?: string;
249
+ modalOverlayClassName?: string;
250
+ modalContentClassName?: string;
251
+ }
252
+ declare function EventCalendar({ onRegistrationSuccess, onRegistrationError, collectPhone, additionalFields, modalClassName, modalOverlayClassName, modalContentClassName, ...calendarProps }: EventCalendarProps): react_jsx_runtime.JSX.Element;
253
+
254
+ /**
255
+ * @sonordev/site-kit/commerce - useEventModal hook
256
+ *
257
+ * Hook for managing event modal state.
258
+ */
259
+
260
+ interface UseEventModalReturn {
261
+ /** Currently selected event */
262
+ event: CommerceOffering | null;
263
+ /** Currently selected schedule */
264
+ schedule: CommerceSchedule | null;
265
+ /** Whether modal is open */
266
+ isOpen: boolean;
267
+ /** Open modal with event */
268
+ openModal: (event: CommerceOffering, schedule?: CommerceSchedule) => void;
269
+ /** Close modal */
270
+ closeModal: () => void;
271
+ }
272
+ declare function useEventModal(): UseEventModalReturn;
273
+
274
+ export { formatDate as A, formatDateTime as B, type CreateCheckoutOptions as C, formatTime as D, EventTile as E, formatDateRange as F, getRelativeTimeUntil as G, getSpotsRemaining as H, isEventSoldOut as I, getOfferingUrl as J, OfferingCard as O, type ProcessorConfig as P, RegistrationForm as R, type ShippingAddress as S, UpcomingEvents as U, type ValidateAddressResult as V, fetchOffering as a, fetchLatestOffering as b, fetchProducts as c, fetchProductsPublic as d, fetchProductBySlug as e, fetchOfferings as f, fetchCategories as g, fetchServices as h, fetchUpcomingEvents as i, fetchNextEvent as j, fetchShippingRates as k, createCheckoutSession as l, fetchActiveProcessor as m, fetchProcessorConfig as n, type ShippingRate as o, OfferingList as p, ProductEmbed as q, registerForEvent as r, EventEmbed as s, CheckoutForm as t, CalendarView as u, validateAddress as v, EventModal as w, EventCalendar as x, useEventModal as y, formatPrice as z };
@@ -0,0 +1,274 @@
1
+ import { F as FetchOfferingsOptions, C as CommerceOffering, q as FetchEventsOptions, h as CheckoutCustomer, b as CheckoutResult, i as OfferingCardProps, j as OfferingListProps, E as EventTileProps, U as UpcomingEventsProps, l as ProductEmbedProps, m as EventEmbedProps, n as CheckoutFormProps, R as RegistrationFormProps, c as CommerceSchedule } from './types-CGlnp43R.js';
2
+ import * as react_jsx_runtime from 'react/jsx-runtime';
3
+
4
+ /**
5
+ * @sonordev/site-kit/commerce - Utility functions
6
+ */
7
+ declare function formatPrice(amount: number, currency?: string): string;
8
+ declare function formatDate(dateString: string): string;
9
+ declare function formatDateTime(dateString: string): string;
10
+ declare function formatTime(dateString: string): string;
11
+ declare function formatDateRange(startDate: string, endDate?: string): string;
12
+ declare function getRelativeTimeUntil(dateString: string): string;
13
+ declare function getSpotsRemaining(capacity: number | null | undefined, registrations?: number): number | null;
14
+ declare function isEventSoldOut(capacity: number | null | undefined, registrations?: number): boolean;
15
+ declare function getOfferingUrl(slug: string, type: string, basePaths?: {
16
+ product?: string;
17
+ service?: string;
18
+ event?: string;
19
+ class?: string;
20
+ }): string;
21
+
22
+ /**
23
+ * @sonordev/site-kit/commerce - Commerce API
24
+ *
25
+ * API functions for fetching offerings, submitting orders, and registrations.
26
+ * All data goes through Portal API with API key auth - never Supabase directly.
27
+ */
28
+
29
+ declare function fetchOfferings(options?: FetchOfferingsOptions): Promise<CommerceOffering[]>;
30
+ declare function fetchOffering(slug: string): Promise<CommerceOffering | null>;
31
+ declare function fetchLatestOffering(type?: string, category?: string): Promise<CommerceOffering | null>;
32
+ declare function fetchUpcomingEvents(options?: FetchEventsOptions): Promise<CommerceOffering[]>;
33
+ declare function fetchNextEvent(category?: string): Promise<CommerceOffering | null>;
34
+ declare function fetchProducts(options?: Omit<FetchOfferingsOptions, 'type'>): Promise<CommerceOffering[]>;
35
+ declare function fetchServices(options?: Omit<FetchOfferingsOptions, 'type'>): Promise<CommerceOffering[]>;
36
+ /**
37
+ * Fetch products via public API
38
+ */
39
+ declare function fetchProductsPublic(options?: {
40
+ category?: string;
41
+ limit?: number;
42
+ offset?: number;
43
+ orderBy?: 'name' | 'price' | 'created_at' | 'sort_order';
44
+ order?: 'asc' | 'desc';
45
+ search?: string;
46
+ }): Promise<{
47
+ products: CommerceOffering[];
48
+ total: number;
49
+ }>;
50
+ /**
51
+ * Fetch single product by slug
52
+ */
53
+ declare function fetchProductBySlug(slug: string): Promise<CommerceOffering | null>;
54
+ /**
55
+ * Fetch product categories
56
+ */
57
+ declare function fetchCategories(): Promise<{
58
+ id: string;
59
+ name: string;
60
+ slug: string;
61
+ }[]>;
62
+ interface ShippingAddress {
63
+ street1: string;
64
+ street2?: string;
65
+ city: string;
66
+ state: string;
67
+ zip: string;
68
+ country?: string;
69
+ name?: string;
70
+ phone?: string;
71
+ }
72
+ interface ShippingRate {
73
+ carrier: string;
74
+ service: string;
75
+ amount: string;
76
+ currency: string;
77
+ estimatedDays?: number;
78
+ objectId?: string;
79
+ }
80
+ interface ValidateAddressResult {
81
+ isValid: boolean;
82
+ normalized?: {
83
+ street1: string;
84
+ street2?: string;
85
+ city: string;
86
+ state: string;
87
+ zip: string;
88
+ country: string;
89
+ };
90
+ messages?: string[];
91
+ }
92
+ /**
93
+ * Fetch shipping rates for checkout (when shipping is enabled)
94
+ */
95
+ declare function fetchShippingRates(shippingAddress: ShippingAddress, offerings: Array<{
96
+ offering_id: string;
97
+ quantity?: number;
98
+ }>): Promise<ShippingRate[]>;
99
+ /**
100
+ * Validate a shipping address before checkout
101
+ */
102
+ declare function validateAddress(address: Omit<ShippingAddress, 'name' | 'phone'>): Promise<ValidateAddressResult>;
103
+ /**
104
+ * Fetch the active payment processor for the current project.
105
+ * Returns 'stripe' | 'square' | null.
106
+ */
107
+ declare function fetchActiveProcessor(): Promise<'stripe' | 'square' | null>;
108
+ declare function registerForEvent(eventId: string, scheduleId: string | undefined, customer: CheckoutCustomer): Promise<CheckoutResult>;
109
+ interface CreateCheckoutOptions {
110
+ offeringId: string;
111
+ variantId?: string;
112
+ scheduleId?: string;
113
+ quantity?: number;
114
+ customer?: CheckoutCustomer;
115
+ successUrl?: string;
116
+ cancelUrl?: string;
117
+ /** Square card nonce from Web Payments SDK for inline card collection (no redirect) */
118
+ sourceId?: string;
119
+ /** Shipping address (required for physical products when shipping_enabled) */
120
+ shippingAddress?: ShippingAddress;
121
+ /** Selected shipping carrier from rates */
122
+ shippingCarrier?: string;
123
+ /** Selected shipping service from rates */
124
+ shippingService?: string;
125
+ /** Shipping cost in dollars (from selected rate) */
126
+ shippingCost?: number;
127
+ }
128
+ interface ProcessorConfig {
129
+ processor: 'stripe' | 'square' | null;
130
+ squareAppId?: string;
131
+ squareLocationId?: string;
132
+ squareEnvironment?: string;
133
+ stripePublishableKey?: string;
134
+ /** Whether shipping is enabled for this project */
135
+ shipping_enabled?: boolean;
136
+ }
137
+ /**
138
+ * Fetch client-side SDK config for the active payment processor.
139
+ * Returns public-safe values (app IDs, location IDs) for SDK initialization.
140
+ */
141
+ declare function fetchProcessorConfig(): Promise<ProcessorConfig | null>;
142
+ /**
143
+ * Create a checkout session for a product or service
144
+ * Supports both Stripe and Square based on project configuration
145
+ */
146
+ declare function createCheckoutSession(optionsOrOfferingId: CreateCheckoutOptions | string, legacyOptions?: Omit<CreateCheckoutOptions, 'offeringId'>): Promise<CheckoutResult>;
147
+
148
+ declare function OfferingCard({ offering, variant, showImage, showPrice, showDescription, showCta, ctaText, onCtaClick, className, imageClassName, titleClassName, priceClassName, descriptionClassName, ctaClassName, }: OfferingCardProps): react_jsx_runtime.JSX.Element;
149
+
150
+ declare function OfferingList({ offerings: propOfferings, type, category, limit, status, layout, columns, cardVariant, showFilters, emptyMessage, showImage, showPrice, showDescription, showCta, ctaText, onCtaClick, className, cardClassName, filterClassName, renderCard, renderEmpty, }: OfferingListProps): react_jsx_runtime.JSX.Element;
151
+
152
+ declare function EventTile({ event, variant, showDate, showTime, showLocation, showCapacity, showPrice, showCta, ctaText, onRegister, onCtaClick, className, dateClassName, titleClassName, ctaClassName, }: EventTileProps): react_jsx_runtime.JSX.Element;
153
+
154
+ declare function UpcomingEvents({ events: propEvents, limit, category, variant, layout, showViewAll, viewAllUrl, viewAllText, emptyMessage, title, onRegister, onCtaClick, className, titleClassName, eventClassName, }: UpcomingEventsProps): react_jsx_runtime.JSX.Element;
155
+
156
+ declare function ProductEmbed({ product: propProduct, slug, mode, // 'specific', 'latest', 'featured'
157
+ category, variant, showImage, showPrice, showDescription, showCta, ctaText, onCtaClick, className, }: ProductEmbedProps): react_jsx_runtime.JSX.Element | null;
158
+
159
+ declare function EventEmbed({ event: propEvent, slug, mode, // 'specific', 'next'
160
+ category, variant, showDate, showTime, showLocation, showCapacity, showPrice, showCta, ctaText, onRegister, onCtaClick, className, }: EventEmbedProps): react_jsx_runtime.JSX.Element | null;
161
+
162
+ declare function CheckoutForm({ offering, scheduleId, variantId, quantity: initialQuantity, mode, // 'checkout' | 'register'
163
+ showQuantity, submitText, onSuccess, onError, className, formClassName, inputClassName, buttonClassName, }: CheckoutFormProps): react_jsx_runtime.JSX.Element;
164
+
165
+ declare function RegistrationForm({ event, scheduleId, title, submitText, successMessage, collectPhone, additionalFields, onSuccess, onError, className, formClassName, inputClassName, buttonClassName, }: RegistrationFormProps): react_jsx_runtime.JSX.Element;
166
+
167
+ interface CalendarViewProps {
168
+ /** Pre-loaded events (optional - will fetch if not provided) */
169
+ events?: CommerceOffering[];
170
+ /** Initial month to display (defaults to current) */
171
+ initialDate?: Date;
172
+ /** Category filter */
173
+ category?: string;
174
+ /** Callback when event is clicked */
175
+ onEventClick?: (event: CommerceOffering, schedule: CommerceSchedule) => void;
176
+ /** Callback when day is clicked */
177
+ onDayClick?: (date: Date, events: EventOnDay[]) => void;
178
+ /** Show navigation arrows */
179
+ showNavigation?: boolean;
180
+ /** Show month/year header */
181
+ showHeader?: boolean;
182
+ /** First day of week (0 = Sunday, 1 = Monday) */
183
+ weekStartsOn?: 0 | 1;
184
+ /** Minimum date to show */
185
+ minDate?: Date;
186
+ /** Maximum date to show */
187
+ maxDate?: Date;
188
+ /** How to display events in cells: 'title' = text, 'image' = thumbnail with details on hover */
189
+ eventDisplay?: 'title' | 'image';
190
+ /** Custom class names */
191
+ className?: string;
192
+ headerClassName?: string;
193
+ dayClassName?: string;
194
+ eventClassName?: string;
195
+ todayClassName?: string;
196
+ }
197
+ interface EventOnDay {
198
+ event: CommerceOffering;
199
+ schedule: CommerceSchedule;
200
+ }
201
+ declare function CalendarView({ events: propEvents, initialDate, category, onEventClick, onDayClick, showNavigation, showHeader, weekStartsOn, minDate, maxDate, eventDisplay, className, headerClassName, dayClassName, eventClassName, todayClassName, }: CalendarViewProps): react_jsx_runtime.JSX.Element;
202
+
203
+ interface EventModalProps {
204
+ /** Event to display */
205
+ event: CommerceOffering | null;
206
+ /** Specific schedule (optional - uses first upcoming if not provided) */
207
+ schedule?: CommerceSchedule | null;
208
+ /** Whether modal is open */
209
+ isOpen: boolean;
210
+ /** Close modal callback */
211
+ onClose: () => void;
212
+ /** Success callback */
213
+ onSuccess?: (result: CheckoutResult) => void;
214
+ /** Error callback */
215
+ onError?: (error: string) => void;
216
+ /** Collect phone number */
217
+ collectPhone?: boolean;
218
+ /** Additional form fields */
219
+ additionalFields?: AdditionalField[];
220
+ /** Custom class names */
221
+ className?: string;
222
+ overlayClassName?: string;
223
+ contentClassName?: string;
224
+ }
225
+ interface AdditionalField {
226
+ name: string;
227
+ label: string;
228
+ type?: 'text' | 'email' | 'tel' | 'textarea' | 'select' | 'number';
229
+ required?: boolean;
230
+ placeholder?: string;
231
+ options?: {
232
+ value: string;
233
+ label: string;
234
+ }[];
235
+ }
236
+ declare function EventModal({ event, schedule: propSchedule, isOpen, onClose, onSuccess, onError, collectPhone, additionalFields, className, overlayClassName, contentClassName, }: EventModalProps): react_jsx_runtime.JSX.Element | null;
237
+
238
+ interface EventCalendarProps extends Omit<CalendarViewProps, 'onEventClick'> {
239
+ /** Callback when registration/checkout succeeds */
240
+ onRegistrationSuccess?: (result: CheckoutResult) => void;
241
+ /** Callback when registration/checkout fails */
242
+ onRegistrationError?: (error: string) => void;
243
+ /** Collect phone number in registration form */
244
+ collectPhone?: boolean;
245
+ /** Additional form fields for registration */
246
+ additionalFields?: AdditionalField[];
247
+ /** Custom modal class names */
248
+ modalClassName?: string;
249
+ modalOverlayClassName?: string;
250
+ modalContentClassName?: string;
251
+ }
252
+ declare function EventCalendar({ onRegistrationSuccess, onRegistrationError, collectPhone, additionalFields, modalClassName, modalOverlayClassName, modalContentClassName, ...calendarProps }: EventCalendarProps): react_jsx_runtime.JSX.Element;
253
+
254
+ /**
255
+ * @sonordev/site-kit/commerce - useEventModal hook
256
+ *
257
+ * Hook for managing event modal state.
258
+ */
259
+
260
+ interface UseEventModalReturn {
261
+ /** Currently selected event */
262
+ event: CommerceOffering | null;
263
+ /** Currently selected schedule */
264
+ schedule: CommerceSchedule | null;
265
+ /** Whether modal is open */
266
+ isOpen: boolean;
267
+ /** Open modal with event */
268
+ openModal: (event: CommerceOffering, schedule?: CommerceSchedule) => void;
269
+ /** Close modal */
270
+ closeModal: () => void;
271
+ }
272
+ declare function useEventModal(): UseEventModalReturn;
273
+
274
+ export { formatDate as A, formatDateTime as B, type CreateCheckoutOptions as C, formatTime as D, EventTile as E, formatDateRange as F, getRelativeTimeUntil as G, getSpotsRemaining as H, isEventSoldOut as I, getOfferingUrl as J, OfferingCard as O, type ProcessorConfig as P, RegistrationForm as R, type ShippingAddress as S, UpcomingEvents as U, type ValidateAddressResult as V, fetchOffering as a, fetchLatestOffering as b, fetchProducts as c, fetchProductsPublic as d, fetchProductBySlug as e, fetchOfferings as f, fetchCategories as g, fetchServices as h, fetchUpcomingEvents as i, fetchNextEvent as j, fetchShippingRates as k, createCheckoutSession as l, fetchActiveProcessor as m, fetchProcessorConfig as n, type ShippingRate as o, OfferingList as p, ProductEmbed as q, registerForEvent as r, EventEmbed as s, CheckoutForm as t, CalendarView as u, validateAddress as v, EventModal as w, EventCalendar as x, useEventModal as y, formatPrice as z };