@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.
- package/package.json +1 -1
- package/skills/wix-app/SKILL.md +115 -12
- package/skills/wix-app/references/APP_MARKET_REVIEW.md +1 -1
- package/skills/wix-app/references/BACKEND_API.md +18 -0
- package/skills/wix-app/references/CUSTOM_ELEMENT_WIDGET.md +6 -0
- package/skills/wix-app/references/DASHBOARD_MODAL.md +10 -2
- package/skills/wix-app/references/DASHBOARD_PAGE.md +32 -70
- package/skills/wix-app/references/EDITOR_REACT_COMPONENT.md +145 -127
- package/skills/wix-app/references/SITE_PLUGIN.md +14 -2
- package/skills/wix-app/references/WIX_PATTERNS_DOCS.md +74 -68
- package/skills/wix-app/references/backend-event/COMMON-EVENTS.md +2 -2
- package/skills/wix-app/references/dashboard-page/COLLECTION_TOOLKIT.md +79 -0
- package/skills/wix-app/references/dashboard-page/ENTITY_PAGE_TOOLKIT.md +73 -0
- package/skills/wix-app/references/dashboard-page/PATTERNS_BUNDLE_READING.md +52 -0
- package/skills/wix-app/references/dashboard-page/UX_SUCCESS_MODEL.md +184 -0
- package/skills/wix-app/references/editor-react-component/ACCESSIBILITY.md +182 -99
- package/skills/wix-app/references/editor-react-component/ANIMATED-COMPONENTS.md +94 -49
- package/skills/wix-app/references/editor-react-component/BRANDED-COMPONENTS.md +16 -6
- package/skills/wix-app/references/editor-react-component/BROWSER-SUPPORT.md +56 -0
- package/skills/wix-app/references/editor-react-component/COMPONENT-CONTRACT.md +275 -0
- package/skills/wix-app/references/editor-react-component/COMPONENT-PREVIEW.md +35 -40
- package/skills/wix-app/references/editor-react-component/CSS-GUIDELINES.md +167 -445
- package/skills/wix-app/references/editor-react-component/DESIGN-STATES.md +56 -29
- package/skills/wix-app/references/editor-react-component/DIRECTIONALITY.md +53 -158
- package/skills/wix-app/references/editor-react-component/EDITOR-EXTENSION-CONFIGURATION.md +78 -0
- package/skills/wix-app/references/editor-react-component/FUNCTION-HANDLERS.md +42 -134
- package/skills/wix-app/references/editor-react-component/MANIFEST-ERRORS.md +11 -3
- package/skills/wix-app/references/editor-react-component/PARTS.md +46 -24
- package/skills/wix-app/references/editor-react-component/PROPS-VS-CSS.md +63 -179
- package/skills/wix-app/references/editor-react-component/REACT-GUIDELINES.md +79 -163
- package/skills/wix-app/references/editor-react-component/SITE-CONTEXT-HOOKS.md +36 -21
- package/skills/wix-app/references/editor-react-component/SSR.md +30 -99
- package/skills/wix-base44-connector/SKILL.md +156 -50
- package/skills/wix-base44-connector/references/CAPABILITY_MAP.md +78 -0
- package/skills/wix-base44-connector/scripts/utils.js +239 -45
- package/skills/wix-headless/entry/bootstrap.mjs +9 -2
- package/skills/wix-headless/entry/skill.md +1 -1
- package/skills/wix-headless/references/CAPABILITIES.md +9 -1
- package/skills/wix-headless/references/DESIGN.md +1 -0
- package/skills/wix-headless/references/DISCOVERY.md +2 -1
- package/skills/wix-headless/references/IMAGE_GENERATION.md +1 -0
- package/skills/wix-headless/references/SDK_HANDOFF.md +5 -2
- package/skills/wix-headless/references/SEED.md +2 -1
- package/skills/wix-headless/references/SETUP.md +1 -0
- package/skills/wix-headless/references/inline-recipes/how-to-code-a-blog.md +2 -2
- package/skills/wix-headless/references/inline-recipes/how-to-code-a-store.md +68 -31
- package/skills/wix-headless/references/inline-recipes/how-to-code-forms.md +26 -10
- package/skills/wix-headless/references/inline-recipes/how-to-code-members-astro.md +8 -8
- package/skills/wix-headless/references/inline-recipes/how-to-code-members-custom-login.md +1 -1
- package/skills/wix-headless/references/inline-recipes/how-to-code-members-non-astro.md +1 -1
- package/skills/wix-headless/references/inline-recipes/how-to-code-pricing-plans.md +10 -8
- package/skills/wix-headless/references/inline-recipes/how-to-code-rentals.md +254 -0
- package/skills/wix-headless/references/inline-recipes/how-to-code-restaurant-orders.md +27 -24
- package/skills/wix-headless/references/inline-recipes/setup-online-store.md +13 -0
- package/skills/wix-headless/references/inline-recipes/setup-rentals.md +254 -0
- package/skills/wix-headless/references/managed/AUTHENTICATION.md +5 -0
- package/skills/wix-headless/references/non-astro.md +1 -1
- package/skills/wix-headless-fast/SKILL.md +166 -0
- package/skills/wix-headless-fast/entry/skill.md +99 -0
- package/skills/wix-headless-fast/install/deploy.mjs +433 -0
- package/skills/wix-headless-fast/install/fast-path.mjs +141 -0
- package/skills/wix-headless-fast/references/blog/INSTRUCTIONS.md +137 -0
- package/skills/wix-headless-fast/references/blog/app/components/blog/BlogFeedView.tsx +137 -0
- package/skills/wix-headless-fast/references/blog/app/components/blog/PostView.tsx +113 -0
- package/skills/wix-headless-fast/references/blog/app/components/blog/RichContent.tsx +42 -0
- package/skills/wix-headless-fast/references/blog/app/hooks/blog/useBlogFeed.ts +123 -0
- package/skills/wix-headless-fast/references/blog/app/hooks/blog/usePost.ts +70 -0
- package/skills/wix-headless-fast/references/blog/app/wix/blog/posts.ts +99 -0
- package/skills/wix-headless-fast/references/blog/app/wix/blog/taxonomy.ts +76 -0
- package/skills/wix-headless-fast/references/blog/app/wix/blog/types.ts +62 -0
- package/skills/wix-headless-fast/references/blog/app-astro/layouts/SiteLayout.astro +40 -0
- package/skills/wix-headless-fast/references/blog/app-astro/pages/blog/[...slug].astro +99 -0
- package/skills/wix-headless-fast/references/blog/app-astro/pages/blog.astro +24 -0
- package/skills/wix-headless-fast/references/blog/lock/astro/package-lock.json +16156 -0
- package/skills/wix-headless-fast/references/blog/seed/SEED.md +72 -0
- package/skills/wix-headless-fast/references/blog/seed/seed-blog.mjs +287 -0
- package/skills/wix-headless-fast/references/bookings/INSTRUCTIONS.md +129 -0
- package/skills/wix-headless-fast/references/bookings/app/components/bookings/ServiceBookingView.tsx +143 -0
- package/skills/wix-headless-fast/references/bookings/app/components/bookings/ServicesView.tsx +119 -0
- package/skills/wix-headless-fast/references/bookings/app/hooks/bookings/useBookingFlow.ts +138 -0
- package/skills/wix-headless-fast/references/bookings/app/hooks/bookings/useServices.ts +54 -0
- package/skills/wix-headless-fast/references/bookings/app/wix/bookings/booking.ts +206 -0
- package/skills/wix-headless-fast/references/bookings/app/wix/bookings/services.ts +96 -0
- package/skills/wix-headless-fast/references/bookings/app/wix/bookings/types.ts +70 -0
- package/skills/wix-headless-fast/references/bookings/app-astro/layouts/SiteLayout.astro +40 -0
- package/skills/wix-headless-fast/references/bookings/app-astro/pages/services/[slug].astro +76 -0
- package/skills/wix-headless-fast/references/bookings/app-astro/pages/services.astro +22 -0
- package/skills/wix-headless-fast/references/bookings/lock/astro/package-lock.json +11962 -0
- package/skills/wix-headless-fast/references/bookings/seed/SEED.md +61 -0
- package/skills/wix-headless-fast/references/bookings/seed/seed-bookings.mjs +302 -0
- package/skills/wix-headless-fast/references/cms/INSTRUCTIONS.md +179 -0
- package/skills/wix-headless-fast/references/cms/app/hooks/cms/useCollection.ts +83 -0
- package/skills/wix-headless-fast/references/cms/app/hooks/cms/useItem.ts +57 -0
- package/skills/wix-headless-fast/references/cms/app/wix/cms/items.ts +151 -0
- package/skills/wix-headless-fast/references/cms/app/wix/cms/types.ts +75 -0
- package/skills/wix-headless-fast/references/cms/app-astro/layouts/SiteLayout.astro +41 -0
- package/skills/wix-headless-fast/references/cms/lock/astro/package-lock.json +11262 -0
- package/skills/wix-headless-fast/references/cms/seed/SEED.md +103 -0
- package/skills/wix-headless-fast/references/cms/seed/seed-cms.mjs +324 -0
- package/skills/wix-headless-fast/references/events/INSTRUCTIONS.md +149 -0
- package/skills/wix-headless-fast/references/events/app/components/events/EventConfirmationView.tsx +66 -0
- package/skills/wix-headless-fast/references/events/app/components/events/EventRegistrationView.tsx +176 -0
- package/skills/wix-headless-fast/references/events/app/components/events/EventsView.tsx +118 -0
- package/skills/wix-headless-fast/references/events/app/hooks/events/useEventRegistration.ts +117 -0
- package/skills/wix-headless-fast/references/events/app/hooks/events/useEvents.ts +59 -0
- package/skills/wix-headless-fast/references/events/app/wix/events/events.ts +136 -0
- package/skills/wix-headless-fast/references/events/app/wix/events/registration.ts +128 -0
- package/skills/wix-headless-fast/references/events/app/wix/events/types.ts +61 -0
- package/skills/wix-headless-fast/references/events/app-astro/layouts/SiteLayout.astro +40 -0
- package/skills/wix-headless-fast/references/events/app-astro/pages/event-confirmation.astro +12 -0
- package/skills/wix-headless-fast/references/events/app-astro/pages/events/[slug].astro +80 -0
- package/skills/wix-headless-fast/references/events/app-astro/pages/events.astro +21 -0
- package/skills/wix-headless-fast/references/events/lock/astro/package-lock.json +11884 -0
- package/skills/wix-headless-fast/references/events/seed/SEED.md +86 -0
- package/skills/wix-headless-fast/references/events/seed/seed-events.mjs +276 -0
- package/skills/wix-headless-fast/references/forms/INSTRUCTIONS.md +150 -0
- package/skills/wix-headless-fast/references/forms/app/hooks/forms/useWixForm.ts +317 -0
- package/skills/wix-headless-fast/references/forms/app/wix/forms/forms.ts +269 -0
- package/skills/wix-headless-fast/references/forms/app/wix/forms/submissions.ts +231 -0
- package/skills/wix-headless-fast/references/forms/app/wix/forms/types.ts +135 -0
- package/skills/wix-headless-fast/references/forms/lock/astro/package-lock.json +10593 -0
- package/skills/wix-headless-fast/references/forms/seed/SEED.md +108 -0
- package/skills/wix-headless-fast/references/forms/seed/seed-forms.mjs +320 -0
- package/skills/wix-headless-fast/references/members/INSTRUCTIONS.md +63 -0
- package/skills/wix-headless-fast/references/members/app/components/members/AccountView.tsx +60 -0
- package/skills/wix-headless-fast/references/members/app/components/members/LoginForm.tsx +155 -0
- package/skills/wix-headless-fast/references/members/app/components/members/MemberMenu.tsx +78 -0
- package/skills/wix-headless-fast/references/members/app/components/members/RequireAuth.tsx +47 -0
- package/skills/wix-headless-fast/references/members/app/hooks/members/useMember.ts +66 -0
- package/skills/wix-headless-fast/references/members/app/wix/members/auth.ts +88 -0
- package/skills/wix-headless-fast/references/members/app/wix/members/client.ts +53 -0
- package/skills/wix-headless-fast/references/members/app/wix/members/member-store.ts +122 -0
- package/skills/wix-headless-fast/references/members/app/wix/members/members.ts +50 -0
- package/skills/wix-headless-fast/references/members/app/wix/members/types.ts +21 -0
- package/skills/wix-headless-fast/references/members/app-astro/layouts/SiteLayout.astro +42 -0
- package/skills/wix-headless-fast/references/members/app-astro/pages/account.astro +10 -0
- package/skills/wix-headless-fast/references/members/app-astro/pages/login.astro +11 -0
- package/skills/wix-headless-fast/references/members/lock/astro/package-lock.json +10329 -0
- package/skills/wix-headless-fast/references/members/seed/SEED.md +39 -0
- package/skills/wix-headless-fast/references/members/seed/seed-members.mjs +94 -0
- package/skills/wix-headless-fast/references/portfolio/INSTRUCTIONS.md +134 -0
- package/skills/wix-headless-fast/references/portfolio/app/components/portfolio/CollectionProjectsView.tsx +110 -0
- package/skills/wix-headless-fast/references/portfolio/app/components/portfolio/CollectionsView.tsx +90 -0
- package/skills/wix-headless-fast/references/portfolio/app/components/portfolio/ProjectDetailView.tsx +115 -0
- package/skills/wix-headless-fast/references/portfolio/app/hooks/portfolio/useCollectionProjects.ts +59 -0
- package/skills/wix-headless-fast/references/portfolio/app/hooks/portfolio/useCollections.ts +39 -0
- package/skills/wix-headless-fast/references/portfolio/app/hooks/portfolio/useProjectDetail.ts +58 -0
- package/skills/wix-headless-fast/references/portfolio/app/wix/portfolio/portfolio.ts +165 -0
- package/skills/wix-headless-fast/references/portfolio/app/wix/portfolio/types.ts +55 -0
- package/skills/wix-headless-fast/references/portfolio/app-astro/layouts/SiteLayout.astro +40 -0
- package/skills/wix-headless-fast/references/portfolio/app-astro/pages/portfolio/[slug].astro +30 -0
- package/skills/wix-headless-fast/references/portfolio/app-astro/pages/portfolio.astro +21 -0
- package/skills/wix-headless-fast/references/portfolio/app-astro/pages/projects/[slug].astro +29 -0
- package/skills/wix-headless-fast/references/portfolio/lock/astro/package-lock.json +10197 -0
- package/skills/wix-headless-fast/references/portfolio/seed/SEED.md +78 -0
- package/skills/wix-headless-fast/references/portfolio/seed/seed-portfolio.mjs +258 -0
- package/skills/wix-headless-fast/references/pricing-plans/INSTRUCTIONS.md +133 -0
- package/skills/wix-headless-fast/references/pricing-plans/app/components/pricing-plans/PlanDetailView.tsx +58 -0
- package/skills/wix-headless-fast/references/pricing-plans/app/components/pricing-plans/PlansView.tsx +126 -0
- package/skills/wix-headless-fast/references/pricing-plans/app/hooks/pricing-plans/usePlanPurchase.ts +37 -0
- package/skills/wix-headless-fast/references/pricing-plans/app/hooks/pricing-plans/usePlans.ts +39 -0
- package/skills/wix-headless-fast/references/pricing-plans/app/wix/pricing-plans/plans.ts +75 -0
- package/skills/wix-headless-fast/references/pricing-plans/app/wix/pricing-plans/purchase.ts +45 -0
- package/skills/wix-headless-fast/references/pricing-plans/app/wix/pricing-plans/types.ts +30 -0
- package/skills/wix-headless-fast/references/pricing-plans/app-astro/layouts/SiteLayout.astro +41 -0
- package/skills/wix-headless-fast/references/pricing-plans/app-astro/pages/plans/[slug].astro +40 -0
- package/skills/wix-headless-fast/references/pricing-plans/app-astro/pages/plans.astro +21 -0
- package/skills/wix-headless-fast/references/pricing-plans/lock/astro/package-lock.json +11226 -0
- package/skills/wix-headless-fast/references/pricing-plans/seed/SEED.md +71 -0
- package/skills/wix-headless-fast/references/pricing-plans/seed/seed-pricing-plans.mjs +279 -0
- package/skills/wix-headless-fast/references/restaurants/INSTRUCTIONS.md +165 -0
- package/skills/wix-headless-fast/references/restaurants/app/components/restaurants/MenuView.tsx +142 -0
- package/skills/wix-headless-fast/references/restaurants/app/components/restaurants/OrderCartButton.tsx +26 -0
- package/skills/wix-headless-fast/references/restaurants/app/components/restaurants/OrderCartDrawer.tsx +121 -0
- package/skills/wix-headless-fast/references/restaurants/app/components/restaurants/ReservationView.tsx +155 -0
- package/skills/wix-headless-fast/references/restaurants/app/hooks/restaurants/useMenus.ts +55 -0
- package/skills/wix-headless-fast/references/restaurants/app/hooks/restaurants/useOrderCart.ts +43 -0
- package/skills/wix-headless-fast/references/restaurants/app/hooks/restaurants/useReservation.ts +177 -0
- package/skills/wix-headless-fast/references/restaurants/app/wix/restaurants/menu.ts +165 -0
- package/skills/wix-headless-fast/references/restaurants/app/wix/restaurants/order-store.ts +103 -0
- package/skills/wix-headless-fast/references/restaurants/app/wix/restaurants/ordering.ts +254 -0
- package/skills/wix-headless-fast/references/restaurants/app/wix/restaurants/reservations.ts +146 -0
- package/skills/wix-headless-fast/references/restaurants/app/wix/restaurants/types.ts +168 -0
- package/skills/wix-headless-fast/references/restaurants/app-astro/layouts/SiteLayout.astro +47 -0
- package/skills/wix-headless-fast/references/restaurants/app-astro/pages/menu.astro +22 -0
- package/skills/wix-headless-fast/references/restaurants/app-astro/pages/reservations.astro +12 -0
- package/skills/wix-headless-fast/references/restaurants/lock/astro/package-lock.json +12560 -0
- package/skills/wix-headless-fast/references/restaurants/seed/SEED.md +81 -0
- package/skills/wix-headless-fast/references/restaurants/seed/seed-restaurants.mjs +479 -0
- package/skills/wix-headless-fast/references/shared/CONTENT.md +22 -0
- package/skills/wix-headless-fast/references/shared/CUSTOM_OPERATIONS.md +73 -0
- package/skills/wix-headless-fast/references/shared/DESIGN.md +26 -0
- package/skills/wix-headless-fast/references/shared/app/styles/global.css +52 -0
- package/skills/wix-headless-fast/references/shared/app/wix/config.ts +15 -0
- package/skills/wix-headless-fast/references/shared/app/wix/media.ts +27 -0
- package/skills/wix-headless-fast/references/shared/app/wix/money.ts +24 -0
- package/skills/wix-headless-fast/references/shared/app/wix/sdk.ts +76 -0
- package/skills/wix-headless-fast/references/shared/capabilities/media-upload/app/wix/media-upload/client.ts +46 -0
- package/skills/wix-headless-fast/references/shared/capabilities/media-upload/app-astro/pages/api/wix/media-upload.ts +46 -0
- package/skills/wix-headless-fast/references/shared/seed/images.mjs +145 -0
- package/skills/wix-headless-fast/references/storefront/INSTRUCTIONS.md +149 -0
- package/skills/wix-headless-fast/references/storefront/app/components/storefront/CartButton.tsx +26 -0
- package/skills/wix-headless-fast/references/storefront/app/components/storefront/CartDrawer.tsx +121 -0
- package/skills/wix-headless-fast/references/storefront/app/components/storefront/ProductCard.tsx +100 -0
- package/skills/wix-headless-fast/references/storefront/app/components/storefront/ProductDetailView.tsx +130 -0
- package/skills/wix-headless-fast/references/storefront/app/components/storefront/ProductGrid.tsx +48 -0
- package/skills/wix-headless-fast/references/storefront/app/components/storefront/ShopView.tsx +66 -0
- package/skills/wix-headless-fast/references/storefront/app/components/storefront/VariantPicker.tsx +103 -0
- package/skills/wix-headless-fast/references/storefront/app/hooks/storefront/useCart.ts +48 -0
- package/skills/wix-headless-fast/references/storefront/app/hooks/storefront/useProductDetail.ts +140 -0
- package/skills/wix-headless-fast/references/storefront/app/hooks/storefront/useShop.ts +80 -0
- package/skills/wix-headless-fast/references/storefront/app/wix/storefront/cart-store.ts +101 -0
- package/skills/wix-headless-fast/references/storefront/app/wix/storefront/cart.ts +221 -0
- package/skills/wix-headless-fast/references/storefront/app/wix/storefront/catalog.ts +215 -0
- package/skills/wix-headless-fast/references/storefront/app/wix/storefront/types.ts +109 -0
- package/skills/wix-headless-fast/references/storefront/app-astro/layouts/SiteLayout.astro +46 -0
- package/skills/wix-headless-fast/references/storefront/app-astro/pages/products/[slug].astro +56 -0
- package/skills/wix-headless-fast/references/storefront/app-astro/pages/shop.astro +23 -0
- package/skills/wix-headless-fast/references/storefront/lock/astro/package-lock.json +12247 -0
- package/skills/wix-headless-fast/references/storefront/seed/SEED.md +85 -0
- package/skills/wix-headless-fast/references/storefront/seed/seed-store.mjs +415 -0
- package/skills/wix-manage/SKILL.md +28 -2
- package/skills/wix-manage/references/bookings/booking-system-integration-gaps.md +20 -13
- package/skills/wix-manage/references/bookings/end-to-end-booking-flow.md +24 -11
- package/skills/wix-manage/references/cms/cms-ecommerce-catalog-integration.md +5 -5
- package/skills/wix-manage/references/google-ads/manage-campaign-success-guide.md +141 -0
- package/skills/wix-manage/references/google-business-profile/connect-google-business-profile.md +134 -0
- package/skills/wix-manage/references/google-business-profile/manage-google-business-profile-locations.md +182 -0
- package/skills/wix-manage/references/marketing/create-and-publish-social-post.md +3 -0
- package/skills/wix-manage/references/seo/manage-seo-tags.md +315 -0
- package/skills/wix-manage/references/seo/manage-url-redirects.md +250 -0
- package/skills/wix-manage/references/sites/query-sites.md +72 -161
- package/skills/wix-manage/references/stores/create-product-catalog-v3.md +21 -6
- package/skills/wix-manage/references/stores/update-product-with-options.md +83 -0
- package/skills/wix-replatform/resources/rp-mapper/wix-business-solutions-taxonomy.md +5 -6
- package/skills/wix-vibe-headless/SKILL.md +18 -4
- package/skills/wix-vibe-headless/install/deploy.cjs +12 -4
- package/skills/wix-vibe-headless/install/pin-agents-md.cjs +2 -1
- package/skills/wix-vibe-headless/platforms/base44-ecom-light-seed.md +16 -10
- package/skills/wix-vibe-headless/platforms/base44-ecom-light.md +13 -8
- package/skills/wix-vibe-headless/platforms/base44.md +27 -62
- package/skills/wix-vibe-headless/platforms/generic.md +6 -3
- package/skills/wix-vibe-headless/references/bookings/INSTRUCTIONS.md +45 -0
- package/skills/wix-vibe-headless/references/bookings/app/components/RentalDurationPicker.jsx +67 -0
- package/skills/wix-vibe-headless/references/bookings/app/hooks/useRentalDuration.js +128 -0
- package/skills/wix-vibe-headless/references/bookings/app/hooks/useServiceDetail.js +5 -3
- package/skills/wix-vibe-headless/references/bookings/app/rest/wix-bookings-checkout.js +9 -8
- package/skills/wix-vibe-headless/references/bookings/app/rest/wix-bookings-rentals.js +250 -0
- package/skills/wix-vibe-headless/references/bookings/app/rest/wix-bookings-services.js +12 -5
- package/skills/wix-vibe-headless/references/bookings/seed/SEED.md +41 -0
- package/skills/wix-vibe-headless/references/bookings/seed/seed-rentals.js +267 -0
- package/skills/wix-vibe-headless/references/cms/INSTRUCTIONS.md +6 -3
- package/skills/wix-vibe-headless/references/forms/INSTRUCTIONS.md +470 -0
- package/skills/wix-vibe-headless/references/forms/app/hooks/useWixForm.js +425 -0
- package/skills/wix-vibe-headless/references/forms/app/lib/wix-form-schema-utils.js +187 -0
- package/skills/wix-vibe-headless/references/forms/app/rest/wix-forms-submissions.js +238 -0
- package/skills/wix-vibe-headless/references/forms/app/rest/wix-forms.js +108 -0
- package/skills/wix-vibe-headless/references/forms/seed/SEED.md +1762 -0
- package/skills/wix-vibe-headless/references/rentals/INSTRUCTIONS.md +13 -0
- package/skills/wix-vibe-headless/references/restaurants/INSTRUCTIONS.md +4 -1
- package/skills/wix-vibe-headless/references/restaurants/app/components/OrderCartDrawer.jsx +23 -11
- package/skills/wix-vibe-headless/references/restaurants/app/context/OrderCartContext.jsx +1 -1
- package/skills/wix-vibe-headless/references/restaurants/app/rest/wix-restaurants-ordering.js +29 -31
- package/skills/wix-vibe-headless/references/storefront/INSTRUCTIONS.md +152 -92
- package/skills/wix-vibe-headless/references/storefront/app/components/CartDrawer.jsx +37 -38
- package/skills/wix-vibe-headless/references/storefront/app/context/CartContext.jsx +2 -2
- package/skills/wix-vibe-headless/references/storefront/app/hooks/useProductDetail.js +15 -8
- package/skills/wix-vibe-headless/references/storefront/app/lib/storeImage.js +37 -0
- package/skills/wix-vibe-headless/references/storefront/app/rest/wix-store-cart.js +35 -35
- package/skills/wix-vibe-headless/references/storefront/app/rest/wix-store-catalog.js +18 -6
- package/skills/wix-vibe-headless/references/storefront/seed/SEED.md +30 -7
- package/skills/wix-vibe-headless/references/storefront/seed/seed-store.js +46 -10
- package/skills/wix-app/references/editor-react-component/A11Y-REVIEW-REFERENCE.md +0 -172
- package/skills/wix-app/references/editor-react-component/A11Y-REVIEW.md +0 -143
- package/skills/wix-app/references/editor-react-component/COMPONENT-API.md +0 -516
- package/skills/wix-app/references/editor-react-component/COMPONENT-CONFIGURATION.md +0 -225
- package/skills/wix-app/references/editor-react-component/EDIT-FLOW.md +0 -6
- package/skills/wix-app/references/editor-react-component/REACT-PATTERNS.md +0 -95
- package/skills/wix-vibe-headless/references/storefront/app/components/ProductCard.jsx +0 -110
- package/skills/wix-vibe-headless/references/storefront/app/components/ProductGallery.jsx +0 -51
- package/skills/wix-vibe-headless/references/storefront/app/components/ProductGrid.jsx +0 -49
- package/skills/wix-vibe-headless/references/storefront/app/components/VariantPicker.jsx +0 -92
- package/skills/wix-vibe-headless/references/storefront/app/pages/ProductDetail.jsx +0 -139
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
// Rentals seed helpers — run at BUILD TIME via exec_tool (NOT shipped in the app).
|
|
2
|
+
// A DELTA on seed-bookings.js: Wix Rentals has no APIs of its own, so a rental is a Bookings
|
|
3
|
+
// service carrying rentals-specific field values. Everything about the transport, images and
|
|
4
|
+
// error handling is the same; only the create order and the service payload differ.
|
|
5
|
+
//
|
|
6
|
+
// Live-verified end to end on fresh headless sites (install → resource type → resources → service →
|
|
7
|
+
// time-slots → end-options).
|
|
8
|
+
//
|
|
9
|
+
// Usage (build-time exec_tool) — prefer `setupRentals`, which runs the whole flow in the one order
|
|
10
|
+
// that works and threads the resource ids into each service for you:
|
|
11
|
+
// const { accessToken } = await base44.asServiceRole.connectors.getConnection("wix");
|
|
12
|
+
// const seed = require("/app/.agents/skills/wix-vibe-headless/references/bookings/seed/seed-rentals.js");
|
|
13
|
+
// const ctx = { token: accessToken, siteId: WIX_METASITE_ID };
|
|
14
|
+
// await seed.setupRentals(ctx, {
|
|
15
|
+
// resourceTypeName: "Meeting rooms",
|
|
16
|
+
// resources: ["Room A", "Room B"], // capacity = MORE RESOURCES
|
|
17
|
+
// rentals: [
|
|
18
|
+
// { name: "Meeting room, hourly", description: "…", price: 25, unit: "HOUR", min: 60, max: 480 },
|
|
19
|
+
// { name: "Meeting room, daily", description: "…", price: 180, unit: "DAY", min: 1, max: 5 },
|
|
20
|
+
// ],
|
|
21
|
+
// });
|
|
22
|
+
// // Calling the steps by hand instead? ORDER IS LOAD-BEARING (resource type → resources → service),
|
|
23
|
+
// // and each rental spec must carry `resourceTypeId` AND `resourceIds` (the ids from createResources).
|
|
24
|
+
//
|
|
25
|
+
// What a bookable rental needs, and setupRentals sets every one:
|
|
26
|
+
// 1. `appId` on the service at create time (it is immutable, so set it here rather than later).
|
|
27
|
+
// 2. Resources created before the service, and their ids listed in `serviceResources[].resourceIds`.
|
|
28
|
+
// 3. No category — a rental is surfaced by its `appId`, not by a Bookings category.
|
|
29
|
+
//
|
|
30
|
+
// Images are reused from seed-bookings.js — require both.
|
|
31
|
+
// Source recipe: wix-headless/references/inline-recipes/setup-rentals.md.
|
|
32
|
+
|
|
33
|
+
const API = "https://www.wixapis.com";
|
|
34
|
+
|
|
35
|
+
/** The Wix Rentals app — adds resource types and duration ranges on top of Bookings. */
|
|
36
|
+
const RENTALS_APP_ID = "ff5d6eb1-65e4-4f9a-8b14-64d34c12cc2e";
|
|
37
|
+
|
|
38
|
+
async function req(ctx, path, { method = "POST", body } = {}) {
|
|
39
|
+
const res = await fetch(API + path, {
|
|
40
|
+
method,
|
|
41
|
+
headers: {
|
|
42
|
+
Authorization: `Bearer ${ctx.token}`,
|
|
43
|
+
"wix-site-id": ctx.siteId,
|
|
44
|
+
"Content-Type": "application/json",
|
|
45
|
+
},
|
|
46
|
+
body: body ? JSON.stringify(body) : undefined,
|
|
47
|
+
});
|
|
48
|
+
const json = await res.json().catch(() => ({}));
|
|
49
|
+
if (!res.ok) throw new Error(`${method} ${path} -> ${res.status}: ${JSON.stringify(json).slice(0, 400)}`);
|
|
50
|
+
return json;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Install Wix Rentals. Idempotent. Rentals provisions the Bookings infrastructure it runs on, so a
|
|
55
|
+
* rental's availability comes from a Rentals-only install — Wix Bookings does not need to be added.
|
|
56
|
+
*/
|
|
57
|
+
async function installRentalsApp(ctx) {
|
|
58
|
+
try {
|
|
59
|
+
await req(ctx, "/apps-installer-service/v1/app-instance/install", {
|
|
60
|
+
body: {
|
|
61
|
+
tenant: { tenantType: "SITE", id: ctx.siteId },
|
|
62
|
+
appInstance: { appDefId: RENTALS_APP_ID, enabled: true },
|
|
63
|
+
},
|
|
64
|
+
});
|
|
65
|
+
} catch {
|
|
66
|
+
/* already installed is fine */
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* A resource TYPE — the kind of thing being rented ("Meeting rooms", "Vans", "Cameras").
|
|
72
|
+
* A rental service points at one of these; the individual rentable items live inside it.
|
|
73
|
+
* @returns {Promise<{ id: string, name: string }>}
|
|
74
|
+
*/
|
|
75
|
+
async function createResourceType(ctx, name) {
|
|
76
|
+
const res = await req(ctx, "/bookings/v2/resources/resource-types", { body: { resourceType: { name } } });
|
|
77
|
+
const type = res?.resourceType ?? {};
|
|
78
|
+
return { id: type.id ?? type._id, name: type.name ?? name };
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/** Existing resource types, so a re-run reuses one instead of making a duplicate. */
|
|
82
|
+
async function queryResourceTypes(ctx) {
|
|
83
|
+
const res = await req(ctx, "/bookings/v2/resources/resource-types/query", { body: { query: {} } });
|
|
84
|
+
return (res?.resourceTypes ?? []).map((t) => ({ id: t.id ?? t._id, name: t.name }));
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/** Get a resource type by name, creating it only if it isn't there. Additive. */
|
|
88
|
+
async function ensureResourceType(ctx, name) {
|
|
89
|
+
const existing = (await queryResourceTypes(ctx)).find((t) => t.name === name);
|
|
90
|
+
return existing ?? createResourceType(ctx, name);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* The individual rentable items inside a type — Room A, Room B, Van 1.
|
|
95
|
+
*
|
|
96
|
+
* ⚠️ PARALLEL CAPACITY COMES FROM MORE RESOURCES, not from a capacity number: two rooms that
|
|
97
|
+
* can be booked at the same time are two resources.
|
|
98
|
+
*
|
|
99
|
+
* ⚠️ Seeded 24/7 on purpose — no `workingHoursSchedules`. A resource with working hours makes a
|
|
100
|
+
* multi-day rental span several bookable windows, which Wix then models as a multi-service
|
|
101
|
+
* group booking instead of one booking. Pass `workingHours` only when the brief names opening
|
|
102
|
+
* hours and you accept that.
|
|
103
|
+
* @returns {Promise<{ id: string, name: string }[]>}
|
|
104
|
+
*/
|
|
105
|
+
async function createResources(ctx, resourceTypeId, names, { workingHours } = {}) {
|
|
106
|
+
const out = [];
|
|
107
|
+
for (const name of names) {
|
|
108
|
+
const res = await req(ctx, "/bookings/v2/resources", {
|
|
109
|
+
body: {
|
|
110
|
+
resource: {
|
|
111
|
+
name,
|
|
112
|
+
// Link the resource to its type with a top-level `typeId` (a bare GUID).
|
|
113
|
+
typeId: resourceTypeId,
|
|
114
|
+
...(workingHours ? { workingHoursSchedules: workingHours } : {}),
|
|
115
|
+
},
|
|
116
|
+
},
|
|
117
|
+
});
|
|
118
|
+
const r = res?.resource ?? {};
|
|
119
|
+
out.push({ id: r.id ?? r._id, name: r.name ?? name });
|
|
120
|
+
}
|
|
121
|
+
return out;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/** The Wix Rentals default booking form. Provisioned by the Rentals app; the id is the same on every site. */
|
|
125
|
+
const RENTALS_FORM_ID = "3a2ea2ce-91f4-4617-ab24-629933c0c31a";
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Build one rental service payload.
|
|
129
|
+
*
|
|
130
|
+
* Field values that MAKE it a rental (all required together):
|
|
131
|
+
* type: "APPOINTMENT" — rentals are always appointment-typed
|
|
132
|
+
* appId: RENTALS_APP_ID — immutable after create
|
|
133
|
+
* durationRange — replaces sessionDurations; the two are mutually exclusive
|
|
134
|
+
* serviceResources + — which resource type AND which resources supply availability
|
|
135
|
+
* primaryResourceType
|
|
136
|
+
*
|
|
137
|
+
* Hourly bounds are MINUTES (30–1440); daily bounds are DAYS (1–8). One service = one unit
|
|
138
|
+
* type: to rent the same room by the hour AND by the day, create two services.
|
|
139
|
+
* @param {object} s spec + `resourceTypeId` and `resourceIds` (the ids from createResources).
|
|
140
|
+
*/
|
|
141
|
+
function buildRental(s) {
|
|
142
|
+
const unit = s.unit === "DAY" ? "DAY" : "HOUR";
|
|
143
|
+
const durationRange =
|
|
144
|
+
unit === "DAY"
|
|
145
|
+
? { unitType: "DAY", dayOptions: { minDurationInDays: s.min ?? 1, maxDurationInDays: s.max ?? 5 } }
|
|
146
|
+
: { unitType: "HOUR", hourOptions: { minDurationInMinutes: s.min ?? 60, maxDurationInMinutes: s.max ?? 480 } };
|
|
147
|
+
|
|
148
|
+
return {
|
|
149
|
+
type: "APPOINTMENT",
|
|
150
|
+
appId: RENTALS_APP_ID,
|
|
151
|
+
name: s.name,
|
|
152
|
+
description: s.description ?? "",
|
|
153
|
+
...(s.tagLine ? { tagLine: s.tagLine } : {}),
|
|
154
|
+
hidden: false,
|
|
155
|
+
defaultCapacity: 1,
|
|
156
|
+
// Use the Wix Rentals default booking form so checkout collects contact details.
|
|
157
|
+
form: { id: RENTALS_FORM_ID },
|
|
158
|
+
// Make the rental bookable online.
|
|
159
|
+
onlineBooking: { enabled: true, requireManualApproval: false, allowMultipleRequests: false },
|
|
160
|
+
// A rental is priced as a RATE per unit of time — the number below is per hour or per day,
|
|
161
|
+
// and Wix multiplies it by the length the customer picks.
|
|
162
|
+
payment: {
|
|
163
|
+
rateType: "FIXED",
|
|
164
|
+
fixed: { price: { value: String(s.price ?? 0), currency: s.currency ?? "USD" } },
|
|
165
|
+
options: { online: true, inPerson: false },
|
|
166
|
+
},
|
|
167
|
+
schedule: { availabilityConstraints: { durationRange } },
|
|
168
|
+
// Name the resource type AND its concrete resource ids — availability comes from the listed ids.
|
|
169
|
+
serviceResources: [{ resourceType: { id: s.resourceTypeId }, resourceIds: { values: s.resourceIds ?? [] } }],
|
|
170
|
+
// The resource type as a bare GUID string, and one of the types named in serviceResources above.
|
|
171
|
+
primaryResourceType: s.resourceTypeId,
|
|
172
|
+
locations: [{ type: "BUSINESS" }],
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Create rental services. Additive — an existing service with the same name is left alone.
|
|
178
|
+
* @returns {Promise<{ id: string, name: string, unit: string, revision: string }[]>}
|
|
179
|
+
*/
|
|
180
|
+
async function createRentals(ctx, rentals) {
|
|
181
|
+
const existing = await req(ctx, "/bookings/v2/services/query", {
|
|
182
|
+
body: { query: { filter: { appId: RENTALS_APP_ID } } },
|
|
183
|
+
}).catch(() => ({ services: [] }));
|
|
184
|
+
const byName = new Map((existing.services ?? []).map((s) => [s.name, s]));
|
|
185
|
+
|
|
186
|
+
const out = [];
|
|
187
|
+
for (const spec of rentals) {
|
|
188
|
+
const already = byName.get(spec.name);
|
|
189
|
+
if (already) {
|
|
190
|
+
out.push({
|
|
191
|
+
id: already.id ?? already._id,
|
|
192
|
+
name: already.name,
|
|
193
|
+
unit: already.schedule?.availabilityConstraints?.durationRange?.unitType ?? null,
|
|
194
|
+
revision: already.revision,
|
|
195
|
+
created: false,
|
|
196
|
+
});
|
|
197
|
+
continue;
|
|
198
|
+
}
|
|
199
|
+
const res = await req(ctx, "/bookings/v2/services", { body: { service: buildRental(spec) } });
|
|
200
|
+
const svc = res?.service ?? {};
|
|
201
|
+
out.push({
|
|
202
|
+
id: svc.id ?? svc._id,
|
|
203
|
+
name: svc.name ?? spec.name,
|
|
204
|
+
unit: svc.schedule?.availabilityConstraints?.durationRange?.unitType ?? null,
|
|
205
|
+
revision: svc.revision,
|
|
206
|
+
created: true,
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
return out;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* Read the rentals back and confirm each one is actually a rental. A service created without
|
|
214
|
+
* `appId` or without `durationRange` still returns 200 — it is simply a plain Bookings service
|
|
215
|
+
* from then on, permanently, and this is the only check that catches it.
|
|
216
|
+
* @returns {Promise<{ ok: boolean, problems: string[] }>}
|
|
217
|
+
*/
|
|
218
|
+
async function verifyRentals(ctx, expectedNames) {
|
|
219
|
+
const res = await req(ctx, "/bookings/v2/services/query", {
|
|
220
|
+
body: { query: { filter: { appId: RENTALS_APP_ID } } },
|
|
221
|
+
});
|
|
222
|
+
const live = new Map((res?.services ?? []).map((s) => [s.name, s]));
|
|
223
|
+
const problems = [];
|
|
224
|
+
for (const name of expectedNames) {
|
|
225
|
+
const svc = live.get(name);
|
|
226
|
+
if (!svc) {
|
|
227
|
+
problems.push(`${name}: not returned by an appId-filtered query — it was not created as a rental`);
|
|
228
|
+
continue;
|
|
229
|
+
}
|
|
230
|
+
if (!svc.schedule?.availabilityConstraints?.durationRange) {
|
|
231
|
+
problems.push(`${name}: no durationRange — created as a plain service, and appId is immutable`);
|
|
232
|
+
}
|
|
233
|
+
if (!svc.primaryResourceType) problems.push(`${name}: no primaryResourceType — availability will be empty`);
|
|
234
|
+
if (!svc.serviceResources?.some((sr) => sr.resourceIds?.values?.length))
|
|
235
|
+
problems.push(`${name}: serviceResources carry no resourceIds — availability will be empty`);
|
|
236
|
+
}
|
|
237
|
+
return { ok: problems.length === 0, problems };
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* The whole rentals seed, in the one order that works.
|
|
242
|
+
* @param {object} ctx
|
|
243
|
+
* @param {{ resourceTypeName: string, resources: string[], rentals: object[] }} plan
|
|
244
|
+
*/
|
|
245
|
+
async function setupRentals(ctx, { resourceTypeName, resources = [], rentals = [] }) {
|
|
246
|
+
await installRentalsApp(ctx);
|
|
247
|
+
const type = await ensureResourceType(ctx, resourceTypeName);
|
|
248
|
+
const created = await createResources(ctx, type.id, resources);
|
|
249
|
+
// Every rental service must list the concrete resource ids, or its availability is empty (see buildRental).
|
|
250
|
+
const resourceIds = created.map((c) => c.id);
|
|
251
|
+
const services = await createRentals(ctx, rentals.map((r) => ({ ...r, resourceTypeId: type.id, resourceIds })));
|
|
252
|
+
const check = await verifyRentals(ctx, rentals.map((r) => r.name));
|
|
253
|
+
return { resourceType: type, resources: created, services, ...check };
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
module.exports = {
|
|
257
|
+
RENTALS_APP_ID,
|
|
258
|
+
installRentalsApp,
|
|
259
|
+
createResourceType,
|
|
260
|
+
queryResourceTypes,
|
|
261
|
+
ensureResourceType,
|
|
262
|
+
createResources,
|
|
263
|
+
buildRental,
|
|
264
|
+
createRentals,
|
|
265
|
+
verifyRentals,
|
|
266
|
+
setupRentals,
|
|
267
|
+
};
|
|
@@ -2,9 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
Unlike the other verticals, CMS ships **no UI**. A CMS is schema-driven — every collection is
|
|
4
4
|
different — so there are no meaningful "list/detail" components to hand you. You **build the UI
|
|
5
|
-
yourself** (list, detail, home
|
|
6
|
-
**utils**.
|
|
7
|
-
|
|
5
|
+
yourself** (list, detail, home) in your own framework and design tokens, calling the shipped
|
|
6
|
+
**utils**. **A visitor-fillable form is the `forms` vertical, not `cms`** — come here only when the
|
|
7
|
+
app must read the entries back (a public gallery, a listing, a member's "my submissions"); a visitor
|
|
8
|
+
cannot read Forms submissions. Everything talks to Wix directly over the public `WIX_CLIENT_ID`
|
|
9
|
+
(anonymous visitor token) using the official Wix Data endpoints — never hand-build a Wix Data URL,
|
|
10
|
+
never mock items.
|
|
8
11
|
|
|
9
12
|
## What ships (utils only)
|
|
10
13
|
|