@wix/agent-skills 1.16.3 → 1.18.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 (283) hide show
  1. package/package.json +1 -1
  2. package/skills/wix-app/SKILL.md +115 -12
  3. package/skills/wix-app/references/APP_MARKET_REVIEW.md +1 -1
  4. package/skills/wix-app/references/BACKEND_API.md +18 -0
  5. package/skills/wix-app/references/CUSTOM_ELEMENT_WIDGET.md +6 -0
  6. package/skills/wix-app/references/DASHBOARD_MODAL.md +10 -2
  7. package/skills/wix-app/references/DASHBOARD_PAGE.md +32 -70
  8. package/skills/wix-app/references/EDITOR_REACT_COMPONENT.md +145 -127
  9. package/skills/wix-app/references/SITE_PLUGIN.md +14 -2
  10. package/skills/wix-app/references/WIX_PATTERNS_DOCS.md +74 -68
  11. package/skills/wix-app/references/backend-event/COMMON-EVENTS.md +2 -2
  12. package/skills/wix-app/references/dashboard-page/COLLECTION_TOOLKIT.md +79 -0
  13. package/skills/wix-app/references/dashboard-page/ENTITY_PAGE_TOOLKIT.md +73 -0
  14. package/skills/wix-app/references/dashboard-page/PATTERNS_BUNDLE_READING.md +52 -0
  15. package/skills/wix-app/references/dashboard-page/UX_SUCCESS_MODEL.md +184 -0
  16. package/skills/wix-app/references/editor-react-component/ACCESSIBILITY.md +182 -99
  17. package/skills/wix-app/references/editor-react-component/ANIMATED-COMPONENTS.md +94 -49
  18. package/skills/wix-app/references/editor-react-component/BRANDED-COMPONENTS.md +16 -6
  19. package/skills/wix-app/references/editor-react-component/BROWSER-SUPPORT.md +56 -0
  20. package/skills/wix-app/references/editor-react-component/COMPONENT-CONTRACT.md +275 -0
  21. package/skills/wix-app/references/editor-react-component/COMPONENT-PREVIEW.md +35 -40
  22. package/skills/wix-app/references/editor-react-component/CSS-GUIDELINES.md +167 -445
  23. package/skills/wix-app/references/editor-react-component/DESIGN-STATES.md +56 -29
  24. package/skills/wix-app/references/editor-react-component/DIRECTIONALITY.md +53 -158
  25. package/skills/wix-app/references/editor-react-component/EDITOR-EXTENSION-CONFIGURATION.md +78 -0
  26. package/skills/wix-app/references/editor-react-component/FUNCTION-HANDLERS.md +42 -134
  27. package/skills/wix-app/references/editor-react-component/MANIFEST-ERRORS.md +11 -3
  28. package/skills/wix-app/references/editor-react-component/PARTS.md +46 -24
  29. package/skills/wix-app/references/editor-react-component/PROPS-VS-CSS.md +63 -179
  30. package/skills/wix-app/references/editor-react-component/REACT-GUIDELINES.md +79 -163
  31. package/skills/wix-app/references/editor-react-component/SITE-CONTEXT-HOOKS.md +36 -21
  32. package/skills/wix-app/references/editor-react-component/SSR.md +30 -99
  33. package/skills/wix-base44-connector/SKILL.md +156 -50
  34. package/skills/wix-base44-connector/references/CAPABILITY_MAP.md +78 -0
  35. package/skills/wix-base44-connector/scripts/utils.js +239 -45
  36. package/skills/wix-headless/entry/bootstrap.mjs +9 -2
  37. package/skills/wix-headless/entry/skill.md +1 -1
  38. package/skills/wix-headless/references/CAPABILITIES.md +9 -1
  39. package/skills/wix-headless/references/DESIGN.md +1 -0
  40. package/skills/wix-headless/references/DISCOVERY.md +2 -1
  41. package/skills/wix-headless/references/IMAGE_GENERATION.md +1 -0
  42. package/skills/wix-headless/references/SDK_HANDOFF.md +5 -2
  43. package/skills/wix-headless/references/SEED.md +2 -1
  44. package/skills/wix-headless/references/SETUP.md +1 -0
  45. package/skills/wix-headless/references/inline-recipes/how-to-code-a-blog.md +2 -2
  46. package/skills/wix-headless/references/inline-recipes/how-to-code-a-store.md +68 -31
  47. package/skills/wix-headless/references/inline-recipes/how-to-code-forms.md +26 -10
  48. package/skills/wix-headless/references/inline-recipes/how-to-code-members-astro.md +8 -8
  49. package/skills/wix-headless/references/inline-recipes/how-to-code-members-custom-login.md +1 -1
  50. package/skills/wix-headless/references/inline-recipes/how-to-code-members-non-astro.md +1 -1
  51. package/skills/wix-headless/references/inline-recipes/how-to-code-pricing-plans.md +10 -8
  52. package/skills/wix-headless/references/inline-recipes/how-to-code-rentals.md +254 -0
  53. package/skills/wix-headless/references/inline-recipes/how-to-code-restaurant-orders.md +27 -24
  54. package/skills/wix-headless/references/inline-recipes/setup-online-store.md +13 -0
  55. package/skills/wix-headless/references/inline-recipes/setup-rentals.md +254 -0
  56. package/skills/wix-headless/references/managed/AUTHENTICATION.md +5 -0
  57. package/skills/wix-headless/references/non-astro.md +1 -1
  58. package/skills/wix-headless-fast/SKILL.md +166 -0
  59. package/skills/wix-headless-fast/entry/skill.md +99 -0
  60. package/skills/wix-headless-fast/install/deploy.mjs +433 -0
  61. package/skills/wix-headless-fast/install/fast-path.mjs +141 -0
  62. package/skills/wix-headless-fast/references/blog/INSTRUCTIONS.md +137 -0
  63. package/skills/wix-headless-fast/references/blog/app/components/blog/BlogFeedView.tsx +137 -0
  64. package/skills/wix-headless-fast/references/blog/app/components/blog/PostView.tsx +113 -0
  65. package/skills/wix-headless-fast/references/blog/app/components/blog/RichContent.tsx +42 -0
  66. package/skills/wix-headless-fast/references/blog/app/hooks/blog/useBlogFeed.ts +123 -0
  67. package/skills/wix-headless-fast/references/blog/app/hooks/blog/usePost.ts +70 -0
  68. package/skills/wix-headless-fast/references/blog/app/wix/blog/posts.ts +99 -0
  69. package/skills/wix-headless-fast/references/blog/app/wix/blog/taxonomy.ts +76 -0
  70. package/skills/wix-headless-fast/references/blog/app/wix/blog/types.ts +62 -0
  71. package/skills/wix-headless-fast/references/blog/app-astro/layouts/SiteLayout.astro +40 -0
  72. package/skills/wix-headless-fast/references/blog/app-astro/pages/blog/[...slug].astro +99 -0
  73. package/skills/wix-headless-fast/references/blog/app-astro/pages/blog.astro +24 -0
  74. package/skills/wix-headless-fast/references/blog/lock/astro/package-lock.json +16156 -0
  75. package/skills/wix-headless-fast/references/blog/seed/SEED.md +72 -0
  76. package/skills/wix-headless-fast/references/blog/seed/seed-blog.mjs +287 -0
  77. package/skills/wix-headless-fast/references/bookings/INSTRUCTIONS.md +129 -0
  78. package/skills/wix-headless-fast/references/bookings/app/components/bookings/ServiceBookingView.tsx +143 -0
  79. package/skills/wix-headless-fast/references/bookings/app/components/bookings/ServicesView.tsx +119 -0
  80. package/skills/wix-headless-fast/references/bookings/app/hooks/bookings/useBookingFlow.ts +138 -0
  81. package/skills/wix-headless-fast/references/bookings/app/hooks/bookings/useServices.ts +54 -0
  82. package/skills/wix-headless-fast/references/bookings/app/wix/bookings/booking.ts +206 -0
  83. package/skills/wix-headless-fast/references/bookings/app/wix/bookings/services.ts +96 -0
  84. package/skills/wix-headless-fast/references/bookings/app/wix/bookings/types.ts +70 -0
  85. package/skills/wix-headless-fast/references/bookings/app-astro/layouts/SiteLayout.astro +40 -0
  86. package/skills/wix-headless-fast/references/bookings/app-astro/pages/services/[slug].astro +76 -0
  87. package/skills/wix-headless-fast/references/bookings/app-astro/pages/services.astro +22 -0
  88. package/skills/wix-headless-fast/references/bookings/lock/astro/package-lock.json +11962 -0
  89. package/skills/wix-headless-fast/references/bookings/seed/SEED.md +61 -0
  90. package/skills/wix-headless-fast/references/bookings/seed/seed-bookings.mjs +302 -0
  91. package/skills/wix-headless-fast/references/cms/INSTRUCTIONS.md +179 -0
  92. package/skills/wix-headless-fast/references/cms/app/hooks/cms/useCollection.ts +83 -0
  93. package/skills/wix-headless-fast/references/cms/app/hooks/cms/useItem.ts +57 -0
  94. package/skills/wix-headless-fast/references/cms/app/wix/cms/items.ts +151 -0
  95. package/skills/wix-headless-fast/references/cms/app/wix/cms/types.ts +75 -0
  96. package/skills/wix-headless-fast/references/cms/app-astro/layouts/SiteLayout.astro +41 -0
  97. package/skills/wix-headless-fast/references/cms/lock/astro/package-lock.json +11262 -0
  98. package/skills/wix-headless-fast/references/cms/seed/SEED.md +103 -0
  99. package/skills/wix-headless-fast/references/cms/seed/seed-cms.mjs +324 -0
  100. package/skills/wix-headless-fast/references/events/INSTRUCTIONS.md +149 -0
  101. package/skills/wix-headless-fast/references/events/app/components/events/EventConfirmationView.tsx +66 -0
  102. package/skills/wix-headless-fast/references/events/app/components/events/EventRegistrationView.tsx +176 -0
  103. package/skills/wix-headless-fast/references/events/app/components/events/EventsView.tsx +118 -0
  104. package/skills/wix-headless-fast/references/events/app/hooks/events/useEventRegistration.ts +117 -0
  105. package/skills/wix-headless-fast/references/events/app/hooks/events/useEvents.ts +59 -0
  106. package/skills/wix-headless-fast/references/events/app/wix/events/events.ts +136 -0
  107. package/skills/wix-headless-fast/references/events/app/wix/events/registration.ts +128 -0
  108. package/skills/wix-headless-fast/references/events/app/wix/events/types.ts +61 -0
  109. package/skills/wix-headless-fast/references/events/app-astro/layouts/SiteLayout.astro +40 -0
  110. package/skills/wix-headless-fast/references/events/app-astro/pages/event-confirmation.astro +12 -0
  111. package/skills/wix-headless-fast/references/events/app-astro/pages/events/[slug].astro +80 -0
  112. package/skills/wix-headless-fast/references/events/app-astro/pages/events.astro +21 -0
  113. package/skills/wix-headless-fast/references/events/lock/astro/package-lock.json +11884 -0
  114. package/skills/wix-headless-fast/references/events/seed/SEED.md +86 -0
  115. package/skills/wix-headless-fast/references/events/seed/seed-events.mjs +276 -0
  116. package/skills/wix-headless-fast/references/forms/INSTRUCTIONS.md +150 -0
  117. package/skills/wix-headless-fast/references/forms/app/hooks/forms/useWixForm.ts +317 -0
  118. package/skills/wix-headless-fast/references/forms/app/wix/forms/forms.ts +269 -0
  119. package/skills/wix-headless-fast/references/forms/app/wix/forms/submissions.ts +231 -0
  120. package/skills/wix-headless-fast/references/forms/app/wix/forms/types.ts +135 -0
  121. package/skills/wix-headless-fast/references/forms/lock/astro/package-lock.json +10593 -0
  122. package/skills/wix-headless-fast/references/forms/seed/SEED.md +108 -0
  123. package/skills/wix-headless-fast/references/forms/seed/seed-forms.mjs +320 -0
  124. package/skills/wix-headless-fast/references/members/INSTRUCTIONS.md +63 -0
  125. package/skills/wix-headless-fast/references/members/app/components/members/AccountView.tsx +60 -0
  126. package/skills/wix-headless-fast/references/members/app/components/members/LoginForm.tsx +155 -0
  127. package/skills/wix-headless-fast/references/members/app/components/members/MemberMenu.tsx +78 -0
  128. package/skills/wix-headless-fast/references/members/app/components/members/RequireAuth.tsx +47 -0
  129. package/skills/wix-headless-fast/references/members/app/hooks/members/useMember.ts +66 -0
  130. package/skills/wix-headless-fast/references/members/app/wix/members/auth.ts +88 -0
  131. package/skills/wix-headless-fast/references/members/app/wix/members/client.ts +53 -0
  132. package/skills/wix-headless-fast/references/members/app/wix/members/member-store.ts +122 -0
  133. package/skills/wix-headless-fast/references/members/app/wix/members/members.ts +50 -0
  134. package/skills/wix-headless-fast/references/members/app/wix/members/types.ts +21 -0
  135. package/skills/wix-headless-fast/references/members/app-astro/layouts/SiteLayout.astro +42 -0
  136. package/skills/wix-headless-fast/references/members/app-astro/pages/account.astro +10 -0
  137. package/skills/wix-headless-fast/references/members/app-astro/pages/login.astro +11 -0
  138. package/skills/wix-headless-fast/references/members/lock/astro/package-lock.json +10329 -0
  139. package/skills/wix-headless-fast/references/members/seed/SEED.md +39 -0
  140. package/skills/wix-headless-fast/references/members/seed/seed-members.mjs +94 -0
  141. package/skills/wix-headless-fast/references/portfolio/INSTRUCTIONS.md +134 -0
  142. package/skills/wix-headless-fast/references/portfolio/app/components/portfolio/CollectionProjectsView.tsx +110 -0
  143. package/skills/wix-headless-fast/references/portfolio/app/components/portfolio/CollectionsView.tsx +90 -0
  144. package/skills/wix-headless-fast/references/portfolio/app/components/portfolio/ProjectDetailView.tsx +115 -0
  145. package/skills/wix-headless-fast/references/portfolio/app/hooks/portfolio/useCollectionProjects.ts +59 -0
  146. package/skills/wix-headless-fast/references/portfolio/app/hooks/portfolio/useCollections.ts +39 -0
  147. package/skills/wix-headless-fast/references/portfolio/app/hooks/portfolio/useProjectDetail.ts +58 -0
  148. package/skills/wix-headless-fast/references/portfolio/app/wix/portfolio/portfolio.ts +165 -0
  149. package/skills/wix-headless-fast/references/portfolio/app/wix/portfolio/types.ts +55 -0
  150. package/skills/wix-headless-fast/references/portfolio/app-astro/layouts/SiteLayout.astro +40 -0
  151. package/skills/wix-headless-fast/references/portfolio/app-astro/pages/portfolio/[slug].astro +30 -0
  152. package/skills/wix-headless-fast/references/portfolio/app-astro/pages/portfolio.astro +21 -0
  153. package/skills/wix-headless-fast/references/portfolio/app-astro/pages/projects/[slug].astro +29 -0
  154. package/skills/wix-headless-fast/references/portfolio/lock/astro/package-lock.json +10197 -0
  155. package/skills/wix-headless-fast/references/portfolio/seed/SEED.md +78 -0
  156. package/skills/wix-headless-fast/references/portfolio/seed/seed-portfolio.mjs +258 -0
  157. package/skills/wix-headless-fast/references/pricing-plans/INSTRUCTIONS.md +133 -0
  158. package/skills/wix-headless-fast/references/pricing-plans/app/components/pricing-plans/PlanDetailView.tsx +58 -0
  159. package/skills/wix-headless-fast/references/pricing-plans/app/components/pricing-plans/PlansView.tsx +126 -0
  160. package/skills/wix-headless-fast/references/pricing-plans/app/hooks/pricing-plans/usePlanPurchase.ts +37 -0
  161. package/skills/wix-headless-fast/references/pricing-plans/app/hooks/pricing-plans/usePlans.ts +39 -0
  162. package/skills/wix-headless-fast/references/pricing-plans/app/wix/pricing-plans/plans.ts +75 -0
  163. package/skills/wix-headless-fast/references/pricing-plans/app/wix/pricing-plans/purchase.ts +45 -0
  164. package/skills/wix-headless-fast/references/pricing-plans/app/wix/pricing-plans/types.ts +30 -0
  165. package/skills/wix-headless-fast/references/pricing-plans/app-astro/layouts/SiteLayout.astro +41 -0
  166. package/skills/wix-headless-fast/references/pricing-plans/app-astro/pages/plans/[slug].astro +40 -0
  167. package/skills/wix-headless-fast/references/pricing-plans/app-astro/pages/plans.astro +21 -0
  168. package/skills/wix-headless-fast/references/pricing-plans/lock/astro/package-lock.json +11226 -0
  169. package/skills/wix-headless-fast/references/pricing-plans/seed/SEED.md +71 -0
  170. package/skills/wix-headless-fast/references/pricing-plans/seed/seed-pricing-plans.mjs +279 -0
  171. package/skills/wix-headless-fast/references/restaurants/INSTRUCTIONS.md +165 -0
  172. package/skills/wix-headless-fast/references/restaurants/app/components/restaurants/MenuView.tsx +142 -0
  173. package/skills/wix-headless-fast/references/restaurants/app/components/restaurants/OrderCartButton.tsx +26 -0
  174. package/skills/wix-headless-fast/references/restaurants/app/components/restaurants/OrderCartDrawer.tsx +121 -0
  175. package/skills/wix-headless-fast/references/restaurants/app/components/restaurants/ReservationView.tsx +155 -0
  176. package/skills/wix-headless-fast/references/restaurants/app/hooks/restaurants/useMenus.ts +55 -0
  177. package/skills/wix-headless-fast/references/restaurants/app/hooks/restaurants/useOrderCart.ts +43 -0
  178. package/skills/wix-headless-fast/references/restaurants/app/hooks/restaurants/useReservation.ts +177 -0
  179. package/skills/wix-headless-fast/references/restaurants/app/wix/restaurants/menu.ts +165 -0
  180. package/skills/wix-headless-fast/references/restaurants/app/wix/restaurants/order-store.ts +103 -0
  181. package/skills/wix-headless-fast/references/restaurants/app/wix/restaurants/ordering.ts +254 -0
  182. package/skills/wix-headless-fast/references/restaurants/app/wix/restaurants/reservations.ts +146 -0
  183. package/skills/wix-headless-fast/references/restaurants/app/wix/restaurants/types.ts +168 -0
  184. package/skills/wix-headless-fast/references/restaurants/app-astro/layouts/SiteLayout.astro +47 -0
  185. package/skills/wix-headless-fast/references/restaurants/app-astro/pages/menu.astro +22 -0
  186. package/skills/wix-headless-fast/references/restaurants/app-astro/pages/reservations.astro +12 -0
  187. package/skills/wix-headless-fast/references/restaurants/lock/astro/package-lock.json +12560 -0
  188. package/skills/wix-headless-fast/references/restaurants/seed/SEED.md +81 -0
  189. package/skills/wix-headless-fast/references/restaurants/seed/seed-restaurants.mjs +479 -0
  190. package/skills/wix-headless-fast/references/shared/CONTENT.md +22 -0
  191. package/skills/wix-headless-fast/references/shared/CUSTOM_OPERATIONS.md +73 -0
  192. package/skills/wix-headless-fast/references/shared/DESIGN.md +26 -0
  193. package/skills/wix-headless-fast/references/shared/app/styles/global.css +52 -0
  194. package/skills/wix-headless-fast/references/shared/app/wix/config.ts +15 -0
  195. package/skills/wix-headless-fast/references/shared/app/wix/media.ts +27 -0
  196. package/skills/wix-headless-fast/references/shared/app/wix/money.ts +24 -0
  197. package/skills/wix-headless-fast/references/shared/app/wix/sdk.ts +76 -0
  198. package/skills/wix-headless-fast/references/shared/capabilities/media-upload/app/wix/media-upload/client.ts +46 -0
  199. package/skills/wix-headless-fast/references/shared/capabilities/media-upload/app-astro/pages/api/wix/media-upload.ts +46 -0
  200. package/skills/wix-headless-fast/references/shared/seed/images.mjs +145 -0
  201. package/skills/wix-headless-fast/references/storefront/INSTRUCTIONS.md +149 -0
  202. package/skills/wix-headless-fast/references/storefront/app/components/storefront/CartButton.tsx +26 -0
  203. package/skills/wix-headless-fast/references/storefront/app/components/storefront/CartDrawer.tsx +121 -0
  204. package/skills/wix-headless-fast/references/storefront/app/components/storefront/ProductCard.tsx +100 -0
  205. package/skills/wix-headless-fast/references/storefront/app/components/storefront/ProductDetailView.tsx +130 -0
  206. package/skills/wix-headless-fast/references/storefront/app/components/storefront/ProductGrid.tsx +48 -0
  207. package/skills/wix-headless-fast/references/storefront/app/components/storefront/ShopView.tsx +66 -0
  208. package/skills/wix-headless-fast/references/storefront/app/components/storefront/VariantPicker.tsx +103 -0
  209. package/skills/wix-headless-fast/references/storefront/app/hooks/storefront/useCart.ts +48 -0
  210. package/skills/wix-headless-fast/references/storefront/app/hooks/storefront/useProductDetail.ts +140 -0
  211. package/skills/wix-headless-fast/references/storefront/app/hooks/storefront/useShop.ts +80 -0
  212. package/skills/wix-headless-fast/references/storefront/app/wix/storefront/cart-store.ts +101 -0
  213. package/skills/wix-headless-fast/references/storefront/app/wix/storefront/cart.ts +221 -0
  214. package/skills/wix-headless-fast/references/storefront/app/wix/storefront/catalog.ts +215 -0
  215. package/skills/wix-headless-fast/references/storefront/app/wix/storefront/types.ts +109 -0
  216. package/skills/wix-headless-fast/references/storefront/app-astro/layouts/SiteLayout.astro +46 -0
  217. package/skills/wix-headless-fast/references/storefront/app-astro/pages/products/[slug].astro +56 -0
  218. package/skills/wix-headless-fast/references/storefront/app-astro/pages/shop.astro +23 -0
  219. package/skills/wix-headless-fast/references/storefront/lock/astro/package-lock.json +12247 -0
  220. package/skills/wix-headless-fast/references/storefront/seed/SEED.md +85 -0
  221. package/skills/wix-headless-fast/references/storefront/seed/seed-store.mjs +415 -0
  222. package/skills/wix-manage/SKILL.md +28 -2
  223. package/skills/wix-manage/references/bookings/booking-system-integration-gaps.md +20 -13
  224. package/skills/wix-manage/references/bookings/end-to-end-booking-flow.md +24 -11
  225. package/skills/wix-manage/references/cms/cms-ecommerce-catalog-integration.md +5 -5
  226. package/skills/wix-manage/references/google-ads/manage-campaign-success-guide.md +141 -0
  227. package/skills/wix-manage/references/google-business-profile/connect-google-business-profile.md +134 -0
  228. package/skills/wix-manage/references/google-business-profile/manage-google-business-profile-locations.md +182 -0
  229. package/skills/wix-manage/references/marketing/create-and-publish-social-post.md +3 -0
  230. package/skills/wix-manage/references/seo/manage-seo-tags.md +315 -0
  231. package/skills/wix-manage/references/seo/manage-url-redirects.md +250 -0
  232. package/skills/wix-manage/references/sites/query-sites.md +72 -161
  233. package/skills/wix-manage/references/stores/create-product-catalog-v3.md +21 -6
  234. package/skills/wix-manage/references/stores/update-product-with-options.md +83 -0
  235. package/skills/wix-replatform/resources/rp-mapper/wix-business-solutions-taxonomy.md +5 -6
  236. package/skills/wix-vibe-headless/SKILL.md +18 -4
  237. package/skills/wix-vibe-headless/install/deploy.cjs +12 -4
  238. package/skills/wix-vibe-headless/install/pin-agents-md.cjs +2 -1
  239. package/skills/wix-vibe-headless/platforms/base44-ecom-light-seed.md +16 -10
  240. package/skills/wix-vibe-headless/platforms/base44-ecom-light.md +13 -8
  241. package/skills/wix-vibe-headless/platforms/base44.md +27 -62
  242. package/skills/wix-vibe-headless/platforms/generic.md +6 -3
  243. package/skills/wix-vibe-headless/references/bookings/INSTRUCTIONS.md +45 -0
  244. package/skills/wix-vibe-headless/references/bookings/app/components/RentalDurationPicker.jsx +67 -0
  245. package/skills/wix-vibe-headless/references/bookings/app/hooks/useRentalDuration.js +128 -0
  246. package/skills/wix-vibe-headless/references/bookings/app/hooks/useServiceDetail.js +5 -3
  247. package/skills/wix-vibe-headless/references/bookings/app/rest/wix-bookings-checkout.js +9 -8
  248. package/skills/wix-vibe-headless/references/bookings/app/rest/wix-bookings-rentals.js +250 -0
  249. package/skills/wix-vibe-headless/references/bookings/app/rest/wix-bookings-services.js +12 -5
  250. package/skills/wix-vibe-headless/references/bookings/seed/SEED.md +41 -0
  251. package/skills/wix-vibe-headless/references/bookings/seed/seed-rentals.js +267 -0
  252. package/skills/wix-vibe-headless/references/cms/INSTRUCTIONS.md +6 -3
  253. package/skills/wix-vibe-headless/references/forms/INSTRUCTIONS.md +470 -0
  254. package/skills/wix-vibe-headless/references/forms/app/hooks/useWixForm.js +425 -0
  255. package/skills/wix-vibe-headless/references/forms/app/lib/wix-form-schema-utils.js +187 -0
  256. package/skills/wix-vibe-headless/references/forms/app/rest/wix-forms-submissions.js +238 -0
  257. package/skills/wix-vibe-headless/references/forms/app/rest/wix-forms.js +108 -0
  258. package/skills/wix-vibe-headless/references/forms/seed/SEED.md +1762 -0
  259. package/skills/wix-vibe-headless/references/rentals/INSTRUCTIONS.md +13 -0
  260. package/skills/wix-vibe-headless/references/restaurants/INSTRUCTIONS.md +4 -1
  261. package/skills/wix-vibe-headless/references/restaurants/app/components/OrderCartDrawer.jsx +23 -11
  262. package/skills/wix-vibe-headless/references/restaurants/app/context/OrderCartContext.jsx +1 -1
  263. package/skills/wix-vibe-headless/references/restaurants/app/rest/wix-restaurants-ordering.js +29 -31
  264. package/skills/wix-vibe-headless/references/storefront/INSTRUCTIONS.md +152 -92
  265. package/skills/wix-vibe-headless/references/storefront/app/components/CartDrawer.jsx +37 -38
  266. package/skills/wix-vibe-headless/references/storefront/app/context/CartContext.jsx +2 -2
  267. package/skills/wix-vibe-headless/references/storefront/app/hooks/useProductDetail.js +15 -8
  268. package/skills/wix-vibe-headless/references/storefront/app/lib/storeImage.js +37 -0
  269. package/skills/wix-vibe-headless/references/storefront/app/rest/wix-store-cart.js +35 -35
  270. package/skills/wix-vibe-headless/references/storefront/app/rest/wix-store-catalog.js +18 -6
  271. package/skills/wix-vibe-headless/references/storefront/seed/SEED.md +30 -7
  272. package/skills/wix-vibe-headless/references/storefront/seed/seed-store.js +46 -10
  273. package/skills/wix-app/references/editor-react-component/A11Y-REVIEW-REFERENCE.md +0 -172
  274. package/skills/wix-app/references/editor-react-component/A11Y-REVIEW.md +0 -143
  275. package/skills/wix-app/references/editor-react-component/COMPONENT-API.md +0 -516
  276. package/skills/wix-app/references/editor-react-component/COMPONENT-CONFIGURATION.md +0 -225
  277. package/skills/wix-app/references/editor-react-component/EDIT-FLOW.md +0 -6
  278. package/skills/wix-app/references/editor-react-component/REACT-PATTERNS.md +0 -95
  279. package/skills/wix-vibe-headless/references/storefront/app/components/ProductCard.jsx +0 -110
  280. package/skills/wix-vibe-headless/references/storefront/app/components/ProductGallery.jsx +0 -51
  281. package/skills/wix-vibe-headless/references/storefront/app/components/ProductGrid.jsx +0 -49
  282. package/skills/wix-vibe-headless/references/storefront/app/components/VariantPicker.jsx +0 -92
  283. package/skills/wix-vibe-headless/references/storefront/app/pages/ProductDetail.jsx +0 -139
@@ -0,0 +1,37 @@
1
+ // The purchase action for any surface (grid card, detail CTA, home strip). All correctness
2
+ // (the hosted redirect session, member login/signup, payment) lives in the data layer —
3
+ // this hook tracks in-flight state; you own how it looks.
4
+ import { useState } from "react";
5
+ import { purchasePlan } from "../../wix/pricing-plans/purchase";
6
+ import type { PurchaseOptions } from "../../wix/pricing-plans/purchase";
7
+
8
+ export interface UsePlanPurchase {
9
+ /**
10
+ * Starts the hosted checkout — when it resolves the browser is already navigating away.
11
+ * Rejects with a visitor-facing message otherwise — surface it, don't swallow it.
12
+ */
13
+ purchase: (planId: string, options?: PurchaseOptions) => Promise<void>;
14
+ /** The plan id a purchase is in flight for (null when idle) — key CTA spinners off it. */
15
+ purchasingId: string | null;
16
+ error: string | null;
17
+ }
18
+
19
+ export function usePlanPurchase(): UsePlanPurchase {
20
+ const [purchasingId, setPurchasingId] = useState<string | null>(null);
21
+ const [error, setError] = useState<string | null>(null);
22
+
23
+ async function purchase(planId: string, options?: PurchaseOptions): Promise<void> {
24
+ setPurchasingId(planId);
25
+ setError(null);
26
+ try {
27
+ window.location.href = await purchasePlan(planId, options);
28
+ // stays "purchasing" — the browser is leaving for the hosted checkout
29
+ } catch (e) {
30
+ setPurchasingId(null);
31
+ setError(e instanceof Error ? e.message : String(e));
32
+ throw e;
33
+ }
34
+ }
35
+
36
+ return { purchase, purchasingId, error };
37
+ }
@@ -0,0 +1,39 @@
1
+ // Plans listing. SSR-friendly: pass server-fetched data as `initialPlans` (Astro frontmatter
2
+ // / server component) and no client fetch happens; a SPA passes nothing.
3
+ import { useEffect, useState } from "react";
4
+ import { fetchPlans } from "../../wix/pricing-plans/plans";
5
+ import type { PlanSummary } from "../../wix/pricing-plans/types";
6
+
7
+ export interface UsePlansOptions {
8
+ initialPlans?: PlanSummary[];
9
+ }
10
+
11
+ export interface UsePlans {
12
+ /** null while the first load is in flight — render skeletons, not an empty state. */
13
+ plans: PlanSummary[] | null;
14
+ error: string | null;
15
+ }
16
+
17
+ export function usePlans({ initialPlans }: UsePlansOptions = {}): UsePlans {
18
+ const [plans, setPlans] = useState<PlanSummary[] | null>(initialPlans ?? null);
19
+ const [error, setError] = useState<string | null>(null);
20
+
21
+ useEffect(() => {
22
+ let alive = true;
23
+ if (!initialPlans) {
24
+ fetchPlans()
25
+ .then((p) => alive && setPlans(p))
26
+ .catch((e) => {
27
+ if (!alive) return;
28
+ setPlans([]);
29
+ setError(e instanceof Error ? e.message : String(e));
30
+ });
31
+ }
32
+ return () => {
33
+ alive = false;
34
+ };
35
+ // eslint-disable-next-line react-hooks/exhaustive-deps
36
+ }, []);
37
+
38
+ return { plans, error };
39
+ }
@@ -0,0 +1,75 @@
1
+ // Plan reads (Wix Pricing Plans, Plans V3) — the only file that touches raw plan entities.
2
+ // Everything it returns is a plain DTO from ./types. Copy as-is; extend by adding functions,
3
+ // not by editing these.
4
+ //
5
+ // The read module is plansV3 — NOT `plans` (that's the V2 namespace; it has no queryPlans).
6
+ // docs: https://dev.wix.com/docs/api-reference/business-solutions/pricing-plans/plans-v3/query-plans.md
7
+ import { plansV3 } from "@wix/pricing-plans";
8
+ import { wixModule } from "../sdk";
9
+ import { imgSrc } from "../media";
10
+ import type { PlanDetail, PlanSummary } from "./types";
11
+
12
+ const plans = wixModule(plansV3);
13
+
14
+ type Raw = Record<string, any>;
15
+
16
+ function formatPrice(value: string | undefined, currency: string | undefined): string {
17
+ if (value == null || value === "" || Number(value) === 0) return "Free";
18
+ try {
19
+ return new Intl.NumberFormat(undefined, { style: "currency", currency: currency || "USD" }).format(Number(value));
20
+ } catch {
21
+ return `${value} ${currency ?? ""}`.trim();
22
+ }
23
+ }
24
+
25
+ // billingTerms → a display label. billingCycle.count comes back as a STRING in SDK reads
26
+ // ("1") — Number() it. endType CYCLES_COMPLETED with billingCycleCount 1 bills once.
27
+ function billingLabel(terms: Raw | undefined): string {
28
+ const cycle = terms?.billingCycle;
29
+ if (!cycle) return "one-time";
30
+ const cyclesTotal = Number(terms?.cyclesCompletedDetails?.billingCycleCount ?? 0);
31
+ if (terms?.endType === "CYCLES_COMPLETED" && cyclesTotal === 1) return "one-time";
32
+ const count = Number(cycle.count ?? 1) || 1;
33
+ const period = String(cycle.period ?? "MONTH").toLowerCase();
34
+ const base = count === 1 ? `per ${period}` : `every ${count} ${period}s`;
35
+ return terms?.endType === "CYCLES_COMPLETED" && cyclesTotal > 1 ? `${base} × ${cyclesTotal}` : base;
36
+ }
37
+
38
+ // The price is DISPLAY-ONLY: a decimal string at pricingVariants[0].pricingStrategies[0]
39
+ // .flatRate.amount ("0" = free), paired with plan.currency (site-derived — never assume
40
+ // USD). Wix settles the actual charge, tax, and schedule at the hosted checkout.
41
+ function toSummary(raw: Raw): PlanSummary {
42
+ const variant: Raw = raw.pricingVariants?.[0] ?? {};
43
+ const amount: string | undefined = variant.pricingStrategies?.[0]?.flatRate?.amount;
44
+ const free = amount == null || Number(amount) === 0;
45
+ return {
46
+ id: raw._id ?? "", // SDK entity id is _id, never id (that's the REST view)
47
+ slug: raw.slug ?? "",
48
+ name: raw.name ?? "",
49
+ description: raw.description ?? "",
50
+ price: free ? "Free" : formatPrice(amount, raw.currency),
51
+ free,
52
+ billing: free ? "" : billingLabel(variant.billingTerms),
53
+ freeTrialDays: variant.freeTrialDays || null,
54
+ perks: (raw.perks ?? []).map((p: Raw) => p.description ?? "").filter((d: string) => d),
55
+ buyable: raw.buyable === true,
56
+ imageUrl: imgSrc(raw.image, 800, 800),
57
+ };
58
+ }
59
+
60
+ function toDetail(raw: Raw): PlanDetail {
61
+ return { ...toSummary(raw), termsAndConditions: raw.termsAndConditions ?? "" };
62
+ }
63
+
64
+ /** List the public plans for the pricing grid, as card-ready DTOs. */
65
+ export async function fetchPlans({ limit = 100 } = {}): Promise<PlanSummary[]> {
66
+ const res = await plans.queryPlans().eq("visibility", "PUBLIC").limit(limit).find();
67
+ return (res.items ?? []).map((p: Raw) => toSummary(p));
68
+ }
69
+
70
+ /** Fetch one public plan by its URL slug. Null when not found. */
71
+ export async function fetchPlanBySlug(slug: string): Promise<PlanDetail | null> {
72
+ const res = await plans.queryPlans().eq("visibility", "PUBLIC").eq("slug", slug).limit(1).find();
73
+ const raw = res.items?.[0];
74
+ return raw ? toDetail(raw as Raw) : null;
75
+ }
@@ -0,0 +1,45 @@
1
+ // The purchase flow: one call that turns a plan id into a Wix-hosted checkout URL.
2
+ // Purchasing a plan is a MEMBER action, but the hosted flow handles member login/signup,
3
+ // the order form, and payment itself — so this works from an anonymous visitor session.
4
+ // Never create the order yourself (orders.createOnlineOrder needs a logged-in member and
5
+ // still leaves payment unhandled); never hand-build a checkout URL. Copy as-is.
6
+ // docs: https://dev.wix.com/docs/api-reference/business-management/headless/redirects/create-redirect-session.md
7
+ import { redirects as redirectsModule } from "@wix/redirects";
8
+ import { wixModule } from "../sdk";
9
+
10
+ const redirects = wixModule(redirectsModule);
11
+
12
+ type Raw = Record<string, any>;
13
+
14
+ export interface PurchaseOptions {
15
+ /**
16
+ * Success-only return URL — Wix appends `?planOrderId=<GUID>` to it. Omit → Wix shows its
17
+ * hosted thank-you page, then returns to postFlowUrl. Point it at a page of yours only if
18
+ * that page reads the param and renders a real confirmation.
19
+ */
20
+ thankYouPageUrl?: string;
21
+ /**
22
+ * Where a completed, abandoned, or interrupted flow returns (default: the current page).
23
+ * Landing here is NOT a success signal — only thankYouPageUrl carries one.
24
+ */
25
+ postFlowUrl?: string;
26
+ }
27
+
28
+ /** Start the hosted purchase for a plan; resolves to the URL to send the browser to. */
29
+ export async function purchasePlan(
30
+ planId: string,
31
+ { thankYouPageUrl, postFlowUrl }: PurchaseOptions = {},
32
+ ): Promise<string> {
33
+ if (!planId) throw new Error("A plan id is required to start checkout.");
34
+ const href = typeof window !== "undefined" ? window.location.href : "";
35
+ const session: Raw = await redirects.createRedirectSession({
36
+ paidPlansCheckout: { planId },
37
+ callbacks: {
38
+ postFlowUrl: postFlowUrl ?? (href || undefined),
39
+ ...(thankYouPageUrl ? { thankYouPageUrl } : {}),
40
+ },
41
+ });
42
+ const url = session?.redirectSession?.fullUrl;
43
+ if (!url) throw new Error("Checkout couldn't start — please try again.");
44
+ return url;
45
+ }
@@ -0,0 +1,30 @@
1
+ // Pricing Plans 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
+ /** A plan as a pricing-grid card needs it. */
6
+ export interface PlanSummary {
7
+ id: string;
8
+ slug: string;
9
+ name: string;
10
+ description: string;
11
+ /** Formatted price (e.g. "$29.00"); "Free" when the plan costs nothing. */
12
+ price: string;
13
+ free: boolean;
14
+ /** Display-ready cadence: "per month", "every 3 months", "one-time"; "" for free plans. */
15
+ billing: string;
16
+ /** Free-trial length in days (null when the plan has none). */
17
+ freeTrialDays: number | null;
18
+ /** Display-only feature bullets, in order. */
19
+ perks: string[];
20
+ /** False → a PUBLIC but merchant-assigned plan: show it without a subscribe CTA. */
21
+ buyable: boolean;
22
+ /** Resolved https URL ("" when the plan has no image). */
23
+ imageUrl: string;
24
+ }
25
+
26
+ /** A plan as the detail page needs it. */
27
+ export interface PlanDetail extends PlanSummary {
28
+ /** Terms & conditions as plain text ("" when not set) — render as-is (pre-wrap). */
29
+ termsAndConditions: string;
30
+ }
@@ -0,0 +1,41 @@
1
+ ---
2
+ // The site chrome for every pricing-plans page — THIS file (header/footer/nav) plus the
3
+ // @theme token block in src/styles/global.css are what you brand. Keep the
4
+ // <slot name="seo-tags" /> in <head> and the global.css import. (Deploy is fill-only: if
5
+ // another vertical is already deployed, its SiteLayout won — merge a Plans nav link there
6
+ // instead.)
7
+ import "../styles/global.css";
8
+
9
+ interface Props {
10
+ title: string;
11
+ description?: string;
12
+ }
13
+ const { title, description } = Astro.props;
14
+ ---
15
+
16
+ <!doctype html>
17
+ <html lang="en">
18
+ <head>
19
+ <meta charset="UTF-8" />
20
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
21
+ <title>{title}</title>
22
+ {description && <meta name="description" content={description} />}
23
+ <slot name="seo-tags" />
24
+ </head>
25
+ <body>
26
+ <header class="sticky top-0 z-40 border-b border-border bg-background/80 backdrop-blur">
27
+ <div class="mx-auto flex h-16 max-w-6xl items-center justify-between px-6">
28
+ <a href="/" class="text-base font-bold tracking-tight text-foreground no-underline">Brand Name</a>
29
+ <nav class="flex items-center gap-6 text-sm">
30
+ <a href="/plans" class="text-foreground no-underline transition-colors hover:text-muted-foreground">Plans</a>
31
+ </nav>
32
+ </div>
33
+ </header>
34
+ <main class="mx-auto max-w-6xl px-6 pb-24 pt-10">
35
+ <slot />
36
+ </main>
37
+ <footer class="border-t border-border px-6 py-10 text-center text-sm text-muted-foreground">
38
+ © Brand Name
39
+ </footer>
40
+ </body>
41
+ </html>
@@ -0,0 +1,40 @@
1
+ ---
2
+ // Plan detail page.
3
+ //
4
+ // Pricing Plans has no documented owner-editable SEO item type (unlike bookings services /
5
+ // store products), so this page carries plain <title>/<meta> from the DTO — no wixMetadata,
6
+ // no <SEO.Tags>. The island is client:load: the plan arrives as an SSR-fetched prop; only
7
+ // the purchase action runs client-side.
8
+ import SiteLayout from "../../layouts/SiteLayout.astro";
9
+ import PlanDetailView from "../../components/pricing-plans/PlanDetailView";
10
+ import { fetchPlanBySlug } from "../../wix/pricing-plans/plans";
11
+ import type { PlanDetail } from "../../wix/pricing-plans/types";
12
+
13
+ const slug = Astro.params.slug!;
14
+
15
+ let plan: PlanDetail | null = null;
16
+ try {
17
+ plan = await fetchPlanBySlug(slug);
18
+ } catch {
19
+ // Guarded: an unhandled SSR throw truncates the response mid-stream.
20
+ }
21
+
22
+ if (!plan) {
23
+ return new Response(null, { status: 404 });
24
+ }
25
+ ---
26
+
27
+ <SiteLayout title={plan.name} description={plan.description || undefined}>
28
+ <div class="mx-auto max-w-2xl">
29
+ {plan.imageUrl && (
30
+ <div class="mb-6 aspect-[16/9] overflow-hidden rounded-xl bg-secondary">
31
+ <img src={plan.imageUrl} alt={plan.name} class="h-full w-full object-cover" />
32
+ </div>
33
+ )}
34
+ <h1 class="text-2xl font-semibold tracking-tight">{plan.name}</h1>
35
+ {plan.description && <p class="mt-2 text-muted-foreground">{plan.description}</p>}
36
+ <div class="mt-6">
37
+ <PlanDetailView client:load plan={plan} />
38
+ </div>
39
+ </div>
40
+ </SiteLayout>
@@ -0,0 +1,21 @@
1
+ ---
2
+ // Plans & Pricing — data fetched SERVER-SIDE (SEO) and handed to the island as DTO props.
3
+ // Keep this frontmatter; swap the island import to YOUR pricing component.
4
+ import SiteLayout from "../layouts/SiteLayout.astro";
5
+ import PlansView from "../components/pricing-plans/PlansView";
6
+ import { fetchPlans } from "../wix/pricing-plans/plans";
7
+ import type { PlanSummary } from "../wix/pricing-plans/types";
8
+
9
+ let plans: PlanSummary[] = [];
10
+ try {
11
+ plans = await fetchPlans();
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="Plans & Pricing">
19
+ <h1 class="mb-8 text-2xl font-semibold tracking-tight">Plans &amp; Pricing</h1>
20
+ <PlansView client:load initialPlans={plans} />
21
+ </SiteLayout>