@wix/agent-skills 1.21.0 → 1.23.0

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 (269) hide show
  1. package/package.json +1 -1
  2. package/skills/wix-app/SKILL.md +71 -7
  3. package/skills/wix-app/references/APP_VALIDATION.md +16 -10
  4. package/skills/wix-app/references/DASHBOARD_PAGE.md +11 -25
  5. package/skills/wix-app/references/DATA_COLLECTION.md +16 -219
  6. package/skills/wix-app/references/SDK_MODULE_MAP.md +2 -0
  7. package/skills/wix-app/references/dashboard-page/DATA_SOURCES.md +182 -0
  8. package/skills/wix-app/references/dashboard-page/DRAFT_TEMPLATE.md +97 -0
  9. package/skills/wix-app/references/dashboard-page/DRAFT_TEMPLATE_COLLECTION.md +184 -0
  10. package/skills/wix-app/references/dashboard-page/DRAFT_TEMPLATE_ROUTER.md +203 -0
  11. package/skills/wix-app/references/dashboard-page/DRAFT_TEMPLATE_SETTINGS.md +44 -0
  12. package/skills/wix-app/references/dashboard-page/QUERY_AND_PAGING.md +182 -0
  13. package/skills/wix-app/references/dashboard-page/TABLE_STATE.md +133 -0
  14. package/skills/wix-app/references/dashboard-page/UX_SUCCESS_MODEL.md +10 -5
  15. package/skills/wix-app/references/data-collection/LIFECYCLE.md +68 -0
  16. package/skills/wix-app/references/data-collection/PERMISSIONS.md +47 -0
  17. package/skills/wix-app/references/data-collection/SCHEMA.md +181 -0
  18. package/skills/wix-app/references/data-collection/WIX_DATA.md +38 -66
  19. package/skills/wix-headless-fast/SKILL.md +95 -230
  20. package/skills/wix-headless-fast/cold-start/bootstrap.mjs +156 -0
  21. package/skills/wix-headless-fast/{entry/skill.md → cold-start/cold-start.md} +17 -14
  22. package/skills/wix-headless-fast/guides/existing-site.md +78 -0
  23. package/skills/wix-headless-fast/guides/migration.md +43 -0
  24. package/skills/wix-headless-fast/guides/reference-mode.md +100 -0
  25. package/skills/wix-headless-fast/install/AGENTS.md +9 -4
  26. package/skills/wix-headless-fast/install/agents-md.mjs +5 -1
  27. package/skills/wix-headless-fast/install/attach.mjs +25 -47
  28. package/skills/wix-headless-fast/install/check.mjs +87 -0
  29. package/skills/wix-headless-fast/install/context.mjs +126 -0
  30. package/skills/wix-headless-fast/install/deploy.mjs +106 -80
  31. package/skills/wix-headless-fast/install/lock.mjs +55 -0
  32. package/skills/wix-headless-fast/install/setup.mjs +83 -23
  33. package/skills/wix-headless-fast/install/templates.mjs +168 -0
  34. package/skills/wix-manage/SKILL.md +3 -3
  35. package/skills/wix-manage/references/app-installation/install-wix-apps.md +68 -2
  36. package/skills/wix-manage/references/contacts/bulk-label-and-unlabel-contacts.md +37 -4
  37. package/skills/wix-manage/references/ecommerce/ecom-pricing.md +29 -3
  38. package/skills/wix-manage/references/google-ads/google-ads-dashboard-navigation.md +27 -0
  39. package/skills/wix-manage/references/google-ads/manage-campaign-success-guide.md +83 -37
  40. package/skills/wix-manage/references/sites/site-import.md +101 -37
  41. package/skills/wix-headless-fast/references/blog/INSTRUCTIONS.md +0 -303
  42. package/skills/wix-headless-fast/references/blog/app/components/blog/BlogFeedView.tsx +0 -136
  43. package/skills/wix-headless-fast/references/blog/app/components/blog/PostView.tsx +0 -112
  44. package/skills/wix-headless-fast/references/blog/app/components/blog/RichContent.tsx +0 -42
  45. package/skills/wix-headless-fast/references/blog/app/hooks/blog/useBlogFeed.ts +0 -31
  46. package/skills/wix-headless-fast/references/blog/app/hooks/blog/usePost.ts +0 -22
  47. package/skills/wix-headless-fast/references/blog/app/wix/blog/blog-feed-store.ts +0 -137
  48. package/skills/wix-headless-fast/references/blog/app/wix/blog/post-store.ts +0 -78
  49. package/skills/wix-headless-fast/references/blog/app/wix/blog/posts-core.ts +0 -117
  50. package/skills/wix-headless-fast/references/blog/app/wix/blog/posts.ts +0 -52
  51. package/skills/wix-headless-fast/references/blog/app/wix/blog/taxonomy-core.ts +0 -47
  52. package/skills/wix-headless-fast/references/blog/app/wix/blog/taxonomy.ts +0 -58
  53. package/skills/wix-headless-fast/references/blog/app/wix/blog/types.ts +0 -62
  54. package/skills/wix-headless-fast/references/blog/app-astro/layouts/SiteLayout.astro +0 -40
  55. package/skills/wix-headless-fast/references/blog/app-astro/pages/blog/[...slug].astro +0 -97
  56. package/skills/wix-headless-fast/references/blog/app-astro/pages/blog.astro +0 -24
  57. package/skills/wix-headless-fast/references/blog/lock/astro/package-lock.json +0 -16156
  58. package/skills/wix-headless-fast/references/blog/rest/posts.ts +0 -42
  59. package/skills/wix-headless-fast/references/blog/rest/taxonomy.ts +0 -62
  60. package/skills/wix-headless-fast/references/blog/seed/SEED.md +0 -81
  61. package/skills/wix-headless-fast/references/blog/seed/read-site.mjs +0 -22
  62. package/skills/wix-headless-fast/references/blog/seed/seed-blog.mjs +0 -287
  63. package/skills/wix-headless-fast/references/bookings/INSTRUCTIONS.md +0 -277
  64. package/skills/wix-headless-fast/references/bookings/app/components/bookings/ServiceBookingView.tsx +0 -144
  65. package/skills/wix-headless-fast/references/bookings/app/components/bookings/ServicesView.tsx +0 -119
  66. package/skills/wix-headless-fast/references/bookings/app/hooks/bookings/useBookingFlow.ts +0 -32
  67. package/skills/wix-headless-fast/references/bookings/app/hooks/bookings/useServices.ts +0 -23
  68. package/skills/wix-headless-fast/references/bookings/app/wix/bookings/booking-core.ts +0 -218
  69. package/skills/wix-headless-fast/references/bookings/app/wix/bookings/booking-flow-store.ts +0 -169
  70. package/skills/wix-headless-fast/references/bookings/app/wix/bookings/booking.ts +0 -121
  71. package/skills/wix-headless-fast/references/bookings/app/wix/bookings/services-core.ts +0 -92
  72. package/skills/wix-headless-fast/references/bookings/app/wix/bookings/services-store.ts +0 -90
  73. package/skills/wix-headless-fast/references/bookings/app/wix/bookings/services.ts +0 -57
  74. package/skills/wix-headless-fast/references/bookings/app/wix/bookings/types.ts +0 -72
  75. package/skills/wix-headless-fast/references/bookings/app-astro/layouts/SiteLayout.astro +0 -40
  76. package/skills/wix-headless-fast/references/bookings/app-astro/pages/services/[slug].astro +0 -76
  77. package/skills/wix-headless-fast/references/bookings/app-astro/pages/services.astro +0 -22
  78. package/skills/wix-headless-fast/references/bookings/lock/astro/package-lock.json +0 -11962
  79. package/skills/wix-headless-fast/references/bookings/rest/booking.ts +0 -113
  80. package/skills/wix-headless-fast/references/bookings/rest/services.ts +0 -55
  81. package/skills/wix-headless-fast/references/bookings/seed/SEED.md +0 -71
  82. package/skills/wix-headless-fast/references/bookings/seed/read-site.mjs +0 -28
  83. package/skills/wix-headless-fast/references/bookings/seed/seed-bookings.mjs +0 -302
  84. package/skills/wix-headless-fast/references/cms/INSTRUCTIONS.md +0 -355
  85. package/skills/wix-headless-fast/references/cms/app/hooks/cms/useCollection.ts +0 -50
  86. package/skills/wix-headless-fast/references/cms/app/hooks/cms/useItem.ts +0 -37
  87. package/skills/wix-headless-fast/references/cms/app/wix/cms/collection-store.ts +0 -158
  88. package/skills/wix-headless-fast/references/cms/app/wix/cms/item-store.ts +0 -93
  89. package/skills/wix-headless-fast/references/cms/app/wix/cms/items-core.ts +0 -177
  90. package/skills/wix-headless-fast/references/cms/app/wix/cms/items.ts +0 -123
  91. package/skills/wix-headless-fast/references/cms/app/wix/cms/types.ts +0 -75
  92. package/skills/wix-headless-fast/references/cms/app-astro/layouts/SiteLayout.astro +0 -41
  93. package/skills/wix-headless-fast/references/cms/lock/astro/package-lock.json +0 -11262
  94. package/skills/wix-headless-fast/references/cms/rest/items.ts +0 -125
  95. package/skills/wix-headless-fast/references/cms/seed/SEED.md +0 -112
  96. package/skills/wix-headless-fast/references/cms/seed/read-site.mjs +0 -20
  97. package/skills/wix-headless-fast/references/cms/seed/seed-cms.mjs +0 -324
  98. package/skills/wix-headless-fast/references/events/INSTRUCTIONS.md +0 -307
  99. package/skills/wix-headless-fast/references/events/app/components/events/EventConfirmationView.tsx +0 -66
  100. package/skills/wix-headless-fast/references/events/app/components/events/EventRegistrationView.tsx +0 -178
  101. package/skills/wix-headless-fast/references/events/app/components/events/EventsView.tsx +0 -118
  102. package/skills/wix-headless-fast/references/events/app/hooks/events/useEventRegistration.ts +0 -35
  103. package/skills/wix-headless-fast/references/events/app/hooks/events/useEvents.ts +0 -24
  104. package/skills/wix-headless-fast/references/events/app/wix/events/events-core.ts +0 -130
  105. package/skills/wix-headless-fast/references/events/app/wix/events/events-store.ts +0 -97
  106. package/skills/wix-headless-fast/references/events/app/wix/events/events.ts +0 -55
  107. package/skills/wix-headless-fast/references/events/app/wix/events/registration-core.ts +0 -113
  108. package/skills/wix-headless-fast/references/events/app/wix/events/registration-store.ts +0 -156
  109. package/skills/wix-headless-fast/references/events/app/wix/events/registration.ts +0 -97
  110. package/skills/wix-headless-fast/references/events/app/wix/events/types.ts +0 -61
  111. package/skills/wix-headless-fast/references/events/app-astro/layouts/SiteLayout.astro +0 -40
  112. package/skills/wix-headless-fast/references/events/app-astro/pages/event-confirmation.astro +0 -12
  113. package/skills/wix-headless-fast/references/events/app-astro/pages/events/[slug].astro +0 -80
  114. package/skills/wix-headless-fast/references/events/app-astro/pages/events.astro +0 -21
  115. package/skills/wix-headless-fast/references/events/lock/astro/package-lock.json +0 -11884
  116. package/skills/wix-headless-fast/references/events/rest/events.ts +0 -57
  117. package/skills/wix-headless-fast/references/events/rest/registration.ts +0 -83
  118. package/skills/wix-headless-fast/references/events/seed/SEED.md +0 -95
  119. package/skills/wix-headless-fast/references/events/seed/read-site.mjs +0 -26
  120. package/skills/wix-headless-fast/references/events/seed/seed-events.mjs +0 -276
  121. package/skills/wix-headless-fast/references/forms/INSTRUCTIONS.md +0 -340
  122. package/skills/wix-headless-fast/references/forms/app/hooks/forms/useWixForm.ts +0 -85
  123. package/skills/wix-headless-fast/references/forms/app/wix/forms/form-store.ts +0 -332
  124. package/skills/wix-headless-fast/references/forms/app/wix/forms/forms-core.ts +0 -238
  125. package/skills/wix-headless-fast/references/forms/app/wix/forms/forms.ts +0 -54
  126. package/skills/wix-headless-fast/references/forms/app/wix/forms/submissions-core.ts +0 -216
  127. package/skills/wix-headless-fast/references/forms/app/wix/forms/submissions.ts +0 -59
  128. package/skills/wix-headless-fast/references/forms/app/wix/forms/types.ts +0 -135
  129. package/skills/wix-headless-fast/references/forms/lock/astro/package-lock.json +0 -10593
  130. package/skills/wix-headless-fast/references/forms/rest/forms.ts +0 -34
  131. package/skills/wix-headless-fast/references/forms/rest/submissions.ts +0 -56
  132. package/skills/wix-headless-fast/references/forms/seed/SEED.md +0 -116
  133. package/skills/wix-headless-fast/references/forms/seed/read-site.mjs +0 -20
  134. package/skills/wix-headless-fast/references/forms/seed/seed-forms.mjs +0 -327
  135. package/skills/wix-headless-fast/references/members/INSTRUCTIONS.md +0 -316
  136. package/skills/wix-headless-fast/references/members/app/components/members/AccountView.tsx +0 -60
  137. package/skills/wix-headless-fast/references/members/app/components/members/LoginForm.tsx +0 -155
  138. package/skills/wix-headless-fast/references/members/app/components/members/MemberMenu.tsx +0 -78
  139. package/skills/wix-headless-fast/references/members/app/components/members/RequireAuth.tsx +0 -47
  140. package/skills/wix-headless-fast/references/members/app/hooks/members/useMember.ts +0 -66
  141. package/skills/wix-headless-fast/references/members/app/wix/members/auth-core.ts +0 -105
  142. package/skills/wix-headless-fast/references/members/app/wix/members/auth.ts +0 -59
  143. package/skills/wix-headless-fast/references/members/app/wix/members/client.ts +0 -53
  144. package/skills/wix-headless-fast/references/members/app/wix/members/member-store.ts +0 -122
  145. package/skills/wix-headless-fast/references/members/app/wix/members/members-core.ts +0 -43
  146. package/skills/wix-headless-fast/references/members/app/wix/members/members.ts +0 -29
  147. package/skills/wix-headless-fast/references/members/app/wix/members/types.ts +0 -21
  148. package/skills/wix-headless-fast/references/members/app-astro/layouts/SiteLayout.astro +0 -42
  149. package/skills/wix-headless-fast/references/members/app-astro/pages/account.astro +0 -10
  150. package/skills/wix-headless-fast/references/members/app-astro/pages/login.astro +0 -11
  151. package/skills/wix-headless-fast/references/members/lock/astro/package-lock.json +0 -10329
  152. package/skills/wix-headless-fast/references/members/rest/auth.ts +0 -215
  153. package/skills/wix-headless-fast/references/members/rest/members.ts +0 -26
  154. package/skills/wix-headless-fast/references/members/seed/SEED.md +0 -39
  155. package/skills/wix-headless-fast/references/members/seed/read-site.mjs +0 -15
  156. package/skills/wix-headless-fast/references/members/seed/seed-members.mjs +0 -94
  157. package/skills/wix-headless-fast/references/portfolio/INSTRUCTIONS.md +0 -315
  158. package/skills/wix-headless-fast/references/portfolio/app/components/portfolio/CollectionProjectsView.tsx +0 -110
  159. package/skills/wix-headless-fast/references/portfolio/app/components/portfolio/CollectionsView.tsx +0 -90
  160. package/skills/wix-headless-fast/references/portfolio/app/components/portfolio/GalleryMedia.tsx +0 -35
  161. package/skills/wix-headless-fast/references/portfolio/app/components/portfolio/ProjectDetailView.tsx +0 -85
  162. package/skills/wix-headless-fast/references/portfolio/app/hooks/portfolio/useCollectionProjects.ts +0 -32
  163. package/skills/wix-headless-fast/references/portfolio/app/hooks/portfolio/useCollections.ts +0 -21
  164. package/skills/wix-headless-fast/references/portfolio/app/hooks/portfolio/useProjectDetail.ts +0 -31
  165. package/skills/wix-headless-fast/references/portfolio/app/wix/portfolio/collection-projects-store.ts +0 -82
  166. package/skills/wix-headless-fast/references/portfolio/app/wix/portfolio/collections-store.ts +0 -58
  167. package/skills/wix-headless-fast/references/portfolio/app/wix/portfolio/portfolio-core.ts +0 -177
  168. package/skills/wix-headless-fast/references/portfolio/app/wix/portfolio/portfolio.ts +0 -78
  169. package/skills/wix-headless-fast/references/portfolio/app/wix/portfolio/project-detail-store.ts +0 -81
  170. package/skills/wix-headless-fast/references/portfolio/app/wix/portfolio/types.ts +0 -55
  171. package/skills/wix-headless-fast/references/portfolio/app-astro/layouts/SiteLayout.astro +0 -40
  172. package/skills/wix-headless-fast/references/portfolio/app-astro/pages/portfolio/[slug].astro +0 -30
  173. package/skills/wix-headless-fast/references/portfolio/app-astro/pages/portfolio.astro +0 -21
  174. package/skills/wix-headless-fast/references/portfolio/app-astro/pages/projects/[slug].astro +0 -29
  175. package/skills/wix-headless-fast/references/portfolio/lock/astro/package-lock.json +0 -10197
  176. package/skills/wix-headless-fast/references/portfolio/rest/portfolio.ts +0 -75
  177. package/skills/wix-headless-fast/references/portfolio/seed/SEED.md +0 -86
  178. package/skills/wix-headless-fast/references/portfolio/seed/read-site.mjs +0 -20
  179. package/skills/wix-headless-fast/references/portfolio/seed/seed-portfolio.mjs +0 -256
  180. package/skills/wix-headless-fast/references/pricing-plans/INSTRUCTIONS.md +0 -296
  181. package/skills/wix-headless-fast/references/pricing-plans/app/components/pricing-plans/PlanDetailView.tsx +0 -47
  182. package/skills/wix-headless-fast/references/pricing-plans/app/components/pricing-plans/PlansView.tsx +0 -101
  183. package/skills/wix-headless-fast/references/pricing-plans/app/components/pricing-plans/SubscribeButton.tsx +0 -41
  184. package/skills/wix-headless-fast/references/pricing-plans/app/hooks/pricing-plans/usePlanPurchase.ts +0 -16
  185. package/skills/wix-headless-fast/references/pricing-plans/app/hooks/pricing-plans/usePlans.ts +0 -22
  186. package/skills/wix-headless-fast/references/pricing-plans/app/wix/pricing-plans/plan-purchase-store.ts +0 -54
  187. package/skills/wix-headless-fast/references/pricing-plans/app/wix/pricing-plans/plans-core.ts +0 -106
  188. package/skills/wix-headless-fast/references/pricing-plans/app/wix/pricing-plans/plans-store.ts +0 -64
  189. package/skills/wix-headless-fast/references/pricing-plans/app/wix/pricing-plans/plans.ts +0 -27
  190. package/skills/wix-headless-fast/references/pricing-plans/app/wix/pricing-plans/purchase-core.ts +0 -43
  191. package/skills/wix-headless-fast/references/pricing-plans/app/wix/pricing-plans/purchase.ts +0 -22
  192. package/skills/wix-headless-fast/references/pricing-plans/app/wix/pricing-plans/types.ts +0 -30
  193. package/skills/wix-headless-fast/references/pricing-plans/app-astro/layouts/SiteLayout.astro +0 -41
  194. package/skills/wix-headless-fast/references/pricing-plans/app-astro/pages/plans/[slug].astro +0 -40
  195. package/skills/wix-headless-fast/references/pricing-plans/app-astro/pages/plans.astro +0 -21
  196. package/skills/wix-headless-fast/references/pricing-plans/lock/astro/package-lock.json +0 -11226
  197. package/skills/wix-headless-fast/references/pricing-plans/rest/plans.ts +0 -31
  198. package/skills/wix-headless-fast/references/pricing-plans/rest/purchase.ts +0 -20
  199. package/skills/wix-headless-fast/references/pricing-plans/seed/SEED.md +0 -79
  200. package/skills/wix-headless-fast/references/pricing-plans/seed/read-site.mjs +0 -21
  201. package/skills/wix-headless-fast/references/pricing-plans/seed/seed-pricing-plans.mjs +0 -279
  202. package/skills/wix-headless-fast/references/restaurants/INSTRUCTIONS.md +0 -360
  203. package/skills/wix-headless-fast/references/restaurants/app/components/restaurants/MenuView.tsx +0 -142
  204. package/skills/wix-headless-fast/references/restaurants/app/components/restaurants/OrderCartButton.tsx +0 -26
  205. package/skills/wix-headless-fast/references/restaurants/app/components/restaurants/OrderCartDrawer.tsx +0 -121
  206. package/skills/wix-headless-fast/references/restaurants/app/components/restaurants/ReservationView.tsx +0 -155
  207. package/skills/wix-headless-fast/references/restaurants/app/hooks/restaurants/useMenus.ts +0 -34
  208. package/skills/wix-headless-fast/references/restaurants/app/hooks/restaurants/useOrderCart.ts +0 -43
  209. package/skills/wix-headless-fast/references/restaurants/app/hooks/restaurants/useReservation.ts +0 -34
  210. package/skills/wix-headless-fast/references/restaurants/app/wix/restaurants/menu-core.ts +0 -155
  211. package/skills/wix-headless-fast/references/restaurants/app/wix/restaurants/menu-store.ts +0 -89
  212. package/skills/wix-headless-fast/references/restaurants/app/wix/restaurants/menu.ts +0 -71
  213. package/skills/wix-headless-fast/references/restaurants/app/wix/restaurants/order-store.ts +0 -103
  214. package/skills/wix-headless-fast/references/restaurants/app/wix/restaurants/ordering-core.ts +0 -124
  215. package/skills/wix-headless-fast/references/restaurants/app/wix/restaurants/ordering.ts +0 -185
  216. package/skills/wix-headless-fast/references/restaurants/app/wix/restaurants/reservation-store.ts +0 -193
  217. package/skills/wix-headless-fast/references/restaurants/app/wix/restaurants/reservations-core.ts +0 -94
  218. package/skills/wix-headless-fast/references/restaurants/app/wix/restaurants/reservations.ts +0 -74
  219. package/skills/wix-headless-fast/references/restaurants/app/wix/restaurants/types.ts +0 -168
  220. package/skills/wix-headless-fast/references/restaurants/app-astro/layouts/SiteLayout.astro +0 -47
  221. package/skills/wix-headless-fast/references/restaurants/app-astro/pages/menu.astro +0 -22
  222. package/skills/wix-headless-fast/references/restaurants/app-astro/pages/reservations.astro +0 -12
  223. package/skills/wix-headless-fast/references/restaurants/lock/astro/package-lock.json +0 -12560
  224. package/skills/wix-headless-fast/references/restaurants/rest/menu.ts +0 -60
  225. package/skills/wix-headless-fast/references/restaurants/rest/ordering.ts +0 -169
  226. package/skills/wix-headless-fast/references/restaurants/rest/reservations.ts +0 -68
  227. package/skills/wix-headless-fast/references/restaurants/seed/SEED.md +0 -89
  228. package/skills/wix-headless-fast/references/restaurants/seed/read-site.mjs +0 -25
  229. package/skills/wix-headless-fast/references/restaurants/seed/seed-restaurants.mjs +0 -499
  230. package/skills/wix-headless-fast/references/shared/CONTENT.md +0 -22
  231. package/skills/wix-headless-fast/references/shared/CUSTOM_OPERATIONS.md +0 -73
  232. package/skills/wix-headless-fast/references/shared/DESIGN.md +0 -26
  233. package/skills/wix-headless-fast/references/shared/SUPPLIED-CONTENT.md +0 -23
  234. package/skills/wix-headless-fast/references/shared/app/styles/global.css +0 -52
  235. package/skills/wix-headless-fast/references/shared/app/wix/config.ts +0 -15
  236. package/skills/wix-headless-fast/references/shared/app/wix/media.ts +0 -81
  237. package/skills/wix-headless-fast/references/shared/app/wix/money.ts +0 -24
  238. package/skills/wix-headless-fast/references/shared/app/wix/sdk.ts +0 -89
  239. package/skills/wix-headless-fast/references/shared/capabilities/media-upload/app/wix/media-upload/client.ts +0 -46
  240. package/skills/wix-headless-fast/references/shared/capabilities/media-upload/app-astro/pages/api/wix/media-upload.ts +0 -46
  241. package/skills/wix-headless-fast/references/shared/rest/client.ts +0 -155
  242. package/skills/wix-headless-fast/references/shared/rest/config.ts +0 -3
  243. package/skills/wix-headless-fast/references/shared/rest/media.ts +0 -65
  244. package/skills/wix-headless-fast/references/shared/seed/images.mjs +0 -145
  245. package/skills/wix-headless-fast/references/shared/seed/read-site.mjs +0 -99
  246. package/skills/wix-headless-fast/references/storefront/INSTRUCTIONS.md +0 -612
  247. package/skills/wix-headless-fast/references/storefront/app/components/storefront/CartButton.tsx +0 -26
  248. package/skills/wix-headless-fast/references/storefront/app/components/storefront/CartDrawer.tsx +0 -155
  249. package/skills/wix-headless-fast/references/storefront/app/components/storefront/FilterPanel.tsx +0 -266
  250. package/skills/wix-headless-fast/references/storefront/app/components/storefront/OptionPicker.tsx +0 -95
  251. package/skills/wix-headless-fast/references/storefront/app/components/storefront/QuickAdd.tsx +0 -136
  252. package/skills/wix-headless-fast/references/storefront/app/hooks/storefront/useCart.ts +0 -48
  253. package/skills/wix-headless-fast/references/storefront/app/hooks/storefront/useProductDetail.ts +0 -39
  254. package/skills/wix-headless-fast/references/storefront/app/hooks/storefront/useShop.ts +0 -34
  255. package/skills/wix-headless-fast/references/storefront/app/wix/storefront/cart-core.ts +0 -121
  256. package/skills/wix-headless-fast/references/storefront/app/wix/storefront/cart-store.ts +0 -107
  257. package/skills/wix-headless-fast/references/storefront/app/wix/storefront/cart.ts +0 -138
  258. package/skills/wix-headless-fast/references/storefront/app/wix/storefront/catalog-core.ts +0 -314
  259. package/skills/wix-headless-fast/references/storefront/app/wix/storefront/catalog.ts +0 -133
  260. package/skills/wix-headless-fast/references/storefront/app/wix/storefront/product-detail-store.ts +0 -147
  261. package/skills/wix-headless-fast/references/storefront/app/wix/storefront/shop-store.ts +0 -289
  262. package/skills/wix-headless-fast/references/storefront/app/wix/storefront/types.ts +0 -169
  263. package/skills/wix-headless-fast/references/storefront/app-astro/layouts/SiteLayout.astro +0 -65
  264. package/skills/wix-headless-fast/references/storefront/lock/astro/package-lock.json +0 -12247
  265. package/skills/wix-headless-fast/references/storefront/rest/cart.ts +0 -132
  266. package/skills/wix-headless-fast/references/storefront/rest/catalog.ts +0 -123
  267. package/skills/wix-headless-fast/references/storefront/seed/SEED.md +0 -130
  268. package/skills/wix-headless-fast/references/storefront/seed/read-site.mjs +0 -38
  269. package/skills/wix-headless-fast/references/storefront/seed/seed-store.mjs +0 -561
@@ -1,156 +0,0 @@
1
- // The registration flow for one event as a framework-free store — the logic behind
2
- // useEventRegistration, usable from React (the hook wraps it), from a static page's event view,
3
- // from Vue/Svelte, or as the specification for a port. Branched on event.registrationType:
4
- // TICKETING loads the tier picker and checkout() reserves → redirects to Wix's hosted checkout;
5
- // RSVP is the built-in name+email form submitted in place. All correctness (the visitor-public
6
- // tier read, the reservation payload, the redirect callbacks, rsvpV2) lives in the data layer —
7
- // this store orchestrates; the page owns how it looks.
8
- //
9
- // One store per event surface: createRegistrationStore(event), not a singleton. A static site
10
- // passes `paths` so the hosted checkout returns to its files (`event-confirmation.html`).
11
- import { fetchTicketTiers, startTicketCheckout, submitRsvp, type CheckoutPaths } from "./registration";
12
- import type { EventDetail, RegistrationResult, TicketTier } from "./types";
13
-
14
- export type RsvpField = "firstName" | "lastName" | "email";
15
-
16
- export interface RegistrationStoreOptions {
17
- /** Where the hosted checkout returns to; defaults are the Astro routes. */
18
- paths?: CheckoutPaths;
19
- }
20
-
21
- export interface RegistrationState {
22
- /** TICKETING: tiers for the picker — null while loading (skeletons), [] honest empty. Other types: []. */
23
- tiers: TicketTier[] | null;
24
- /** Selected quantity per tier id (0 when untouched). */
25
- quantities: Record<string, number>;
26
- ticketCount: number;
27
- /** True when ≥ 1 ticket is selected — gate the checkout CTA on this. */
28
- canCheckout: boolean;
29
- /** RSVP form state — the built-in fields, exactly these. */
30
- rsvpValues: { firstName: string; lastName: string; email: string };
31
- /** True when every RSVP field is filled — gate the RSVP CTA on this. */
32
- canRsvp: boolean;
33
- submitting: boolean;
34
- /** Set after an RSVP completes (kind "rsvpConfirmed"; status may be "WAITLIST"). */
35
- confirmed: RegistrationResult | null;
36
- error: string | null;
37
- }
38
-
39
- export interface RegistrationStore {
40
- getState(): RegistrationState;
41
- subscribe(listener: () => void): () => void;
42
- /** Load the tiers of a TICKETING event. Call once when mounted (a browser). */
43
- start(): void;
44
- /** Stop reacting; drop a late response. */
45
- stop(): void;
46
- /** Clamped to 0..limitPerCheckout; ignored for tiers not on sale (saleStatus gate). */
47
- setQuantity(tierId: string, quantity: number): void;
48
- setRsvpValue(field: RsvpField, value: string): void;
49
- /** Reserves + redirects to the Wix-hosted checkout. On "redirect" the browser is navigating. Throws (and sets .error) on refusal. */
50
- checkout(): Promise<RegistrationResult>;
51
- /** attending=false only when event.rsvpResponseType is "YES_AND_NO". Throws (and sets .error) on refusal. */
52
- rsvp(attending?: boolean): Promise<RegistrationResult>;
53
- }
54
-
55
- export function createRegistrationStore(event: EventDetail, { paths }: RegistrationStoreOptions = {}): RegistrationStore {
56
- const ticketed = event.registrationType === "TICKETING";
57
- let tiers: TicketTier[] | null = ticketed ? null : [];
58
- let quantities: Record<string, number> = {};
59
- let rsvpValues = { firstName: "", lastName: "", email: "" };
60
- let submitting = false;
61
- let confirmed: RegistrationResult | null = null;
62
- let error: string | null = null;
63
- let started = false;
64
- const listeners = new Set<() => void>();
65
- let snapshot: RegistrationState | null = null;
66
- const emit = () => {
67
- snapshot = null;
68
- for (const fn of listeners) fn();
69
- };
70
-
71
- function getState(): RegistrationState {
72
- if (snapshot) return snapshot;
73
- const ticketCount = Object.values(quantities).reduce((sum, q) => sum + q, 0);
74
- snapshot = {
75
- tiers,
76
- quantities,
77
- ticketCount,
78
- canCheckout: ticketCount > 0,
79
- rsvpValues,
80
- canRsvp: (["firstName", "lastName", "email"] as const).every((f) => rsvpValues[f].trim().length > 0),
81
- submitting,
82
- confirmed,
83
- error,
84
- };
85
- return snapshot;
86
- }
87
-
88
- async function run(op: () => Promise<RegistrationResult>): Promise<RegistrationResult> {
89
- submitting = true;
90
- error = null;
91
- emit();
92
- try {
93
- const result = await op();
94
- if (result.kind === "redirect") {
95
- if (typeof window !== "undefined") window.location.href = result.url;
96
- } else {
97
- confirmed = result;
98
- }
99
- return result;
100
- } catch (e) {
101
- error = e instanceof Error ? e.message : String(e);
102
- throw e;
103
- } finally {
104
- submitting = false;
105
- emit();
106
- }
107
- }
108
-
109
- return {
110
- getState,
111
- subscribe(fn) {
112
- listeners.add(fn);
113
- return () => listeners.delete(fn);
114
- },
115
- start() {
116
- if (started) return;
117
- started = true;
118
- if (!ticketed) return;
119
- fetchTicketTiers(event.id)
120
- .then((t) => {
121
- if (!started) return;
122
- tiers = t;
123
- emit();
124
- })
125
- .catch((e) => {
126
- if (!started) return;
127
- tiers = [];
128
- error = e instanceof Error ? e.message : String(e);
129
- emit();
130
- });
131
- },
132
- stop() {
133
- started = false;
134
- },
135
- setQuantity(tierId, quantity) {
136
- const tier = (tiers ?? []).find((t) => t.id === tierId);
137
- if (!tier || tier.saleStatus !== "SALE_STARTED") return;
138
- const clamped = Math.max(0, Math.min(quantity, tier.limitPerCheckout || 20));
139
- quantities = { ...quantities, [tierId]: clamped };
140
- emit();
141
- },
142
- setRsvpValue(field, value) {
143
- rsvpValues = { ...rsvpValues, [field]: value };
144
- emit();
145
- },
146
- checkout: () =>
147
- run(() =>
148
- startTicketCheckout(
149
- event,
150
- Object.entries(quantities).map(([tierId, quantity]) => ({ tierId, quantity })),
151
- paths,
152
- ),
153
- ),
154
- rsvp: (attending = true) => run(() => submitRsvp(event.id, rsvpValues, attending ? "YES" : "NO")),
155
- };
156
- }
@@ -1,97 +0,0 @@
1
- // Ticket tiers, the reserve → hosted-checkout redirect, and RSVP over the SDK. Rules and mappers
2
- // live in ./registration-core (shared with the REST twin in references/events/rest/); this file is
3
- // the transport only. The payload shapes are exact and easy to get subtly wrong — copy as-is;
4
- // extend by calling these exports, never by editing them. Failures are loud. Everything runs as
5
- // the anonymous VISITOR — no server route, no elevation, anywhere.
6
- // docs: https://dev.wix.com/docs/api-reference/business-solutions/events/registration/ticketing/orders/query-available-tickets.md
7
- // docs: https://dev.wix.com/docs/api-reference/business-solutions/events/registration/ticketing/ticket-reservations/create-ticket-reservation.md
8
- // docs: https://dev.wix.com/docs/api-reference/business-solutions/events/registration/rsvp-v2/create-rsvp.md
9
- // docs: https://dev.wix.com/docs/api-reference/business-management/headless/redirects/create-redirect-session.md
10
- import { orders, rsvpV2, ticketReservations } from "@wix/events";
11
- import { redirects as redirectsModule } from "@wix/redirects";
12
- import { wixModule } from "../sdk";
13
- import {
14
- checkoutCallbacks,
15
- redirectResult,
16
- reservationError,
17
- reservationId,
18
- reservationTickets,
19
- rsvpBody,
20
- rsvpResult,
21
- toTiers,
22
- type CheckoutEvent,
23
- type CheckoutPaths,
24
- } from "./registration-core";
25
- import type { Raw } from "./events-core";
26
- import type { RegistrationResult, TicketTier } from "./types";
27
-
28
- export { type CheckoutPaths };
29
-
30
- const availableTickets = wixModule(orders);
31
- const reservations = wixModule(ticketReservations);
32
- const rsvps = wixModule(rsvpV2);
33
- const redirects = wixModule(redirectsModule);
34
-
35
- /**
36
- * Ticket tiers for a TICKETING event, in display order. Reads the VISITOR-public storefront
37
- * endpoint (orders.queryAvailableTickets) — never ticketDefinitions*.queryTicketDefinitions:
38
- * those are the management API and 403 the anonymous visitor (auth.elevate() is the wrong
39
- * fix — wrong axis, SSR-only).
40
- */
41
- export async function fetchTicketTiers(eventId: string): Promise<TicketTier[]> {
42
- // limit is REQUIRED: it defaults to 0, which returns metadata only — zero tiers, no error.
43
- const res: Raw = await availableTickets.queryAvailableTickets({ filter: { eventId }, limit: 100 });
44
- return toTiers(res.definitions);
45
- }
46
-
47
- /**
48
- * RSVP to a free (RSVP-type) event — completes fully client-side: no reservation, no
49
- * redirect, no payment. The registration form is BUILT-IN: exactly firstName + lastName +
50
- * email; never fetch a form schema or add fields. Send "NO" only when the event's
51
- * rsvpResponseType is "YES_AND_NO". Throws on closed registration, a guest limit, or an
52
- * invalid email — surface the message (a repeat email is accepted by default; the organizer's
53
- * settings decide). A full event with a waitlist returns status "WAITLIST" — tell the guest
54
- * they're waitlisted, not confirmed.
55
- */
56
- export async function submitRsvp(
57
- eventId: string,
58
- guest: { firstName: string; lastName: string; email: string },
59
- status: "YES" | "NO" = "YES",
60
- ): Promise<RegistrationResult> {
61
- // rsvpV2 takes the rsvp object DIRECTLY as the first arg (never wrapped in { rsvp: … }),
62
- // and only rsvpV2 works for visitors — the legacy v1 `rsvp` module 400s on these fields.
63
- const res: Raw = await rsvps.createRsvp(rsvpBody(eventId, guest, status) as any);
64
- return rsvpResult(res, status);
65
- }
66
-
67
- /**
68
- * Ticketed checkout, the exact sequence: reserve the selected tiers (holds them, PENDING,
69
- * auto-expires), then mint the Wix-hosted checkout redirect and return its URL — the caller
70
- * navigates to it; Wix collects guest details + payment and emails the tickets. Call from
71
- * the browser: it needs window.location.origin (the published https host — an http or
72
- * server-derived origin isn't on the redirect allowlist and 403s the return), and
73
- * createRedirectSession must run as the visitor (it embeds the headless OAuth client and
74
- * rejects admin/elevated tokens). Never hand-build the checkout URL — the Wix-site
75
- * `…/ticket-form?reservationId=` path 404s on a headless site. `paths` overrides the return
76
- * routes (a static site's `event-confirmation.html`).
77
- */
78
- export async function startTicketCheckout(
79
- event: CheckoutEvent,
80
- selections: { tierId: string; quantity: number }[],
81
- paths: CheckoutPaths = {},
82
- ): Promise<RegistrationResult> {
83
- const tickets = reservationTickets(selections);
84
- let reservation: Raw;
85
- try {
86
- reservation = await reservations.createTicketReservation({ tickets } as any);
87
- } catch (e) {
88
- throw reservationError(e);
89
- }
90
- const origin = typeof window !== "undefined" ? window.location.origin : "";
91
- const session: Raw = await redirects.createRedirectSession({
92
- eventsCheckout: { reservationId: reservationId(reservation), eventSlug: event.slug },
93
- // Wix appends ?orderNumber=&eventId= to the thank-you URL — the shipped /event-confirmation page reads them.
94
- callbacks: checkoutCallbacks(origin, event.slug, paths),
95
- });
96
- return redirectResult(session);
97
- }
@@ -1,61 +0,0 @@
1
- // Events DTOs — the serializable shapes every hook, component, and page consumes.
2
- // Plain JSON: safe as Astro island props or across server/client boundaries. Images are
3
- // resolved https URLs; every displayable price is a ready formatted string.
4
-
5
- /** The current registration flavor — every registration surface branches on this. */
6
- export type RegistrationType = "RSVP" | "TICKETING" | "EXTERNAL" | "NONE";
7
-
8
- /** An event as a listing/grid tile needs it. */
9
- export interface EventSummary {
10
- id: string;
11
- slug: string;
12
- title: string;
13
- /** Plain-text teaser, safe to render directly (the rich description never leaves the data layer). */
14
- shortDescription: string;
15
- /** Human-formatted date/time from Wix, e.g. "Sep 26, 2026, 7:00 PM" ("" when the date is TBD). */
16
- dateLabel: string;
17
- /** ISO start instant for custom formatting/grouping ("" when the date is TBD). */
18
- startDateIso: string;
19
- locationName: string;
20
- locationType: "VENUE" | "ONLINE" | "TBD";
21
- /** Resolved https URL ("" when the event has no image). */
22
- imageUrl: string;
23
- registrationType: RegistrationType;
24
- /** "From €25.00" (ticketed), "Free" (RSVP / free tickets), "" when nothing applies. */
25
- priceLabel: string;
26
- soldOut: boolean;
27
- /** Assigned category names (the seeded format/track grouping) — filter client-side. */
28
- categories: { id: string; name: string }[];
29
- }
30
-
31
- /** An event as the detail/registration page needs it. */
32
- export interface EventDetail extends EventSummary {
33
- /** Long description as plain paragraphs (extracted from the rich content; may be empty). */
34
- aboutParagraphs: string[];
35
- /** False → registration is closed (sold out / closed / ended) — show a closed state, no form. */
36
- registrationOpen: boolean;
37
- /** RSVP events: "YES_AND_NO" also allows a "can't make it" reply. */
38
- rsvpResponseType: "YES_ONLY" | "YES_AND_NO";
39
- /** EXTERNAL events: the outbound registration URL ("" otherwise). */
40
- externalUrl: string;
41
- addToCalendar: { google: string; ics: string };
42
- }
43
-
44
- /** A purchasable ticket tier (TICKETING events). */
45
- export interface TicketTier {
46
- id: string;
47
- name: string;
48
- description: string;
49
- /** Formatted price (e.g. "€45.00"); "Free" for free tiers. */
50
- price: string;
51
- free: boolean;
52
- /** Max quantity per order for this tier. */
53
- limitPerCheckout: number;
54
- /** Only "SALE_STARTED" is buyable — gate the picker on this. */
55
- saleStatus: "SALE_SCHEDULED" | "SALE_STARTED" | "SALE_ENDED";
56
- }
57
-
58
- /** The outcome of a registration: the browser is redirecting to Wix checkout, or the RSVP is in. */
59
- export type RegistrationResult =
60
- | { kind: "redirect"; url: string }
61
- | { kind: "rsvpConfirmed"; status: "YES" | "NO" | "WAITLIST" };
@@ -1,40 +0,0 @@
1
- ---
2
- // The site chrome for every events page — THIS file (header/footer/nav) plus the @theme
3
- // token block in src/styles/global.css are what you brand. Keep the <slot name="seo-tags" />
4
- // in <head> and the global.css import. (Deploy is fill-only: if another vertical is already
5
- // deployed, its SiteLayout won — merge an Events nav link there instead.)
6
- import "../styles/global.css";
7
-
8
- interface Props {
9
- title: string;
10
- description?: string;
11
- }
12
- const { title, description } = Astro.props;
13
- ---
14
-
15
- <!doctype html>
16
- <html lang="en">
17
- <head>
18
- <meta charset="UTF-8" />
19
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
20
- <title>{title}</title>
21
- {description && <meta name="description" content={description} />}
22
- <slot name="seo-tags" />
23
- </head>
24
- <body>
25
- <header class="sticky top-0 z-40 border-b border-border bg-background/80 backdrop-blur">
26
- <div class="mx-auto flex h-16 max-w-6xl items-center justify-between px-6">
27
- <a href="/" class="text-base font-bold tracking-tight text-foreground no-underline">Brand Name</a>
28
- <nav class="flex items-center gap-6 text-sm">
29
- <a href="/events" class="text-foreground no-underline transition-colors hover:text-muted-foreground">Events</a>
30
- </nav>
31
- </div>
32
- </header>
33
- <main class="mx-auto max-w-6xl px-6 pb-24 pt-10">
34
- <slot />
35
- </main>
36
- <footer class="border-t border-border px-6 py-10 text-center text-sm text-muted-foreground">
37
- © Brand Name
38
- </footer>
39
- </body>
40
- </html>
@@ -1,12 +0,0 @@
1
- ---
2
- // Post-checkout thank-you page — the Wix-hosted checkout redirects here with
3
- // ?orderNumber=&eventId=. KEEP THIS ROUTE: the data layer's checkout callbacks point at
4
- // /event-confirmation. The island is client:only (it reads the browser URL); swap its
5
- // import to YOUR confirmation component if you design one.
6
- import SiteLayout from "../layouts/SiteLayout.astro";
7
- import EventConfirmationView from "../components/events/EventConfirmationView";
8
- ---
9
-
10
- <SiteLayout title="Order confirmed">
11
- <EventConfirmationView client:only="react" />
12
- </SiteLayout>
@@ -1,80 +0,0 @@
1
- ---
2
- // Event detail + registration page.
3
- //
4
- // This is a Wix ITEM PAGE: the wixMetadata export + <SEO.Tags> below let the site owner edit
5
- // this page's title/description/OG in the dashboard and register the route in the sitemap.
6
- // Keep all three SEO pieces and this frontmatter; swap the island import to YOUR registration
7
- // component. The registration island is client:only — it runs visitor-session calls and
8
- // redirects.
9
- import SiteLayout from "../../layouts/SiteLayout.astro";
10
- import EventRegistrationView from "../../components/events/EventRegistrationView";
11
- import { fetchEventBySlug } from "../../wix/events/events";
12
- import { WIX_APPS } from "@wix/essentials";
13
- import { SEO } from "@wix/seo/components";
14
- import { loadSEOTagsServiceConfig } from "@wix/seo/services";
15
- import { seoTags } from "@wix/seo";
16
-
17
- export const wixMetadata = {
18
- appDefId: WIX_APPS.events.id,
19
- pageIdentifier: WIX_APPS.events.eventPageMetadata.pageIdentifier,
20
- identifiers: {
21
- slug: WIX_APPS.events.eventPageMetadata.identifiers.slug,
22
- },
23
- };
24
-
25
- const slug = Astro.params.slug!;
26
-
27
- // Behind Wix's proxy the request URL is internal — the real public page URL arrives on
28
- // x-wix-forwarded-url; the SEO service needs the public one.
29
- const forwardedUrl = Astro.request.headers.get("x-wix-forwarded-url");
30
- const pageUrl =
31
- forwardedUrl && URL.canParse(forwardedUrl) && /^https?:$/.test(new URL(forwardedUrl).protocol)
32
- ? forwardedUrl
33
- : Astro.url.href;
34
-
35
- let event = null;
36
- let seoTagsServiceConfig = null;
37
- try {
38
- [event, seoTagsServiceConfig] = await Promise.all([
39
- fetchEventBySlug(slug),
40
- loadSEOTagsServiceConfig({
41
- pageUrl,
42
- itemType: seoTags.ItemType.EVENTS_PAGE,
43
- itemData: { slug },
44
- }).catch(() => null),
45
- ]);
46
- } catch {
47
- // Guarded: an unhandled SSR throw truncates the response mid-stream.
48
- }
49
-
50
- if (!event) {
51
- return new Response(null, { status: 404 });
52
- }
53
- ---
54
-
55
- <SiteLayout title={event.title}>
56
- <SEO.Tags seoTagsServiceConfig={seoTagsServiceConfig} slot="seo-tags" />
57
-
58
- <div class="grid gap-10 md:grid-cols-2">
59
- <div>
60
- {event.imageUrl && (
61
- <div class="aspect-[3/2] overflow-hidden rounded-xl bg-secondary">
62
- <img src={event.imageUrl} alt={event.title} class="h-full w-full object-cover" />
63
- </div>
64
- )}
65
- {event.dateLabel && <p class="eyebrow mt-5">{event.dateLabel}</p>}
66
- <h1 class="mt-1 text-2xl font-semibold tracking-tight">{event.title}</h1>
67
- <p class="mt-1 text-sm text-muted-foreground">
68
- {event.locationType === "ONLINE" ? "Online event" : event.locationName}
69
- {event.priceLabel ? ` · ${event.priceLabel}` : ""}
70
- </p>
71
- {event.shortDescription && <p class="mt-4 text-sm leading-relaxed text-muted-foreground">{event.shortDescription}</p>}
72
- {event.aboutParagraphs.map((p) => (
73
- <p class="mt-3 text-sm leading-relaxed text-muted-foreground">{p}</p>
74
- ))}
75
- </div>
76
- <div>
77
- <EventRegistrationView client:only="react" event={event} />
78
- </div>
79
- </div>
80
- </SiteLayout>
@@ -1,21 +0,0 @@
1
- ---
2
- // Events listing — data fetched SERVER-SIDE (SEO) and handed to the island as DTO props.
3
- // Keep this frontmatter; swap the island import to YOUR listing component.
4
- import SiteLayout from "../layouts/SiteLayout.astro";
5
- import EventsView from "../components/events/EventsView";
6
- import { fetchEvents } from "../wix/events/events";
7
- import type { EventSummary } from "../wix/events/types";
8
-
9
- let events: EventSummary[] = [];
10
- try {
11
- events = await fetchEvents();
12
- } catch {
13
- // An unguarded SSR throw truncates the response mid-stream; the island renders the
14
- // empty state instead.
15
- }
16
- ---
17
-
18
- <SiteLayout title="Events">
19
- <h1 class="mb-8 text-2xl font-semibold tracking-tight">Events</h1>
20
- <EventsView client:load initialEvents={events} />
21
- </SiteLayout>