@wix/agent-skills 1.36.0 → 1.36.1
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 +8 -3
- package/skills/wix-headless-kit/install/pins.json +1 -1
- package/skills/wix-manage/SKILL.md +3 -3
- package/skills/wix-manage/references/cms/cms-data-items-crud.md +78 -1
- package/skills/wix-manage/references/google-ads/create-performance-max-campaign.md +11 -11
- package/skills/wix-manage/references/marketing/create-and-publish-social-post.md +20 -51
- package/skills/wix-manage/references/marketing/generate-and-publish-marketing-plan.md +4 -4
- package/skills/wix-base44-connector/SKILL.md +0 -437
- package/skills/wix-base44-connector/references/CAPABILITY_MAP.md +0 -78
- package/skills/wix-base44-connector/scripts/utils.cjs +0 -466
- package/skills/wix-export/SKILL.md +0 -83
- package/skills/wix-harmony-editor/.publish-manifest.json +0 -8
- package/skills/wix-harmony-editor/COPY-SITE.md +0 -494
- package/skills/wix-harmony-editor/SKILL.md +0 -317
- package/skills/wix-harmony-editor/scripts/copy/build-description.mjs +0 -249
- package/skills/wix-harmony-editor/scripts/copy/check-description.mjs +0 -225
- package/skills/wix-harmony-editor/scripts/copy/check-mirror.mjs +0 -89
- package/skills/wix-harmony-editor/scripts/copy/compare-preview.mjs +0 -76
- package/skills/wix-harmony-editor/scripts/copy/deploy-description.mjs +0 -212
- package/skills/wix-harmony-editor/scripts/copy/desc-hash.mjs +0 -44
- package/skills/wix-harmony-editor/scripts/copy/editor-run.mjs +0 -45
- package/skills/wix-harmony-editor/scripts/copy/export-page.mjs +0 -53
- package/skills/wix-harmony-editor/scripts/copy/find-interactions.mjs +0 -76
- package/skills/wix-harmony-editor/scripts/copy/hide-scrollbars.mjs +0 -16
- package/skills/wix-harmony-editor/scripts/copy/import-media.mjs +0 -150
- package/skills/wix-harmony-editor/scripts/copy/link-url.mjs +0 -27
- package/skills/wix-harmony-editor/scripts/copy/lint-api.mjs +0 -56
- package/skills/wix-harmony-editor/scripts/copy/measure-source.mjs +0 -211
- package/skills/wix-harmony-editor/scripts/copy/merge-mirrors.mjs +0 -29
- package/skills/wix-harmony-editor/scripts/copy/mirror-site.mjs +0 -92
- package/skills/wix-harmony-editor/scripts/copy/mobile-stage.mjs +0 -56
- package/skills/wix-harmony-editor/scripts/copy/preview-widths.mjs +0 -73
- package/skills/wix-harmony-editor/scripts/copy/render-plate.mjs +0 -67
- package/skills/wix-harmony-editor/scripts/copy/serve-mirror.mjs +0 -102
- package/skills/wix-harmony-editor/scripts/copy/snapshot-capabilities.mjs +0 -40
- package/skills/wix-harmony-editor/scripts/copy/split-sections.mjs +0 -191
- package/skills/wix-harmony-editor/scripts/copy/upload-media-manager.mjs +0 -61
- package/skills/wix-harmony-editor/scripts/launch.sh +0 -359
- package/skills/wix-headless/SKILL.md +0 -151
- package/skills/wix-headless/references/AI_FEATURES.md +0 -178
- package/skills/wix-headless/references/CAPABILITIES.md +0 -117
- package/skills/wix-headless/references/CONTENT.md +0 -36
- package/skills/wix-headless/references/DESIGN.md +0 -55
- package/skills/wix-headless/references/DISCOVERY.md +0 -80
- package/skills/wix-headless/references/DOC_DISCOVERY.md +0 -43
- package/skills/wix-headless/references/FEEDBACK.md +0 -129
- package/skills/wix-headless/references/IMAGE_GENERATION.md +0 -80
- package/skills/wix-headless/references/SDK_HANDOFF.md +0 -108
- package/skills/wix-headless/references/SEED.md +0 -74
- package/skills/wix-headless/references/SETUP.md +0 -60
- package/skills/wix-headless/references/astro.md +0 -98
- package/skills/wix-headless/references/inline-recipes/experience-donations.md +0 -102
- package/skills/wix-headless/references/inline-recipes/experience-store.md +0 -49
- package/skills/wix-headless/references/inline-recipes/how-to-code-a-blog.md +0 -196
- package/skills/wix-headless/references/inline-recipes/how-to-code-a-store.md +0 -590
- package/skills/wix-headless/references/inline-recipes/how-to-code-bookings.md +0 -279
- package/skills/wix-headless/references/inline-recipes/how-to-code-cms.md +0 -163
- package/skills/wix-headless/references/inline-recipes/how-to-code-donations.md +0 -146
- package/skills/wix-headless/references/inline-recipes/how-to-code-events.md +0 -203
- package/skills/wix-headless/references/inline-recipes/how-to-code-forms.md +0 -696
- package/skills/wix-headless/references/inline-recipes/how-to-code-members-astro.md +0 -124
- package/skills/wix-headless/references/inline-recipes/how-to-code-members-custom-login.md +0 -160
- package/skills/wix-headless/references/inline-recipes/how-to-code-members-non-astro.md +0 -118
- package/skills/wix-headless/references/inline-recipes/how-to-code-portfolio.md +0 -132
- package/skills/wix-headless/references/inline-recipes/how-to-code-pricing-plans.md +0 -126
- package/skills/wix-headless/references/inline-recipes/how-to-code-rentals.md +0 -254
- package/skills/wix-headless/references/inline-recipes/how-to-code-restaurant-orders.md +0 -191
- package/skills/wix-headless/references/inline-recipes/how-to-code-restaurant-reservations.md +0 -213
- package/skills/wix-headless/references/inline-recipes/how-to-code-restaurants.md +0 -161
- package/skills/wix-headless/references/inline-recipes/setup-blog.md +0 -175
- package/skills/wix-headless/references/inline-recipes/setup-bookings.md +0 -232
- package/skills/wix-headless/references/inline-recipes/setup-cms.md +0 -200
- package/skills/wix-headless/references/inline-recipes/setup-donations.md +0 -15
- package/skills/wix-headless/references/inline-recipes/setup-events.md +0 -196
- package/skills/wix-headless/references/inline-recipes/setup-forms.md +0 -288
- package/skills/wix-headless/references/inline-recipes/setup-online-store.md +0 -214
- package/skills/wix-headless/references/inline-recipes/setup-portfolio.md +0 -155
- package/skills/wix-headless/references/inline-recipes/setup-pricing-plans.md +0 -229
- package/skills/wix-headless/references/inline-recipes/setup-rentals.md +0 -254
- package/skills/wix-headless/references/inline-recipes/setup-restaurant-experiences.md +0 -73
- package/skills/wix-headless/references/inline-recipes/setup-restaurant-orders.md +0 -197
- package/skills/wix-headless/references/inline-recipes/setup-restaurant-reservations.md +0 -136
- package/skills/wix-headless/references/inline-recipes/setup-restaurants.md +0 -152
- package/skills/wix-headless/references/managed/AUTHENTICATION.md +0 -71
- package/skills/wix-headless/references/managed/CONNECT.md +0 -74
- package/skills/wix-headless/references/managed/CREATE.md +0 -149
- package/skills/wix-headless/references/managed/DEPLOYMENT.md +0 -104
- package/skills/wix-headless/references/non-astro.md +0 -59
- package/skills/wix-headless/references/self-managed/AUTHENTICATION.md +0 -22
- package/skills/wix-headless/references/self-managed/DEPLOYMENT.md +0 -15
- package/skills/wix-headless/references/stripe/AUTHENTICATION.md +0 -55
- package/skills/wix-headless/references/stripe/DEPLOYMENT.md +0 -71
- package/skills/wix-headless/scripts/bootstrap.mjs +0 -156
- package/skills/wix-headless-replatform/.publish-manifest.json +0 -8
- package/skills/wix-headless-replatform/SKILL.md +0 -116
- package/skills/wix-headless-replatform/agents/openai.yaml +0 -6
- package/skills/wix-headless-replatform/references/control-and-visual-fidelity-contract.md +0 -43
- package/skills/wix-headless-replatform/references/extraction-schema.md +0 -187
- package/skills/wix-headless-replatform/references/interaction-runtime-contract.md +0 -137
- package/skills/wix-headless-replatform/references/layout-blueprint-contract.md +0 -41
- package/skills/wix-headless-replatform/references/output-contract.md +0 -93
- package/skills/wix-headless-replatform/references/post-build-gap-contract.md +0 -125
- package/skills/wix-headless-replatform/references/qa-checklist.md +0 -83
- package/skills/wix-headless-replatform/references/safety.md +0 -19
- package/skills/wix-headless-replatform/references/ui-normalization-contract.md +0 -70
- package/skills/wix-headless-replatform/references/workflow.md +0 -157
- package/skills/wix-headless-replatform/registry/README.md +0 -20
- package/skills/wix-headless-replatform/registry/approvals/button/shadcn-default-ac60ef5.json +0 -28
- package/skills/wix-headless-replatform/registry/items/button/shadcn-default-ac60ef5/button.tsx +0 -54
- package/skills/wix-headless-replatform/registry/items/button/shadcn-default-ac60ef5/capabilities.json +0 -60
- package/skills/wix-headless-replatform/registry/items/button/shadcn-default-ac60ef5/contract.md +0 -48
- package/skills/wix-headless-replatform/registry/licenses/shadcn-ui-ac60ef5-MIT.txt +0 -21
- package/skills/wix-headless-replatform/registry/registry.json +0 -36
- package/skills/wix-headless-replatform/resources/rp-facelift/SKILL.md +0 -32
- package/skills/wix-headless-replatform/resources/rp-project-context/SKILL.md +0 -62
- package/skills/wix-headless-replatform/resources/rp-qa-gap-loop/SKILL.md +0 -64
- package/skills/wix-headless-replatform/resources/rp-source-evidence/SKILL.md +0 -42
- package/skills/wix-headless-replatform/resources/rp-ui-implementation/SKILL.md +0 -73
- package/skills/wix-headless-replatform/schemas/build-plan.schema.json +0 -10
- package/skills/wix-headless-replatform/schemas/candidate.schema.json +0 -19
- package/skills/wix-headless-replatform/schemas/common.schema.json +0 -33
- package/skills/wix-headless-replatform/schemas/decision-patch.schema.json +0 -10
- package/skills/wix-headless-replatform/schemas/decision-request.schema.json +0 -10
- package/skills/wix-headless-replatform/schemas/extraction-gap.schema.json +0 -28
- package/skills/wix-headless-replatform/schemas/extraction-manifest.schema.json +0 -34
- package/skills/wix-headless-replatform/schemas/final-report.schema.json +0 -10
- package/skills/wix-headless-replatform/schemas/foundation.schema.json +0 -11
- package/skills/wix-headless-replatform/schemas/metadata.schema.json +0 -11
- package/skills/wix-headless-replatform/schemas/observation-packet.schema.json +0 -17
- package/skills/wix-headless-replatform/schemas/page-capture.schema.json +0 -11
- package/skills/wix-headless-replatform/schemas/page-resolution.schema.json +0 -33
- package/skills/wix-headless-replatform/schemas/shared-chrome.schema.json +0 -11
- package/skills/wix-headless-replatform/schemas/unit.schema.json +0 -40
- package/skills/wix-headless-replatform/scripts/assemble-extraction.mjs +0 -844
- package/skills/wix-headless-replatform/scripts/benchmark-extraction.mjs +0 -163
- package/skills/wix-headless-replatform/scripts/browser-extraction-preflight.mjs +0 -42
- package/skills/wix-headless-replatform/scripts/build-extracted-homepage.mjs +0 -228
- package/skills/wix-headless-replatform/scripts/clear-wix-starter.mjs +0 -87
- package/skills/wix-headless-replatform/scripts/create-wix-project.mjs +0 -505
- package/skills/wix-headless-replatform/scripts/discover-urls.mjs +0 -142
- package/skills/wix-headless-replatform/scripts/extract-assets.mjs +0 -140
- package/skills/wix-headless-replatform/scripts/extract-design-system.mjs +0 -637
- package/skills/wix-headless-replatform/scripts/extract-interactions.mjs +0 -1903
- package/skills/wix-headless-replatform/scripts/extract-page.mjs +0 -2461
- package/skills/wix-headless-replatform/scripts/extract-seo.mjs +0 -25
- package/skills/wix-headless-replatform/scripts/extract-tokens.mjs +0 -63
- package/skills/wix-headless-replatform/scripts/finalize-extraction-report.mjs +0 -126
- package/skills/wix-headless-replatform/scripts/finalize-gap-review.mjs +0 -180
- package/skills/wix-headless-replatform/scripts/finalize-gap-review.test.mjs +0 -98
- package/skills/wix-headless-replatform/scripts/finalize-migration-website.mjs +0 -103
- package/skills/wix-headless-replatform/scripts/generate-control-state-contract.mjs +0 -176
- package/skills/wix-headless-replatform/scripts/generate-design-md.mjs +0 -261
- package/skills/wix-headless-replatform/scripts/generate-extraction-validators.mjs +0 -25
- package/skills/wix-headless-replatform/scripts/generate-invoice-download-backend.mjs +0 -342
- package/skills/wix-headless-replatform/scripts/generate-layout-blueprint.mjs +0 -140
- package/skills/wix-headless-replatform/scripts/generate-repeater-cms.mjs +0 -22
- package/skills/wix-headless-replatform/scripts/generate-route-plan.mjs +0 -143
- package/skills/wix-headless-replatform/scripts/generate-scene-contract.mjs +0 -288
- package/skills/wix-headless-replatform/scripts/generate-ui-normalization.mjs +0 -266
- package/skills/wix-headless-replatform/scripts/generate-visual-assets.mjs +0 -111
- package/skills/wix-headless-replatform/scripts/lib/browser-tooling.mjs +0 -570
- package/skills/wix-headless-replatform/scripts/lib/common.mjs +0 -329
- package/skills/wix-headless-replatform/scripts/lib/component-capabilities.mjs +0 -121
- package/skills/wix-headless-replatform/scripts/lib/component-registry.mjs +0 -282
- package/skills/wix-headless-replatform/scripts/lib/content-boundary.mjs +0 -61
- package/skills/wix-headless-replatform/scripts/lib/extraction-contract.mjs +0 -374
- package/skills/wix-headless-replatform/scripts/lib/extraction-detectors.mjs +0 -243
- package/skills/wix-headless-replatform/scripts/lib/extraction-validators.generated.mjs +0 -1139
- package/skills/wix-headless-replatform/scripts/lib/font-contract.mjs +0 -326
- package/skills/wix-headless-replatform/scripts/lib/frontend-automation-state.mjs +0 -184
- package/skills/wix-headless-replatform/scripts/lib/gap-analysis.mjs +0 -396
- package/skills/wix-headless-replatform/scripts/lib/html-extract.mjs +0 -168
- package/skills/wix-headless-replatform/scripts/lib/interaction-bootstrap.mjs +0 -10
- package/skills/wix-headless-replatform/scripts/lib/interaction-runtime.mjs +0 -194
- package/skills/wix-headless-replatform/scripts/lib/interaction-timeline.mjs +0 -348
- package/skills/wix-headless-replatform/scripts/lib/layout-blueprint/classifiers.mjs +0 -141
- package/skills/wix-headless-replatform/scripts/lib/layout-blueprint/geometry.mjs +0 -43
- package/skills/wix-headless-replatform/scripts/lib/layout-blueprint/vocabulary.mjs +0 -18
- package/skills/wix-headless-replatform/scripts/lib/ui-normalization.css +0 -64
- package/skills/wix-headless-replatform/scripts/optimize-svg.mjs +0 -31
- package/skills/wix-headless-replatform/scripts/post-build-gap.mjs +0 -358
- package/skills/wix-headless-replatform/scripts/provision-repeater-cms.mjs +0 -25
- package/skills/wix-headless-replatform/scripts/record-gap-decision.mjs +0 -39
- package/skills/wix-headless-replatform/scripts/replay-extraction.mjs +0 -107
- package/skills/wix-headless-replatform/scripts/resolve-home-page.mjs +0 -96
- package/skills/wix-headless-replatform/scripts/site-clone.mjs +0 -658
- package/skills/wix-headless-replatform/scripts/validate-font-contract.mjs +0 -29
- package/skills/wix-headless-replatform/scripts/verify-interactions.mjs +0 -669
- package/skills/wix-headless-replatform/scripts/visual-qa.mjs +0 -370
- package/skills/wix-import/SKILL.md +0 -90
- package/skills/wix-replatform/.publish-manifest.json +0 -8
- package/skills/wix-replatform/CLI.md +0 -162
- package/skills/wix-replatform/README.md +0 -52
- package/skills/wix-replatform/SKILL.md +0 -238
- package/skills/wix-replatform/console/account.css +0 -1
- package/skills/wix-replatform/console/app.css +0 -1
- package/skills/wix-replatform/console/app.js +0 -117
- package/skills/wix-replatform/console/index.html +0 -4
- package/skills/wix-replatform/console/json.css +0 -11
- package/skills/wix-replatform/lib/agent-adapters/index.js +0 -71
- package/skills/wix-replatform/lib/app-page-routing.js +0 -75
- package/skills/wix-replatform/lib/artifact-freshness.js +0 -225
- package/skills/wix-replatform/lib/blocked-data-requests.js +0 -427
- package/skills/wix-replatform/lib/census-reconciliation.js +0 -426
- package/skills/wix-replatform/lib/completion-report.js +0 -1580
- package/skills/wix-replatform/lib/config-env.js +0 -133
- package/skills/wix-replatform/lib/confirmed-pictures.js +0 -212
- package/skills/wix-replatform/lib/dependency-readiness.js +0 -423
- package/skills/wix-replatform/lib/dependency-recovery.js +0 -21
- package/skills/wix-replatform/lib/destination-choice.js +0 -163
- package/skills/wix-replatform/lib/destination-handoff.js +0 -62
- package/skills/wix-replatform/lib/destination-http.js +0 -81
- package/skills/wix-replatform/lib/destination-route.js +0 -98
- package/skills/wix-replatform/lib/destination.js +0 -919
- package/skills/wix-replatform/lib/discovered-census.js +0 -231
- package/skills/wix-replatform/lib/discovered-set-status.js +0 -255
- package/skills/wix-replatform/lib/document-url-guard.js +0 -203
- package/skills/wix-replatform/lib/entity-qa-attestation.js +0 -339
- package/skills/wix-replatform/lib/entity-verification.js +0 -18
- package/skills/wix-replatform/lib/execution-capability.js +0 -120
- package/skills/wix-replatform/lib/execution-log.js +0 -170
- package/skills/wix-replatform/lib/execution-manifest.js +0 -203
- package/skills/wix-replatform/lib/execution-state.js +0 -195
- package/skills/wix-replatform/lib/expectations-ledger.js +0 -96
- package/skills/wix-replatform/lib/generated-plugin-handoff.js +0 -140
- package/skills/wix-replatform/lib/import-readiness-contract.js +0 -23
- package/skills/wix-replatform/lib/import-recovery.js +0 -1107
- package/skills/wix-replatform/lib/imported-redirect-targets.js +0 -608
- package/skills/wix-replatform/lib/internal-link-reconciliation.js +0 -166
- package/skills/wix-replatform/lib/link-audit.js +0 -173
- package/skills/wix-replatform/lib/link-census.js +0 -194
- package/skills/wix-replatform/lib/link-plan.js +0 -148
- package/skills/wix-replatform/lib/link-verification.js +0 -274
- package/skills/wix-replatform/lib/link-write-journal.js +0 -42
- package/skills/wix-replatform/lib/local-state.js +0 -1481
- package/skills/wix-replatform/lib/member-completion.js +0 -658
- package/skills/wix-replatform/lib/member-crosswalk.js +0 -69
- package/skills/wix-replatform/lib/member-outcome-registry.js +0 -265
- package/skills/wix-replatform/lib/migration-completion.js +0 -311
- package/skills/wix-replatform/lib/operator-identity.js +0 -47
- package/skills/wix-replatform/lib/orchestration-decisions.js +0 -248
- package/skills/wix-replatform/lib/orchestration-preflight.js +0 -525
- package/skills/wix-replatform/lib/orchestration-router.js +0 -698
- package/skills/wix-replatform/lib/orchestration-state.js +0 -631
- package/skills/wix-replatform/lib/order-reference-readiness.js +0 -30
- package/skills/wix-replatform/lib/payments-outcome-registry.js +0 -200
- package/skills/wix-replatform/lib/plugin-cms-fallback.js +0 -618
- package/skills/wix-replatform/lib/preservation-approval-stamp.js +0 -54
- package/skills/wix-replatform/lib/product-media-deferral.js +0 -96
- package/skills/wix-replatform/lib/progress-log.js +0 -240
- package/skills/wix-replatform/lib/progress-log.sh +0 -140
- package/skills/wix-replatform/lib/read-back-approval.js +0 -184
- package/skills/wix-replatform/lib/read-back-comparison.js +0 -136
- package/skills/wix-replatform/lib/read-back-contract.js +0 -243
- package/skills/wix-replatform/lib/read-back-extract.js +0 -118
- package/skills/wix-replatform/lib/read-back-gate.js +0 -734
- package/skills/wix-replatform/lib/read-back-reads.js +0 -94
- package/skills/wix-replatform/lib/read-back-state.js +0 -107
- package/skills/wix-replatform/lib/read-back-summary.js +0 -81
- package/skills/wix-replatform/lib/rerun-conflicts.js +0 -334
- package/skills/wix-replatform/lib/run-controller.js +0 -401
- package/skills/wix-replatform/lib/seo-outcome-registry.js +0 -45
- package/skills/wix-replatform/lib/setup-verification.js +0 -148
- package/skills/wix-replatform/lib/source-access.js +0 -231
- package/skills/wix-replatform/lib/source-coverage.js +0 -1130
- package/skills/wix-replatform/lib/source-secrets.js +0 -277
- package/skills/wix-replatform/lib/structured-link-patch.js +0 -59
- package/skills/wix-replatform/lib/task-state.js +0 -110
- package/skills/wix-replatform/lib/url-preservation-report.js +0 -319
- package/skills/wix-replatform/lib/url-preservation-state.js +0 -739
- package/skills/wix-replatform/lib/url-redirect-plan.js +0 -728
- package/skills/wix-replatform/lib/url-verification.js +0 -315
- package/skills/wix-replatform/lib/user-action-effects.js +0 -42
- package/skills/wix-replatform/lib/user-actions.js +0 -264
- package/skills/wix-replatform/lib/website-handoff.js +0 -1220
- package/skills/wix-replatform/lib/wix-client-callers.js +0 -54
- package/skills/wix-replatform/lib/wix-dashboard-url.js +0 -35
- package/skills/wix-replatform/lib/write-verification-state.js +0 -92
- package/skills/wix-replatform/lib/write-verification.js +0 -274
- package/skills/wix-replatform/resources/rp-destination/SKILL.md +0 -137
- package/skills/wix-replatform/resources/rp-discovery/SKILL.md +0 -357
- package/skills/wix-replatform/resources/rp-discovery/scripts/promote-source-coverage.js +0 -47
- package/skills/wix-replatform/resources/rp-execute-import/SKILL.md +0 -1369
- package/skills/wix-replatform/resources/rp-execute-import/scripts/shipping-estimate-audit.js +0 -70
- package/skills/wix-replatform/resources/rp-execute-setup/SKILL.md +0 -482
- package/skills/wix-replatform/resources/rp-execute-setup/scripts/execute-setup.js +0 -442
- package/skills/wix-replatform/resources/rp-execute-setup/scripts/mint-token.sh +0 -64
- package/skills/wix-replatform/resources/rp-execution-policy/SKILL.md +0 -112
- package/skills/wix-replatform/resources/rp-execution-policy/lib/coupon-currency-plan-report.js +0 -143
- package/skills/wix-replatform/resources/rp-execution-policy/lib/payments-report.js +0 -244
- package/skills/wix-replatform/resources/rp-import-codegen/SKILL.md +0 -3158
- package/skills/wix-replatform/resources/rp-mapper/SKILL.md +0 -947
- package/skills/wix-replatform/resources/rp-mapper/lib/mapping-resolve.js +0 -217
- package/skills/wix-replatform/resources/rp-mapper/lib/structure-bridge-planning.js +0 -303
- package/skills/wix-replatform/resources/rp-mapper/scripts/coverage-reconcile.js +0 -88
- package/skills/wix-replatform/resources/rp-mapper/scripts/resolve-mapping.js +0 -148
- package/skills/wix-replatform/resources/rp-mapper/wix-business-solutions-taxonomy.md +0 -378
- package/skills/wix-replatform/resources/rp-preflight/SKILL.md +0 -40
- package/skills/wix-replatform/resources/rp-project-intake/SKILL.md +0 -55
- package/skills/wix-replatform/resources/rp-quick-runtime/SKILL.md +0 -60
- package/skills/wix-replatform/resources/rp-quick-runtime/lib/import-progress.js +0 -89
- package/skills/wix-replatform/resources/rp-quick-runtime/lib/limit-recovery.js +0 -36
- package/skills/wix-replatform/resources/rp-quick-shopify/SKILL.md +0 -123
- package/skills/wix-replatform/resources/rp-quick-shopify/quick-mode.json +0 -124
- package/skills/wix-replatform/resources/rp-quick-shopify/scripts/quick-mode.js +0 -522
- package/skills/wix-replatform/resources/rp-quick-woocommerce/SKILL.md +0 -56
- package/skills/wix-replatform/resources/rp-quick-woocommerce/quick-mode.json +0 -91
- package/skills/wix-replatform/resources/rp-quick-woocommerce/scripts/quick-mode.js +0 -255
- package/skills/wix-replatform/resources/rp-setup-discovery/SKILL.md +0 -253
- package/skills/wix-replatform/resources/rp-setup-discovery/scripts/quick-setup-plan.js +0 -44
- package/skills/wix-replatform/resources/rp-source-csv/SKILL.md +0 -481
- package/skills/wix-replatform/resources/rp-source-csv/lib/canonical-record.js +0 -136
- package/skills/wix-replatform/resources/rp-source-csv/lib/csv-fileset.js +0 -0
- package/skills/wix-replatform/resources/rp-source-csv/lib/csv-fingerprint.js +0 -310
- package/skills/wix-replatform/resources/rp-source-csv/lib/csv-layout.js +0 -1081
- package/skills/wix-replatform/resources/rp-source-csv/lib/csv-parse.js +0 -618
- package/skills/wix-replatform/resources/rp-source-csv/scripts/csv-discovery.js +0 -969
- package/skills/wix-replatform/resources/rp-source-csv/source-schema.example.json +0 -196
- package/skills/wix-replatform/resources/rp-source-csv/vendors/bigcommerce.json +0 -66
- package/skills/wix-replatform/resources/rp-source-csv/vendors/magento.json +0 -60
- package/skills/wix-replatform/resources/rp-source-csv/vendors/shopify.json +0 -95
- package/skills/wix-replatform/resources/rp-source-csv/vendors/woocommerce.json +0 -82
- package/skills/wix-replatform/resources/rp-source-inputs/SKILL.md +0 -66
- package/skills/wix-replatform/resources/rp-source-sfcc/SKILL.md +0 -153
- package/skills/wix-replatform/resources/rp-source-shopify/SKILL.md +0 -394
- package/skills/wix-replatform/resources/rp-source-shopify/lib/discovery-reads.js +0 -200
- package/skills/wix-replatform/resources/rp-source-shopify/lib/import-findings.js +0 -34
- package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-bulk-sqlite-worker.js +0 -44
- package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-bulk.js +0 -1470
- package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-cli.js +0 -446
- package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-gift-cards.js +0 -474
- package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-protected-fields.js +0 -879
- package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-session.js +0 -426
- package/skills/wix-replatform/resources/rp-source-shopify/queries/articles.graphql +0 -24
- package/skills/wix-replatform/resources/rp-source-shopify/queries/blogs.graphql +0 -18
- package/skills/wix-replatform/resources/rp-source-shopify/queries/collections.graphql +0 -40
- package/skills/wix-replatform/resources/rp-source-shopify/queries/customers.graphql +0 -76
- package/skills/wix-replatform/resources/rp-source-shopify/queries/delivery-profiles.graphql +0 -51
- package/skills/wix-replatform/resources/rp-source-shopify/queries/discounts.graphql +0 -35
- package/skills/wix-replatform/resources/rp-source-shopify/queries/files.graphql +0 -20
- package/skills/wix-replatform/resources/rp-source-shopify/queries/gift-cards.graphql +0 -18
- package/skills/wix-replatform/resources/rp-source-shopify/queries/inventory.graphql +0 -31
- package/skills/wix-replatform/resources/rp-source-shopify/queries/locations.graphql +0 -21
- package/skills/wix-replatform/resources/rp-source-shopify/queries/menus.graphql +0 -21
- package/skills/wix-replatform/resources/rp-source-shopify/queries/metaobjects.graphql +0 -30
- package/skills/wix-replatform/resources/rp-source-shopify/queries/orders-core.graphql +0 -150
- package/skills/wix-replatform/resources/rp-source-shopify/queries/orders-fulfillments.graphql +0 -36
- package/skills/wix-replatform/resources/rp-source-shopify/queries/orders-refunds.graphql +0 -48
- package/skills/wix-replatform/resources/rp-source-shopify/queries/pages.graphql +0 -20
- package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-customers-address.graphql +0 -8
- package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-customers-email.graphql +0 -6
- package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-customers-name.graphql +0 -8
- package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-customers-phone.graphql +0 -8
- package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-orders-address.graphql +0 -12
- package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-orders-email.graphql +0 -6
- package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-orders-name.graphql +0 -13
- package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-orders-phone.graphql +0 -13
- package/skills/wix-replatform/resources/rp-source-shopify/queries/products.graphql +0 -73
- package/skills/wix-replatform/resources/rp-source-shopify/queries/url-redirects.graphql +0 -13
- package/skills/wix-replatform/resources/rp-source-shopify/scripts/shopify-discovery.js +0 -693
- package/skills/wix-replatform/resources/rp-source-shopify/scripts/shopify-extract.js +0 -283
- package/skills/wix-replatform/resources/rp-source-shopify/scripts/shopify-gift-card-remedy.js +0 -191
- package/skills/wix-replatform/resources/rp-source-shopify/scripts/shopify-session-check.js +0 -115
- package/skills/wix-replatform/resources/rp-source-shopify/source-schema.example.json +0 -201
- package/skills/wix-replatform/resources/rp-source-wordpress/PLUGIN-READ-PLANS.md +0 -146
- package/skills/wix-replatform/resources/rp-source-wordpress/SKILL.md +0 -970
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/blocked-data-handlers.js +0 -73
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/checkout-field-csv-parser.js +0 -115
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/checkout-field-csv-parser.test-fixture.js +0 -91
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/coupon-discovery.js +0 -440
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/currency-gate.js +0 -125
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/gateway-source-keys.js +0 -252
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/gateway-source-keys.json +0 -183
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/gateway-summary.mjs +0 -333
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/invoice-discovery.js +0 -426
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/plugin-disposition.js +0 -400
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/plugin-entity-read-plan.js +0 -633
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/plugin-knowledge.js +0 -1127
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/refund-corroboration.js +0 -194
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/refund-corroboration.json +0 -100
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/sampled-ids-batch.js +0 -157
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/secret-value-guard.js +0 -234
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/store-currency.js +0 -101
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/structure-bridge-reader.js +0 -755
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/wix-wp-plugin-v2-client.js +0 -1074
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/wix-wp-plugin-v2-client.test-fixture.js +0 -149
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/woo-inventory.js +0 -25
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-http.js +0 -444
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-image-url.js +0 -186
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-plugin-detect.js +0 -1422
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-redirect-sources.js +0 -343
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-route-classifier.js +0 -680
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/yoast-product-seo-evidence.js +0 -272
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/README.md +0 -373
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/advanced-custom-fields.json +0 -101
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/back-in-stock-notifier-for-woocommerce.json +0 -81
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/capabilities-pending-decision.json +0 -128
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/cms-fallback-eligible.json +0 -18
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/contact-form-7.json +0 -104
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/facebook-for-woocommerce.json +0 -44
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/fingerprint-aliases.json +0 -49
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/free-gifts-for-woocommerce.json +0 -94
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/index.json +0 -863
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/mailpoet.json +0 -52
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/membership-for-woocommerce.json +0 -161
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/mwb-bookings-for-woocommerce.json +0 -180
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/no-migration-needed.json +0 -286
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/pricing-deals-for-woocommerce.json +0 -79
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/product-extras-for-woocommerce.json +0 -120
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/pw-woocommerce-gift-cards.json +0 -128
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/requires-development.json +0 -88
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/seo-by-rank-math.json +0 -80
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/seriously-simple-podcasting.json +0 -46
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/strong-testimonials.json +0 -55
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/subscriptions-for-woocommerce.json +0 -99
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/tablepress.json +0 -55
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/the-events-calendar.json +0 -160
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/ti-woocommerce-wishlist.json +0 -81
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woo-checkout-field-editor-pro.json +0 -60
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woo-discount-rules.json +0 -74
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woo-product-bundle.json +0 -75
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-gift-cards.json +0 -60
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-other-payment-gateway.json +0 -44
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-pdf-invoices-packing-slips.json +0 -57
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-product-addon.json +0 -141
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-progressive-discounts.json +0 -54
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/wordpress-seo.json +0 -158
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/wpc-composite-products.json +0 -97
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/wpforms-lite.json +0 -86
- package/skills/wix-replatform/resources/rp-source-wordpress/scripts/capture-store-settings.js +0 -90
- package/skills/wix-replatform/resources/rp-source-wordpress/scripts/plugin-knowledge-validate.js +0 -51
- package/skills/wix-replatform/resources/rp-source-wordpress/scripts/plugin-knowledge.js +0 -103
- package/skills/wix-replatform/resources/rp-source-wordpress/scripts/wp-discovery.js +0 -2409
- package/skills/wix-replatform/resources/rp-source-wordpress/scripts/wp-plugin-inventory.js +0 -273
- package/skills/wix-replatform/resources/rp-source-wordpress/secret-value-patterns.v1.json +0 -11
- package/skills/wix-replatform/resources/rp-source-wordpress/source-schema.example.json +0 -71
- package/skills/wix-replatform/resources/rp-source-wordpress/sub-parts.json +0 -13
- package/skills/wix-replatform/resources/rp-target-wix/SKILL.md +0 -1046
- package/skills/wix-replatform/resources/rp-target-wix/app-page-routing-capabilities.json +0 -36
- package/skills/wix-replatform/resources/rp-target-wix/domains/README.md +0 -57
- package/skills/wix-replatform/resources/rp-target-wix/domains/SERVICE-PLUGINS.md +0 -322
- package/skills/wix-replatform/resources/rp-target-wix/domains/blog/docs-survey.json +0 -70
- package/skills/wix-replatform/resources/rp-target-wix/domains/blog/domain.json +0 -29
- package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/category.json +0 -71
- package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/comment.json +0 -83
- package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/post.json +0 -95
- package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/tag.json +0 -66
- package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/docs-survey.json +0 -332
- package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/domain.json +0 -75
- package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/entities/booking.json +0 -181
- package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/entities/service-add-on.json +0 -130
- package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/entities/service.json +0 -180
- package/skills/wix-replatform/resources/rp-target-wix/domains/cms/docs-survey.json +0 -161
- package/skills/wix-replatform/resources/rp-target-wix/domains/cms/domain.json +0 -25
- package/skills/wix-replatform/resources/rp-target-wix/domains/cms/entities/collection.json +0 -67
- package/skills/wix-replatform/resources/rp-target-wix/domains/cms/entities/data-item.json +0 -75
- package/skills/wix-replatform/resources/rp-target-wix/domains/cms/entities/reference.json +0 -41
- package/skills/wix-replatform/resources/rp-target-wix/domains/crm/docs-survey.json +0 -204
- package/skills/wix-replatform/resources/rp-target-wix/domains/crm/domain.json +0 -27
- package/skills/wix-replatform/resources/rp-target-wix/domains/crm/entities/contact.json +0 -275
- package/skills/wix-replatform/resources/rp-target-wix/domains/crm/entities/email-subscription.json +0 -105
- package/skills/wix-replatform/resources/rp-target-wix/domains/crm/entities/label.json +0 -77
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/docs-survey.json +0 -297
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/domain.json +0 -44
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/delivery-profile.json +0 -171
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/discount-rule.json +0 -182
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-applied-discount.json +0 -129
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-invoice-document.json +0 -192
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-line-item-options.json +0 -123
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-line-item.json +0 -85
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-merchant-note.json +0 -112
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-payment.json +0 -191
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-refund.json +0 -164
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order.json +0 -462
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/pickup-location.json +0 -122
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/shipping-option.json +0 -98
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/wishlist-item.json +0 -86
- package/skills/wix-replatform/resources/rp-target-wix/domains/events/docs-survey.json +0 -128
- package/skills/wix-replatform/resources/rp-target-wix/domains/events/domain.json +0 -38
- package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/category.json +0 -73
- package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/event.json +0 -107
- package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/registration-form.json +0 -89
- package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/rsvp.json +0 -118
- package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/ticket-definition.json +0 -93
- package/skills/wix-replatform/resources/rp-target-wix/domains/forms/docs-survey.json +0 -86
- package/skills/wix-replatform/resources/rp-target-wix/domains/forms/domain.json +0 -56
- package/skills/wix-replatform/resources/rp-target-wix/domains/forms/entities/form-submission.json +0 -121
- package/skills/wix-replatform/resources/rp-target-wix/domains/forms/entities/form.json +0 -134
- package/skills/wix-replatform/resources/rp-target-wix/domains/gift-cards/docs-survey.json +0 -41
- package/skills/wix-replatform/resources/rp-target-wix/domains/gift-cards/domain.json +0 -50
- package/skills/wix-replatform/resources/rp-target-wix/domains/gift-cards/entities/gift-card-product.json +0 -87
- package/skills/wix-replatform/resources/rp-target-wix/domains/gift-cards/entities/gift-card.json +0 -130
- package/skills/wix-replatform/resources/rp-target-wix/domains/index.json +0 -1418
- package/skills/wix-replatform/resources/rp-target-wix/domains/media/docs-survey.json +0 -41
- package/skills/wix-replatform/resources/rp-target-wix/domains/media/domain.json +0 -24
- package/skills/wix-replatform/resources/rp-target-wix/domains/media/entities/media-file.json +0 -75
- package/skills/wix-replatform/resources/rp-target-wix/domains/media/entities/media-folder.json +0 -71
- package/skills/wix-replatform/resources/rp-target-wix/domains/members/docs-survey.json +0 -119
- package/skills/wix-replatform/resources/rp-target-wix/domains/members/domain.json +0 -23
- package/skills/wix-replatform/resources/rp-target-wix/domains/members/entities/badge.json +0 -71
- package/skills/wix-replatform/resources/rp-target-wix/domains/members/entities/custom-field.json +0 -82
- package/skills/wix-replatform/resources/rp-target-wix/domains/members/entities/member-about.json +0 -77
- package/skills/wix-replatform/resources/rp-target-wix/domains/members/entities/member.json +0 -205
- package/skills/wix-replatform/resources/rp-target-wix/domains/pricing-plans/docs-survey.json +0 -41
- package/skills/wix-replatform/resources/rp-target-wix/domains/pricing-plans/domain.json +0 -46
- package/skills/wix-replatform/resources/rp-target-wix/domains/pricing-plans/entities/plan-order.json +0 -137
- package/skills/wix-replatform/resources/rp-target-wix/domains/pricing-plans/entities/plan.json +0 -133
- package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/docs-survey.json +0 -7
- package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/domain.json +0 -36
- package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/amazon-shop-connect.json +0 -71
- package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/ebay-shop-connect.json +0 -67
- package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/google-youtube-connect.json +0 -72
- package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/meta-catalog-connect.json +0 -74
- package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/pinterest-catalog-connect.json +0 -69
- package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/tiktok-catalog-connect.json +0 -61
- package/skills/wix-replatform/resources/rp-target-wix/domains/schema.json +0 -111
- package/skills/wix-replatform/resources/rp-target-wix/domains/seo/docs-survey.json +0 -109
- package/skills/wix-replatform/resources/rp-target-wix/domains/seo/domain.json +0 -73
- package/skills/wix-replatform/resources/rp-target-wix/domains/seo/entities/item-seo-tags.json +0 -148
- package/skills/wix-replatform/resources/rp-target-wix/domains/seo/entities/seo-pattern.json +0 -91
- package/skills/wix-replatform/resources/rp-target-wix/domains/seo/entities/site-seo-tags.json +0 -79
- package/skills/wix-replatform/resources/rp-target-wix/domains/site/docs-survey.json +0 -32
- package/skills/wix-replatform/resources/rp-target-wix/domains/site/domain.json +0 -49
- package/skills/wix-replatform/resources/rp-target-wix/domains/site/entities/business-contact.json +0 -103
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/docs-survey.json +0 -203
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/domain.json +0 -42
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/back-in-stock-request.json +0 -119
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/brand.json +0 -111
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/category.json +0 -81
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/coupon.json +0 -241
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/inventory-item.json +0 -118
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/product-customization.json +0 -111
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/product-tag.json +0 -79
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/product.json +0 -221
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/promotion.json +0 -84
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/review.json +0 -178
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/subscription-product.json +0 -87
- package/skills/wix-replatform/resources/rp-target-wix/domains/tax/docs-survey.json +0 -106
- package/skills/wix-replatform/resources/rp-target-wix/domains/tax/domain.json +0 -64
- package/skills/wix-replatform/resources/rp-target-wix/domains/tax/entities/manual-tax-mapping.json +0 -119
- package/skills/wix-replatform/resources/rp-target-wix/domains/tax/entities/tax-group.json +0 -94
- package/skills/wix-replatform/resources/rp-target-wix/domains/tax/entities/tax-region.json +0 -113
- package/skills/wix-replatform/resources/rp-target-wix/domains/tax/entities/tax-settings.json +0 -65
- package/skills/wix-replatform/resources/rp-target-wix/lib/audit-summary.js +0 -64
- package/skills/wix-replatform/resources/rp-target-wix/lib/blog-author-attribution.js +0 -165
- package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-client.js +0 -60
- package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-duplicates.js +0 -201
- package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-ledger.js +0 -306
- package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-report.js +0 -229
- package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-stage.js +0 -55
- package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build.js +0 -715
- package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-media.js +0 -567
- package/skills/wix-replatform/resources/rp-target-wix/lib/bulk-results.js +0 -73
- package/skills/wix-replatform/resources/rp-target-wix/lib/contact-extended-fields.js +0 -194
- package/skills/wix-replatform/resources/rp-target-wix/lib/contact-import.js +0 -133
- package/skills/wix-replatform/resources/rp-target-wix/lib/contract-ledger.js +0 -150
- package/skills/wix-replatform/resources/rp-target-wix/lib/coupon-redemption-drift.js +0 -491
- package/skills/wix-replatform/resources/rp-target-wix/lib/customer-member.js +0 -104
- package/skills/wix-replatform/resources/rp-target-wix/lib/data-extension-schema.js +0 -673
- package/skills/wix-replatform/resources/rp-target-wix/lib/domain-knowledge.js +0 -835
- package/skills/wix-replatform/resources/rp-target-wix/lib/gift-card-balance-reconciliation.js +0 -119
- package/skills/wix-replatform/resources/rp-target-wix/lib/gift-card-build.js +0 -566
- package/skills/wix-replatform/resources/rp-target-wix/lib/gift-card-redemption-build.js +0 -249
- package/skills/wix-replatform/resources/rp-target-wix/lib/ndjson.js +0 -260
- package/skills/wix-replatform/resources/rp-target-wix/lib/order-applied-discount-build.js +0 -63
- package/skills/wix-replatform/resources/rp-target-wix/lib/order-buyer.js +0 -187
- package/skills/wix-replatform/resources/rp-target-wix/lib/order-channel-build.js +0 -64
- package/skills/wix-replatform/resources/rp-target-wix/lib/order-history.js +0 -1027
- package/skills/wix-replatform/resources/rp-target-wix/lib/order-invoice-contract.js +0 -90
- package/skills/wix-replatform/resources/rp-target-wix/lib/order-payment-mapping.js +0 -420
- package/skills/wix-replatform/resources/rp-target-wix/lib/pricing-plan-definition.js +0 -177
- package/skills/wix-replatform/resources/rp-target-wix/lib/product-import.js +0 -151
- package/skills/wix-replatform/resources/rp-target-wix/lib/product-seo.js +0 -723
- package/skills/wix-replatform/resources/rp-target-wix/lib/seo-redirects.js +0 -353
- package/skills/wix-replatform/resources/rp-target-wix/lib/shipping-build.js +0 -1437
- package/skills/wix-replatform/resources/rp-target-wix/lib/shipping-option-stage.js +0 -354
- package/skills/wix-replatform/resources/rp-target-wix/lib/store-config-build.js +0 -134
- package/skills/wix-replatform/resources/rp-target-wix/lib/stores-category-attach.js +0 -221
- package/skills/wix-replatform/resources/rp-target-wix/lib/stores-inventory.js +0 -248
- package/skills/wix-replatform/resources/rp-target-wix/lib/stores-verification.js +0 -321
- package/skills/wix-replatform/resources/rp-target-wix/lib/tax-build.js +0 -231
- package/skills/wix-replatform/resources/rp-target-wix/lib/url-mapper-transport.js +0 -28
- package/skills/wix-replatform/resources/rp-target-wix/lib/value-utils.js +0 -14
- package/skills/wix-replatform/resources/rp-target-wix/lib/variant-correlation.js +0 -34
- package/skills/wix-replatform/resources/rp-target-wix/lib/wix-build.js +0 -388
- package/skills/wix-replatform/resources/rp-target-wix/lib/wix-target-spec.js +0 -255
- package/skills/wix-replatform/resources/rp-target-wix/lib/wix-writers.js +0 -6041
- package/skills/wix-replatform/resources/rp-target-wix/lib/write-verification.js +0 -3
- package/skills/wix-replatform/resources/rp-target-wix/scripts/docs-survey-sync.js +0 -150
- package/skills/wix-replatform/resources/rp-target-wix/scripts/domain-knowledge-validate.js +0 -69
- package/skills/wix-replatform/resources/rp-target-wix/scripts/domain-knowledge.js +0 -100
- package/skills/wix-replatform/resources/rp-target-wix/scripts/verify-stores.js +0 -112
- package/skills/wix-replatform/resources/rp-telemetry/SKILL.md +0 -484
- package/skills/wix-replatform/resources/rp-telemetry/lib/bi-sink.js +0 -318
- package/skills/wix-replatform/resources/rp-telemetry/lib/telemetry-recorder.js +0 -2831
- package/skills/wix-replatform/resources/rp-telemetry/lib/transcript-digest.js +0 -318
- package/skills/wix-replatform/resources/rp-telemetry/scripts/meter-from-audit.js +0 -83
- package/skills/wix-replatform/resources/rp-telemetry/scripts/rp-telemetry.js +0 -243
- package/skills/wix-replatform/resources/rp-website-continuation/SKILL.md +0 -94
- package/skills/wix-replatform/scripts/artifact-freshness.js +0 -76
- package/skills/wix-replatform/scripts/census-reconciliation.js +0 -25
- package/skills/wix-replatform/scripts/cms-fallback.js +0 -89
- package/skills/wix-replatform/scripts/discovered-census.js +0 -26
- package/skills/wix-replatform/scripts/discovered-set-status.js +0 -33
- package/skills/wix-replatform/scripts/entity-qa-attestation.js +0 -130
- package/skills/wix-replatform/scripts/execution-health-check.js +0 -415
- package/skills/wix-replatform/scripts/execution-manifest-validate.js +0 -43
- package/skills/wix-replatform/scripts/execution-state-prepare.js +0 -128
- package/skills/wix-replatform/scripts/expectations-ledger.js +0 -44
- package/skills/wix-replatform/scripts/import-contract-verify.js +0 -183
- package/skills/wix-replatform/scripts/internal-link-audit.js +0 -90
- package/skills/wix-replatform/scripts/item-seo-tags-verify.js +0 -205
- package/skills/wix-replatform/scripts/migration-completion.js +0 -76
- package/skills/wix-replatform/scripts/orchestration-preflight.js +0 -67
- package/skills/wix-replatform/scripts/orchestration-route.js +0 -77
- package/skills/wix-replatform/scripts/orchestration-state.js +0 -381
- package/skills/wix-replatform/scripts/read-back-gate.js +0 -175
- package/skills/wix-replatform/scripts/replatform-console.js +0 -146
- package/skills/wix-replatform/scripts/replatform.js +0 -436
- package/skills/wix-replatform/scripts/source-secrets.js +0 -77
- package/skills/wix-replatform/scripts/url-redirects.js +0 -286
- package/skills/wix-replatform/scripts/user-action.js +0 -58
- package/skills/wix-replatform/scripts/website-handoff-generate.js +0 -64
- package/skills/wix-replatform/scripts/wix-dashboard-url.js +0 -54
- package/skills/wix-replatform/scripts/wix-destination.js +0 -143
- package/skills/wix-replatform/scripts/wix-headless-scaffold.js +0 -762
- package/skills/wix-vibe-headless/SKILL.md +0 -183
- package/skills/wix-vibe-headless/install/deploy.cjs +0 -221
- package/skills/wix-vibe-headless/install/pin-agents-md.cjs +0 -35
- package/skills/wix-vibe-headless/platforms/README.md +0 -26
- package/skills/wix-vibe-headless/platforms/base44-ecom-light-seed-with-install.md +0 -127
- package/skills/wix-vibe-headless/platforms/base44-ecom-light-seed.md +0 -121
- package/skills/wix-vibe-headless/platforms/base44-ecom-light.md +0 -87
- package/skills/wix-vibe-headless/platforms/base44.md +0 -148
- package/skills/wix-vibe-headless/platforms/generic.md +0 -132
- package/skills/wix-vibe-headless/references/_shared/nav/nav.tanstack.js +0 -30
- package/skills/wix-vibe-headless/references/_shared/routing.md +0 -86
- package/skills/wix-vibe-headless/references/blog/INSTRUCTIONS.md +0 -270
- package/skills/wix-vibe-headless/references/blog/app/components/PostCard.jsx +0 -43
- package/skills/wix-vibe-headless/references/blog/app/components/PostChips.jsx +0 -25
- package/skills/wix-vibe-headless/references/blog/app/components/PostGrid.jsx +0 -15
- package/skills/wix-vibe-headless/references/blog/app/context/TaxonomyContext.jsx +0 -35
- package/skills/wix-vibe-headless/references/blog/app/hooks/usePostDetail.js +0 -38
- package/skills/wix-vibe-headless/references/blog/app/pages/Blog.jsx +0 -40
- package/skills/wix-vibe-headless/references/blog/app/pages/CategoryPage.jsx +0 -54
- package/skills/wix-vibe-headless/references/blog/app/pages/PostDetail.jsx +0 -65
- package/skills/wix-vibe-headless/references/blog/app/pages/TagPage.jsx +0 -50
- package/skills/wix-vibe-headless/references/blog/app/rest/wix-blog.js +0 -217
- package/skills/wix-vibe-headless/references/blog/seed/SEED.md +0 -99
- package/skills/wix-vibe-headless/references/blog/seed/seed-blog.cjs +0 -269
- package/skills/wix-vibe-headless/references/bookings/INSTRUCTIONS.md +0 -342
- package/skills/wix-vibe-headless/references/bookings/app/components/BookingForm.jsx +0 -65
- package/skills/wix-vibe-headless/references/bookings/app/components/RentalDurationPicker.jsx +0 -67
- package/skills/wix-vibe-headless/references/bookings/app/components/ServiceCard.jsx +0 -47
- package/skills/wix-vibe-headless/references/bookings/app/components/ServiceGrid.jsx +0 -13
- package/skills/wix-vibe-headless/references/bookings/app/components/SlotPicker.jsx +0 -126
- package/skills/wix-vibe-headless/references/bookings/app/hooks/useRentalDuration.js +0 -128
- package/skills/wix-vibe-headless/references/bookings/app/hooks/useServiceDetail.js +0 -110
- package/skills/wix-vibe-headless/references/bookings/app/hooks/useServices.js +0 -58
- package/skills/wix-vibe-headless/references/bookings/app/lib/serviceFacts.js +0 -95
- package/skills/wix-vibe-headless/references/bookings/app/pages/ServiceDetail.jsx +0 -94
- package/skills/wix-vibe-headless/references/bookings/app/pages/Services.jsx +0 -89
- package/skills/wix-vibe-headless/references/bookings/app/rest/wix-bookings-checkout.js +0 -148
- package/skills/wix-vibe-headless/references/bookings/app/rest/wix-bookings-rentals.js +0 -250
- package/skills/wix-vibe-headless/references/bookings/app/rest/wix-bookings-services.js +0 -300
- package/skills/wix-vibe-headless/references/bookings/seed/SEED.md +0 -154
- package/skills/wix-vibe-headless/references/bookings/seed/seed-bookings.cjs +0 -333
- package/skills/wix-vibe-headless/references/bookings/seed/seed-rentals.cjs +0 -267
- package/skills/wix-vibe-headless/references/cms/INSTRUCTIONS.md +0 -178
- package/skills/wix-vibe-headless/references/cms/app/collection.config.js +0 -31
- package/skills/wix-vibe-headless/references/cms/app/lib/wixImage.js +0 -18
- package/skills/wix-vibe-headless/references/cms/app/rest/wix-cms.js +0 -231
- package/skills/wix-vibe-headless/references/cms/seed/SEED.md +0 -145
- package/skills/wix-vibe-headless/references/donations/INSTRUCTIONS.md +0 -88
- package/skills/wix-vibe-headless/references/donations/app/rest/wix-donations.js +0 -112
- package/skills/wix-vibe-headless/references/donations/seed/SEED.md +0 -11
- package/skills/wix-vibe-headless/references/donations/tests/donations.test.mjs +0 -258
- package/skills/wix-vibe-headless/references/events/INSTRUCTIONS.md +0 -267
- package/skills/wix-vibe-headless/references/events/app/components/CategoryFilter.jsx +0 -23
- package/skills/wix-vibe-headless/references/events/app/components/EventCard.jsx +0 -43
- package/skills/wix-vibe-headless/references/events/app/components/EventGrid.jsx +0 -13
- package/skills/wix-vibe-headless/references/events/app/components/EventRegistration.jsx +0 -29
- package/skills/wix-vibe-headless/references/events/app/components/RsvpForm.jsx +0 -57
- package/skills/wix-vibe-headless/references/events/app/components/TicketPicker.jsx +0 -78
- package/skills/wix-vibe-headless/references/events/app/hooks/useEventDetail.js +0 -27
- package/skills/wix-vibe-headless/references/events/app/hooks/useEventsList.js +0 -54
- package/skills/wix-vibe-headless/references/events/app/hooks/useRsvpForm.js +0 -40
- package/skills/wix-vibe-headless/references/events/app/hooks/useTicketing.js +0 -81
- package/skills/wix-vibe-headless/references/events/app/pages/EventDetail.jsx +0 -48
- package/skills/wix-vibe-headless/references/events/app/pages/Events.jsx +0 -36
- package/skills/wix-vibe-headless/references/events/app/rest/wix-events-browse.js +0 -136
- package/skills/wix-vibe-headless/references/events/app/rest/wix-events-registration.js +0 -187
- package/skills/wix-vibe-headless/references/events/seed/SEED.md +0 -103
- package/skills/wix-vibe-headless/references/events/seed/seed-events.cjs +0 -251
- package/skills/wix-vibe-headless/references/forms/INSTRUCTIONS.md +0 -487
- package/skills/wix-vibe-headless/references/forms/app/hooks/useWixForm.js +0 -425
- package/skills/wix-vibe-headless/references/forms/app/lib/wix-form-schema-utils.js +0 -187
- package/skills/wix-vibe-headless/references/forms/app/rest/wix-forms-submissions.js +0 -238
- package/skills/wix-vibe-headless/references/forms/app/rest/wix-forms.js +0 -108
- package/skills/wix-vibe-headless/references/forms/seed/SEED.md +0 -1836
- package/skills/wix-vibe-headless/references/members/INSTRUCTIONS.md +0 -328
- package/skills/wix-vibe-headless/references/members/app/components/LoginForm.jsx +0 -101
- package/skills/wix-vibe-headless/references/members/app/components/MemberMenu.jsx +0 -33
- package/skills/wix-vibe-headless/references/members/app/components/RequireAuth.jsx +0 -21
- package/skills/wix-vibe-headless/references/members/app/components/SocialButtons.jsx +0 -29
- package/skills/wix-vibe-headless/references/members/app/context/MemberContext.jsx +0 -54
- package/skills/wix-vibe-headless/references/members/app/hooks/useLoginForm.js +0 -77
- package/skills/wix-vibe-headless/references/members/app/pages/Account.jsx +0 -36
- package/skills/wix-vibe-headless/references/members/app/pages/Callback.jsx +0 -32
- package/skills/wix-vibe-headless/references/members/app/pages/Login.jsx +0 -35
- package/skills/wix-vibe-headless/references/members/app/rest/wix-members-auth.js +0 -390
- package/skills/wix-vibe-headless/references/members/install/Register.jsx +0 -22
- package/skills/wix-vibe-headless/references/members/seed/SEED.md +0 -21
- package/skills/wix-vibe-headless/references/portfolio/INSTRUCTIONS.md +0 -270
- package/skills/wix-vibe-headless/references/portfolio/app/components/CollectionCard.jsx +0 -31
- package/skills/wix-vibe-headless/references/portfolio/app/components/CollectionGrid.jsx +0 -15
- package/skills/wix-vibe-headless/references/portfolio/app/components/ProjectCard.jsx +0 -39
- package/skills/wix-vibe-headless/references/portfolio/app/components/ProjectGrid.jsx +0 -15
- package/skills/wix-vibe-headless/references/portfolio/app/components/ProjectMedia.jsx +0 -29
- package/skills/wix-vibe-headless/references/portfolio/app/hooks/useCollectionProjects.js +0 -35
- package/skills/wix-vibe-headless/references/portfolio/app/hooks/usePortfolioGallery.js +0 -27
- package/skills/wix-vibe-headless/references/portfolio/app/hooks/useProjectDetail.js +0 -25
- package/skills/wix-vibe-headless/references/portfolio/app/pages/CollectionPage.jsx +0 -39
- package/skills/wix-vibe-headless/references/portfolio/app/pages/Portfolio.jsx +0 -27
- package/skills/wix-vibe-headless/references/portfolio/app/pages/ProjectDetail.jsx +0 -60
- package/skills/wix-vibe-headless/references/portfolio/app/rest/wix-portfolio.js +0 -223
- package/skills/wix-vibe-headless/references/portfolio/seed/SEED.md +0 -90
- package/skills/wix-vibe-headless/references/portfolio/seed/seed-portfolio.cjs +0 -236
- package/skills/wix-vibe-headless/references/pricing-plans/INSTRUCTIONS.md +0 -280
- package/skills/wix-vibe-headless/references/pricing-plans/app/components/OrderCard.jsx +0 -35
- package/skills/wix-vibe-headless/references/pricing-plans/app/components/PlanCard.jsx +0 -48
- package/skills/wix-vibe-headless/references/pricing-plans/app/components/PlanGrid.jsx +0 -16
- package/skills/wix-vibe-headless/references/pricing-plans/app/components/PlanPrice.jsx +0 -35
- package/skills/wix-vibe-headless/references/pricing-plans/app/hooks/useMyPlans.js +0 -25
- package/skills/wix-vibe-headless/references/pricing-plans/app/hooks/usePlanDetail.js +0 -28
- package/skills/wix-vibe-headless/references/pricing-plans/app/hooks/usePlans.js +0 -30
- package/skills/wix-vibe-headless/references/pricing-plans/app/pages/MyPlans.jsx +0 -30
- package/skills/wix-vibe-headless/references/pricing-plans/app/pages/PlanDetail.jsx +0 -53
- package/skills/wix-vibe-headless/references/pricing-plans/app/pages/Plans.jsx +0 -28
- package/skills/wix-vibe-headless/references/pricing-plans/app/rest/wix-pricing-plans.js +0 -157
- package/skills/wix-vibe-headless/references/pricing-plans/seed/SEED.md +0 -82
- package/skills/wix-vibe-headless/references/pricing-plans/seed/seed-pricing-plans.cjs +0 -251
- package/skills/wix-vibe-headless/references/rentals/INSTRUCTIONS.md +0 -13
- package/skills/wix-vibe-headless/references/restaurants/INSTRUCTIONS.md +0 -290
- package/skills/wix-vibe-headless/references/restaurants/app/components/ItemDialog.jsx +0 -81
- package/skills/wix-vibe-headless/references/restaurants/app/components/MenuItemCard.jsx +0 -71
- package/skills/wix-vibe-headless/references/restaurants/app/components/MenuList.jsx +0 -43
- package/skills/wix-vibe-headless/references/restaurants/app/components/OrderCartButton.jsx +0 -21
- package/skills/wix-vibe-headless/references/restaurants/app/components/OrderCartDrawer.jsx +0 -72
- package/skills/wix-vibe-headless/references/restaurants/app/context/OrderCartContext.jsx +0 -66
- package/skills/wix-vibe-headless/references/restaurants/app/hooks/useItemOrder.js +0 -32
- package/skills/wix-vibe-headless/references/restaurants/app/hooks/useReservation.js +0 -73
- package/skills/wix-vibe-headless/references/restaurants/app/pages/Menu.jsx +0 -28
- package/skills/wix-vibe-headless/references/restaurants/app/pages/Reservations.jsx +0 -102
- package/skills/wix-vibe-headless/references/restaurants/app/rest/wix-restaurants-menu.js +0 -224
- package/skills/wix-vibe-headless/references/restaurants/app/rest/wix-restaurants-ordering.js +0 -218
- package/skills/wix-vibe-headless/references/restaurants/app/rest/wix-restaurants-reservations.js +0 -107
- package/skills/wix-vibe-headless/references/restaurants/seed/SEED.md +0 -176
- package/skills/wix-vibe-headless/references/restaurants/seed/seed-restaurants.cjs +0 -452
- package/skills/wix-vibe-headless/references/shared/app/components/WixManageBanner.jsx +0 -56
- package/skills/wix-vibe-headless/references/shared/app/lib/nav.js +0 -9
- package/skills/wix-vibe-headless/references/shared/app/rest/wix-client.js +0 -185
- package/skills/wix-vibe-headless/references/shared/app/rest/wix-config.js +0 -8
- package/skills/wix-vibe-headless/references/storefront/INSTRUCTIONS.md +0 -471
- package/skills/wix-vibe-headless/references/storefront/app/components/CartButton.jsx +0 -20
- package/skills/wix-vibe-headless/references/storefront/app/components/CartDrawer.jsx +0 -167
- package/skills/wix-vibe-headless/references/storefront/app/context/CartContext.jsx +0 -83
- package/skills/wix-vibe-headless/references/storefront/app/hooks/useProductCard.js +0 -104
- package/skills/wix-vibe-headless/references/storefront/app/hooks/useProductDetail.js +0 -163
- package/skills/wix-vibe-headless/references/storefront/app/hooks/useShop.js +0 -83
- package/skills/wix-vibe-headless/references/storefront/app/hooks/useVariantOptions.js +0 -76
- package/skills/wix-vibe-headless/references/storefront/app/lib/storeImage.js +0 -64
- package/skills/wix-vibe-headless/references/storefront/app/rest/wix-store-cart.js +0 -176
- package/skills/wix-vibe-headless/references/storefront/app/rest/wix-store-catalog.js +0 -218
- package/skills/wix-vibe-headless/references/storefront/seed/SEED.md +0 -174
- package/skills/wix-vibe-headless/references/storefront/seed/seed-store.cjs +0 -546
|
@@ -1,185 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* REST version of the Wix headless integration — the direct analog of
|
|
3
|
-
* `storefrontApiRequest` in src/lib/shopify.ts. Plain fetch, JSON in / JSON out.
|
|
4
|
-
* No SDK, no query builder, no Velo.
|
|
5
|
-
*
|
|
6
|
-
* WIX_CLIENT_ID is the one thing to set — and you set it in `wix-config.js`, not here.
|
|
7
|
-
* The client exchanges it for a visitor access token via the OAuth2 token endpoint,
|
|
8
|
-
* then sends that token on every API call.
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
// The public headless OAuth client id — set it in wix-config.js (do not hardcode it here).
|
|
12
|
-
export { WIX_CLIENT_ID } from "./wix-config.js";
|
|
13
|
-
import { WIX_CLIENT_ID } from "./wix-config.js";
|
|
14
|
-
|
|
15
|
-
export const WIX_API_BASE = "https://www.wixapis.com";
|
|
16
|
-
export const WIX_API_SUPPORTS_STRICT_PAYMENT_ERRORS = true;
|
|
17
|
-
const OAUTH_TOKEN_URL = `${WIX_API_BASE}/oauth2/token`;
|
|
18
|
-
|
|
19
|
-
// Scope the storage key by client id so two headless sites served from the same
|
|
20
|
-
// origin (e.g. localhost:4321 across projects) don't share one visitor token —
|
|
21
|
-
// which would load site A's token for site B and mix up carts/identity.
|
|
22
|
-
const TOKEN_STORAGE_KEY = `wix-visitor-token-${WIX_CLIENT_ID}`;
|
|
23
|
-
let tokenCache = null;
|
|
24
|
-
|
|
25
|
-
function loadToken() {
|
|
26
|
-
if (tokenCache) return tokenCache;
|
|
27
|
-
if (typeof window === "undefined") return null;
|
|
28
|
-
try {
|
|
29
|
-
const raw = window.localStorage.getItem(TOKEN_STORAGE_KEY);
|
|
30
|
-
if (raw) tokenCache = JSON.parse(raw);
|
|
31
|
-
} catch {
|
|
32
|
-
/* ignore disabled/full storage */
|
|
33
|
-
}
|
|
34
|
-
return tokenCache;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
function saveToken(t) {
|
|
38
|
-
tokenCache = t;
|
|
39
|
-
if (typeof window === "undefined") return;
|
|
40
|
-
try {
|
|
41
|
-
window.localStorage.setItem(TOKEN_STORAGE_KEY, JSON.stringify(t));
|
|
42
|
-
} catch {
|
|
43
|
-
/* ignore */
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
async function mintToken(body) {
|
|
48
|
-
const res = await fetch(OAUTH_TOKEN_URL, {
|
|
49
|
-
method: "POST",
|
|
50
|
-
headers: { "Content-Type": "application/json" },
|
|
51
|
-
body: JSON.stringify(body),
|
|
52
|
-
});
|
|
53
|
-
if (!res.ok) throw new Error(`Wix OAuth failed: ${res.status}`);
|
|
54
|
-
const data = await res.json();
|
|
55
|
-
return {
|
|
56
|
-
accessToken: data.access_token,
|
|
57
|
-
refreshToken: data.refresh_token,
|
|
58
|
-
expiresAt: Date.now() + data.expires_in * 1000,
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* Log a member in on THIS client by swapping the persisted token set for the
|
|
64
|
-
* member's tokens (see references/members/). Member tokens are the SAME shape as
|
|
65
|
-
* visitor tokens and refresh via the same `refresh_token` grant — logging in just
|
|
66
|
-
* replaces the set the client already carries, so EVERY subsequent `wixApiRequest`
|
|
67
|
-
* (cart, orders, bookings, "my …" reads) now runs as the member. Called by the
|
|
68
|
-
* members helper after a successful credential / social / SSO login.
|
|
69
|
-
*
|
|
70
|
-
* @param {{ accessToken: string, refreshToken: string, expiresIn: number }} tokens
|
|
71
|
-
*/
|
|
72
|
-
export function setSessionTokens({ accessToken, refreshToken, expiresIn }) {
|
|
73
|
-
saveToken({
|
|
74
|
-
accessToken,
|
|
75
|
-
refreshToken,
|
|
76
|
-
expiresAt: Date.now() + expiresIn * 1000,
|
|
77
|
-
role: "member",
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* Drop the persisted session so the next call mints a FRESH anonymous visitor.
|
|
83
|
-
* Call on logout — otherwise the dead member token lingers and reads fail.
|
|
84
|
-
*/
|
|
85
|
-
export function clearSession() {
|
|
86
|
-
tokenCache = null;
|
|
87
|
-
if (typeof window === "undefined") return;
|
|
88
|
-
try {
|
|
89
|
-
window.localStorage.removeItem(TOKEN_STORAGE_KEY);
|
|
90
|
-
} catch {
|
|
91
|
-
/* ignore */
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
/**
|
|
96
|
-
* True once a member is logged in on this client (vs. an anonymous visitor).
|
|
97
|
-
* Gate account UI on this, or on the members helper's `isLoggedIn()`.
|
|
98
|
-
* @returns {boolean}
|
|
99
|
-
*/
|
|
100
|
-
export function isMember() {
|
|
101
|
-
return loadToken()?.role === "member";
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
/**
|
|
105
|
-
* Get a visitor access token from the client id.
|
|
106
|
-
*
|
|
107
|
-
* The visitor token IS the identity of the Wix "current cart", so we persist the
|
|
108
|
-
* refresh token to localStorage and REFRESH it on expiry — re-minting a fresh
|
|
109
|
-
* `anonymous` token would create a NEW visitor and silently empty the cart on
|
|
110
|
-
* every reload / after the 4h token lifetime. Anonymous mint happens only once
|
|
111
|
-
* (or when no refresh token is stored).
|
|
112
|
-
*/
|
|
113
|
-
async function getAccessToken() {
|
|
114
|
-
const cached = loadToken();
|
|
115
|
-
if (cached && cached.expiresAt > Date.now() + 60_000) return cached.accessToken;
|
|
116
|
-
|
|
117
|
-
if (cached?.refreshToken) {
|
|
118
|
-
try {
|
|
119
|
-
const refreshed = await mintToken({ clientId: WIX_CLIENT_ID, grantType: "refresh_token", refreshToken: cached.refreshToken });
|
|
120
|
-
// Refreshing preserves identity: a member refresh token yields member tokens.
|
|
121
|
-
refreshed.role = cached.role || "visitor";
|
|
122
|
-
saveToken(refreshed);
|
|
123
|
-
return refreshed.accessToken;
|
|
124
|
-
} catch {
|
|
125
|
-
/* refresh failed — fall through to a fresh anonymous visitor */
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
const fresh = await mintToken({ clientId: WIX_CLIENT_ID, grantType: "anonymous" });
|
|
129
|
-
fresh.role = "visitor";
|
|
130
|
-
saveToken(fresh);
|
|
131
|
-
return fresh.accessToken;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
/**
|
|
135
|
-
* Core transport — mirrors storefrontApiRequest. Adds the Authorization header,
|
|
136
|
-
* resolves the path against the Wix API base, parses JSON, surfaces errors.
|
|
137
|
-
*
|
|
138
|
-
* @param {string} path
|
|
139
|
-
* @param {{ method?: "GET"|"POST"|"PUT"|"DELETE", body?: unknown, query?: Record<string, string | undefined>, throwOnPaymentRequired?: boolean }} [options]
|
|
140
|
-
*/
|
|
141
|
-
export async function wixApiRequest(path, options = {}) {
|
|
142
|
-
const { method = "POST", body, query, throwOnPaymentRequired = false } = options;
|
|
143
|
-
const token = await getAccessToken();
|
|
144
|
-
|
|
145
|
-
const url = new URL(path.startsWith("http") ? path : `${WIX_API_BASE}${path}`);
|
|
146
|
-
if (query) {
|
|
147
|
-
for (const [k, v] of Object.entries(query)) {
|
|
148
|
-
if (v === undefined) continue;
|
|
149
|
-
if (Array.isArray(v)) {
|
|
150
|
-
for (const item of v) url.searchParams.append(k, item);
|
|
151
|
-
} else {
|
|
152
|
-
url.searchParams.set(k, v);
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
const res = await fetch(url.toString(), {
|
|
158
|
-
method,
|
|
159
|
-
headers: {
|
|
160
|
-
"Content-Type": "application/json",
|
|
161
|
-
Authorization: token, // Wix expects the raw access token (no "Bearer " prefix)
|
|
162
|
-
},
|
|
163
|
-
body: body !== undefined ? JSON.stringify(body) : undefined,
|
|
164
|
-
});
|
|
165
|
-
|
|
166
|
-
if (res.status === 402 && !throwOnPaymentRequired) {
|
|
167
|
-
// This API requires an active plan / premium feature on the site.
|
|
168
|
-
console.warn("Wix: Payment required (402) — this API needs an active plan/premium feature.");
|
|
169
|
-
return;
|
|
170
|
-
}
|
|
171
|
-
if (!res.ok) {
|
|
172
|
-
const text = await res.text().catch(() => "");
|
|
173
|
-
let parsed;
|
|
174
|
-
try { parsed = JSON.parse(text); } catch { parsed = text; }
|
|
175
|
-
// Attach status + parsed body so callers (e.g. the members helper) can map a
|
|
176
|
-
// meaningful auth outcome (404 = bad credentials, 409 = email exists) to a
|
|
177
|
-
// friendly message instead of parsing the message string.
|
|
178
|
-
const err = new Error(`Wix API error ${res.status}: ${text}`);
|
|
179
|
-
err.status = res.status;
|
|
180
|
-
err.body = parsed;
|
|
181
|
-
throw err;
|
|
182
|
-
}
|
|
183
|
-
if (res.status === 204) return undefined;
|
|
184
|
-
return await res.json();
|
|
185
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
// Wix credentials. The install step writes this file: deploy.cjs --client-id … --metasite-id …
|
|
2
|
-
// If you're seeing the placeholders below, re-run that command with the ids from the prompt rather
|
|
3
|
-
// than typing them in here.
|
|
4
|
-
// Safe to commit: WIX_CLIENT_ID is a public, buyer-facing id (it only mints anonymous visitor
|
|
5
|
-
// tokens); WIX_METASITE_ID just identifies the site.
|
|
6
|
-
// wix-client.js and wix-manage-banner.js read their ids from here.
|
|
7
|
-
export const WIX_CLIENT_ID = "<YOUR-CLIENT-ID>";
|
|
8
|
-
export const WIX_METASITE_ID = "<YOUR-METASITE-ID>";
|
|
@@ -1,471 +0,0 @@
|
|
|
1
|
-
# Wix Storefront — ready-made client
|
|
2
|
-
|
|
3
|
-
The storefront ships the commerce hooks, server cart, REST transport, image helpers, and cart UI.
|
|
4
|
-
You build the presentation: Shop page, product grid and cards, variant controls, product detail
|
|
5
|
-
(PDP) page, Home, header, and footer. Use the interfaces below and proceed directly to implementation.
|
|
6
|
-
|
|
7
|
-
The shipped client handles visitor authentication using its deployed configuration. No ID lookup
|
|
8
|
-
or configuration changes are needed to build the UI. Never mock products or hand-build a
|
|
9
|
-
`/checkout` URL; the shipped cart uses the eCom redirect session.
|
|
10
|
-
|
|
11
|
-
## Prerequisites
|
|
12
|
-
- The site's **Wix Stores** catalog is the read/cart target. It may be empty while the client is being built — render the empty state cleanly. Flows that seed do so after the client is built; verify the storefront once the catalog is populated, not against the empty state.
|
|
13
|
-
|
|
14
|
-
## Already installed in `src/`
|
|
15
|
-
Successful deployment verified these files are in place; use this map without needing to read their source (`@/` → `src/`).
|
|
16
|
-
|
|
17
|
-
| file | what it is |
|
|
18
|
-
|---|---|
|
|
19
|
-
| `context/CartContext.jsx` | `CartProvider` and `useCart()`: server cart, add/update/remove, checkout |
|
|
20
|
-
| `hooks/useProductDetail.js` | PDP product, variant resolution, selection, load/add state |
|
|
21
|
-
| `hooks/useShop.js` | Catalog listing, categories, cursor paging, sort, failure state; use in your `Shop` |
|
|
22
|
-
| `hooks/useProductCard.js` | Card badges, prices, options summary, quick-add flag, images |
|
|
23
|
-
| `hooks/useVariantOptions.js` | Render-agnostic option and modifier groups for PDP controls |
|
|
24
|
-
| `lib/storeImage.js` | Wix image URL and gallery helpers |
|
|
25
|
-
| `components/CartButton.jsx` | Cart icon button with a live-count badge |
|
|
26
|
-
| `components/CartDrawer.jsx` | Cart drawer; mount once, opens through `useCart` |
|
|
27
|
-
| `components/WixManageBanner.jsx` | Preview-only manage banner; include only when the entry guide enables it |
|
|
28
|
-
| `rest/wix-config.js` | Deployed configuration; consumed internally by the shipped client |
|
|
29
|
-
| `rest/wix-client.js` | REST transport and visitor authentication |
|
|
30
|
-
| `rest/wix-store-catalog.js` | Product and category queries |
|
|
31
|
-
| `rest/wix-store-cart.js` | Cart mutations and hosted checkout |
|
|
32
|
-
|
|
33
|
-
Build using the interfaces below without reading the shipped source. If you encounter an error
|
|
34
|
-
after building the client, read or change whatever you need to diagnose and fix it.
|
|
35
|
-
If deployment failed or files are missing, re-run the install/deploy step.
|
|
36
|
-
|
|
37
|
-
## Theme
|
|
38
|
-
Use the existing Base44 theme in `src/index.css` so your pages and the shipped components
|
|
39
|
-
share the same colors and typography.
|
|
40
|
-
|
|
41
|
-
## Presentation interfaces
|
|
42
|
-
Build `pages/Shop.jsx`, `components/ProductGrid.jsx`, `components/ProductCard.jsx`, and
|
|
43
|
-
`pages/ProductDetail.jsx` from these contracts. All paths are under `src/`. Home, header, and
|
|
44
|
-
footer are yours to design; their integration is in **Routes and provider** below.
|
|
45
|
-
|
|
46
|
-
### Shop page and product grid
|
|
47
|
-
Create both files below. The hook owns catalog data; your page owns its presentation.
|
|
48
|
-
|
|
49
|
-
```jsx
|
|
50
|
-
// src/pages/Shop.jsx
|
|
51
|
-
import { useShop, SORTS } from "@/hooks/useShop";
|
|
52
|
-
import ProductGrid from "@/components/ProductGrid";
|
|
53
|
-
|
|
54
|
-
export default function Shop() {
|
|
55
|
-
const s = useShop();
|
|
56
|
-
// Category controls: s.categories ({ id, name }), s.activeCategory;
|
|
57
|
-
// select with s.setActiveCategory(category), or null for all products.
|
|
58
|
-
// Sort controls: Object.entries(SORTS) -> [key, { label }];
|
|
59
|
-
// selected value s.sort; change with s.setSort(key).
|
|
60
|
-
// Optional filters: s.setFilters({ minPrice: 20, maxPrice: 100,
|
|
61
|
-
// inStockOnly: true, search: "linen" }); s.setFilters({}) clears them.
|
|
62
|
-
// Apply a submitted/debounced search value; the hook queries on every change.
|
|
63
|
-
// Render s.error with s.retry separately from loading/empty results.
|
|
64
|
-
// On a later-page error, keep already loaded products visible.
|
|
65
|
-
// Pagination: when s.hasMore, call s.loadMore(); disable while s.loadingMore.
|
|
66
|
-
return (
|
|
67
|
-
<ProductGrid
|
|
68
|
-
products={s.products}
|
|
69
|
-
loading={s.loading}
|
|
70
|
-
emptyMessage={s.error ? "" : "No products yet."}
|
|
71
|
-
emptyHint={s.error ? "" : "Try another category or check back later."}
|
|
72
|
-
/>
|
|
73
|
-
); // Add the controls and states above; layout and styling are yours.
|
|
74
|
-
}
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
```jsx
|
|
78
|
-
// src/components/ProductGrid.jsx
|
|
79
|
-
import ProductCard from "@/components/ProductCard";
|
|
80
|
-
|
|
81
|
-
export default function ProductGrid({ products, loading, emptyMessage, emptyHint }) {
|
|
82
|
-
// products: array | null; emptyMessage and emptyHint are display text, not state.
|
|
83
|
-
// Layout and styling are yours; this component does not fetch products.
|
|
84
|
-
if (loading && !products?.length) return null; // Replace null with your loading UI.
|
|
85
|
-
if (!products?.length) {
|
|
86
|
-
// The page handles errors separately and suppresses emptyMessage on error.
|
|
87
|
-
return emptyMessage ? <div><p>{emptyMessage}</p><p>{emptyHint}</p></div> : null;
|
|
88
|
-
}
|
|
89
|
-
return products.map(product => <ProductCard key={product.id} product={product} />);
|
|
90
|
-
}
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
### Product card
|
|
94
|
-
Pass a catalog product to `ProductCard`: use `product.id` for identity/quick-add, `product.name`
|
|
95
|
-
for the title, and `product.slug` for the PDP link. Pass the full object to `useProductCard`.
|
|
96
|
-
|
|
97
|
-
```jsx
|
|
98
|
-
import { useProductCard } from "@/hooks/useProductCard";
|
|
99
|
-
import { useCart } from "@/context/CartContext";
|
|
100
|
-
|
|
101
|
-
export default function ProductCard({ product }) {
|
|
102
|
-
const { addToCart, loading, error } = useCart();
|
|
103
|
-
const {
|
|
104
|
-
isSoldOut, isPreorder, isPartiallyOutOfStock, // booleans
|
|
105
|
-
leftBadges, // [{ type: 'pre-order'|'sold-out'|'limited-stock', label }]
|
|
106
|
-
ribbons, // every merchant ribbon label, primary first — render ALL of them, one shared style
|
|
107
|
-
promoBadge, // { type: 'ribbon', label } | null — the primary ribbon, for a single-badge slot
|
|
108
|
-
priceDisplay, // the price the buyer pays (discounted when an automatic discount applies), or a min–max range
|
|
109
|
-
compareAtDisplay, // struck "was" price | null — never beside a range (the PDP shows the real comparison)
|
|
110
|
-
teaser, // plain-text description for the tile — plainDescription is HTML; never render it raw on a card
|
|
111
|
-
colors, // hex colour strings
|
|
112
|
-
optionLabel, // e.g. "3 sizes · 2 materials", or ""
|
|
113
|
-
isQuickAddable, // no product options and not sold out; does NOT check modifiers
|
|
114
|
-
directAddVariantId, // the variant a quick-add sends; null when not quick-addable
|
|
115
|
-
image, hoverImage,// normalised primary / second gallery URL | null
|
|
116
|
-
} = useProductCard(product);
|
|
117
|
-
// Render your card.
|
|
118
|
-
}
|
|
119
|
-
```
|
|
120
|
-
A ribbon is a label, never proof of a price: don't render a "Sale" badge from `compareAtDisplay`,
|
|
121
|
-
and don't compute a percent-off — the hook deliberately doesn't. For quick-add, call
|
|
122
|
-
`addToCart(product.id, directAddVariantId)` only when `isQuickAddable` and no mandatory
|
|
123
|
-
modifier needs input (`product.modifiers` entries have a `mandatory` boolean). Otherwise link to `/product/${product.slug}` for selection, including
|
|
124
|
-
pre-orders. Listing results have no full variants; the PDP hook loads and resolves them.
|
|
125
|
-
Use cart-context `loading` to disable repeated adds. Failures open the shipped drawer with
|
|
126
|
-
`error`; you can also display it beside the card/PDP controls (see **Cart**).
|
|
127
|
-
|
|
128
|
-
### Catalog hook reference
|
|
129
|
-
`useShop` and `SORTS` are named exports from `@/hooks/useShop`; the Shop skeleton above uses them.
|
|
130
|
-
|
|
131
|
-
```js
|
|
132
|
-
const {
|
|
133
|
-
categories, activeCategory, setActiveCategory,
|
|
134
|
-
products, loading, error, retry,
|
|
135
|
-
hasMore, loadMore, loadingMore, sort, setSort, filters, setFilters,
|
|
136
|
-
} = useShop({ pageSize: 24 }); // optional argument; default pageSize 24
|
|
137
|
-
// categories: category[]; activeCategory: category | null (null = all products)
|
|
138
|
-
// setActiveCategory(categoryOrNull): starts a fresh product query, keeping sort/filters
|
|
139
|
-
// products: product[] | null; loading: boolean (fresh query, including sort/filter changes)
|
|
140
|
-
// error: string | null; retry(): reloads the active category's first page
|
|
141
|
-
// hasMore, loadingMore: booleans; loadMore(): appends another page when available
|
|
142
|
-
// sort: 'featured' | 'priceAsc' | 'priceHigh' | 'name' | 'newest'; setSort(key)
|
|
143
|
-
// filters: { minPrice?, maxPrice?, inStockOnly?, search? }
|
|
144
|
-
// setFilters(object): replaces filters; setFilters(previous => ({ ...previous, ...patch })) merges
|
|
145
|
-
// SORTS: { [key]: { label } } for those keys
|
|
146
|
-
```
|
|
147
|
-
Wix filters and sorts the full matching catalog before paging; the hook never sorts a loaded subset.
|
|
148
|
-
Changing category, sort, or filters resets products and the cursor; stale responses are ignored.
|
|
149
|
-
`featured` retains its existing key but means **Default order**, not merchant-curated placement.
|
|
150
|
-
Prices use the product's minimum actual variant price in site currency, in either direction and
|
|
151
|
-
for both bounds; this is not a selected-variant or checkout-discount price. Bounds are inclusive,
|
|
152
|
-
non-negative numbers (numeric strings accepted); null/empty omits a bound. Min must not exceed max.
|
|
153
|
-
`inStockOnly` matches `IN_STOCK` products, excluding partially stocked and preorder-only products.
|
|
154
|
-
`search` searches product names (up to 100 characters). These filters can be combined.
|
|
155
|
-
|
|
156
|
-
Initial product failure sets `error` and an empty array;
|
|
157
|
-
a later page failure preserves products and cursor; call `loadMore()` again to retry that page.
|
|
158
|
-
`retry()` starts over at page one with current selections. Render the error separately from
|
|
159
|
-
an empty catalog. Category loading fetches only the first 100 categories, excludes `visible: false`
|
|
160
|
-
and `slug: "all-products"`, and falls back to `[]` on failure without setting `error`.
|
|
161
|
-
|
|
162
|
-
For a standalone product selection or category menu, import these named functions from
|
|
163
|
-
`@/rest/wix-store-catalog`. They return promises and reject on invalid query options or request failure.
|
|
164
|
-
|
|
165
|
-
| Function | Result |
|
|
166
|
-
|---|---|
|
|
167
|
-
| `searchProducts({ limit = 100, cursor, categoryId, sort, minPrice, maxPrice, inStockOnly, search } = {})` | `{ products: product[], nextCursor: string or null }` — same sort/filter semantics as the hook |
|
|
168
|
-
| `queryProducts(options = {})` | `{ products: product[], nextCursor: string or null }` — visible catalog products |
|
|
169
|
-
| `queryCategories({ limit = 100, cursor } = {})` | `{ categories: category[], nextCursor: string or null }` — one category page |
|
|
170
|
-
| `queryProductsByCategory(categoryId, options = {})` | `{ products: product[], nextCursor: string or null }` — visible products in the category identified by `id` |
|
|
171
|
-
|
|
172
|
-
`queryProducts` and `queryProductsByCategory` accept the same options as `searchProducts`.
|
|
173
|
-
A cursor continues the original query; changed filters/sort require starting without one.
|
|
174
|
-
Products are the full listing objects consumed by `useProductCard`. Category menu fields are
|
|
175
|
-
`id`, `name`, `slug`, and `visible`. Filter out `visible === false` and the system category
|
|
176
|
-
`slug === "all-products"`; an empty category list is valid.
|
|
177
|
-
|
|
178
|
-
```js
|
|
179
|
-
const { categories, nextCursor: categoryCursor } = await queryCategories({ limit: 100 });
|
|
180
|
-
const menu = categories.filter((c) => c.visible !== false && c.slug !== "all-products");
|
|
181
|
-
// Once a category has been selected:
|
|
182
|
-
const { products, nextCursor } = await queryProductsByCategory(selectedCategory.id, { limit: 24 });
|
|
183
|
-
```
|
|
184
|
-
Destructure the arrays; these calls never return bare arrays. Pass a result's `nextCursor` back
|
|
185
|
-
as `cursor` to the same query for the next page, stopping at null. Keep category and product
|
|
186
|
-
cursors separate; changing category, sort, or filters starts without a cursor. Handle failure separately from
|
|
187
|
-
loading so a failed request does not leave a spinner.
|
|
188
|
-
|
|
189
|
-
### Product detail
|
|
190
|
-
```jsx
|
|
191
|
-
import { useParams } from "react-router-dom";
|
|
192
|
-
import { useProductDetail } from "@/hooks/useProductDetail";
|
|
193
|
-
import { useVariantOptions } from "@/hooks/useVariantOptions";
|
|
194
|
-
import { productGallery } from "@/lib/storeImage";
|
|
195
|
-
|
|
196
|
-
export default function ProductDetail() {
|
|
197
|
-
const { slug } = useParams();
|
|
198
|
-
const d = useProductDetail(slug);
|
|
199
|
-
const { optionGroups, modifierGroups } = useVariantOptions(
|
|
200
|
-
d.options, d.modifiers, d.selectedOptions, d.modifierValues
|
|
201
|
-
);
|
|
202
|
-
// Keep all hooks above every conditional return, including while the product loads.
|
|
203
|
-
// d contains:
|
|
204
|
-
// product: Wix product | null; .name, .slug, .plainDescription (HTML)
|
|
205
|
-
// notFound: boolean; error: string | null (load error); retry: () => void
|
|
206
|
-
// price: formatted — the product's min–max range until every option is picked, then the selected
|
|
207
|
-
// variant's price (an automatic discount beats the regular price); compareAtPrice: the struck
|
|
208
|
-
// "was" price, "" when none. discountNames: automatic-discount names, product level.
|
|
209
|
-
// options, modifiers: arrays consumed by useVariantOptions above
|
|
210
|
-
// selectedOptions: { [optionId]: choiceId } — starts EMPTY (no pre-picked choice); selectOption(optionId, choiceId)
|
|
211
|
-
// modifierValues: { [key]: value }; setModifier(key, value)
|
|
212
|
-
// variant: resolved variant | null; null if required choices are missing or no match exists
|
|
213
|
-
// focusMediaUrl: selected choice image, then variant image, or null
|
|
214
|
-
// quantity, setQuantity(n): number (may be "" mid-edit); resets to 1 when an option changes
|
|
215
|
-
// inStock, isPreorder, canAdd, adding: booleans — a pre-order variant IS addable
|
|
216
|
-
// blockedReason: string | null — why the buy button is disabled ("Choose Size", "Out of stock");
|
|
217
|
-
// render it next to the action as neutral guidance, not an error, until the buyer tries to buy
|
|
218
|
-
// submit: async () => adds product + resolved variant + quantity + modifiers (+ preorder)
|
|
219
|
-
// resolves undefined on success, null on failure (not a cart object or a boolean)
|
|
220
|
-
// Replace these placeholders with your error, not-found, and loading UI.
|
|
221
|
-
if (d.error) return null; // show d.error and offer d.retry()
|
|
222
|
-
if (d.notFound) return null;
|
|
223
|
-
if (!d.product) return null;
|
|
224
|
-
|
|
225
|
-
const images = productGallery(d.product); // [{ url, altText }], main first, de-duplicated
|
|
226
|
-
// Render your PDP using d, images, optionGroups, and modifierGroups.
|
|
227
|
-
return null;
|
|
228
|
-
}
|
|
229
|
-
```
|
|
230
|
-
- Render `product.plainDescription` as HTML; strike `compareAtPrice` only when present and different from `price`.
|
|
231
|
-
- Make the gallery follow `focusMediaUrl` when the selected option changes.
|
|
232
|
-
- Render the option/modifier controls below; mark choices whose `inStock` is false; show `d.blockedReason` beside the button while it's disabled.
|
|
233
|
-
- Label the action by state: `isPreorder` → "Pre-order"; otherwise "Add to cart". Keep quantity at least 1. Disable adding when `!canAdd || adding`; call `submit()` only with a loaded product and `canAdd`. `submit()` coerces quantity to at least 1 but does not itself enforce `canAdd`.
|
|
234
|
-
- `canAdd` checks variant resolution, availability (in stock or pre-orderable), and mandatory modifier values. `inStock` defaults to true without a resolved variant; use `canAdd` for the full gate.
|
|
235
|
-
- Render the PDP gallery from `images` — every image reachable (thumbnails, arrows, or a swipeable rail), not just the first; a single-image product gets no empty strip.
|
|
236
|
-
- `submit()` resets `adding` after completion and preserves the cart result: `undefined` on success, `null` on failure. Add failures live in `useCart().error`, not the PDP load `error`; the shipped drawer opens to display them.
|
|
237
|
-
|
|
238
|
-
### Variant and modifier controls
|
|
239
|
-
The product-detail example above provides both groups:
|
|
240
|
-
```js
|
|
241
|
-
// optionGroups: [{ id, name, isColor, choices: [
|
|
242
|
-
// { choiceId, name, colorCode: string | null, isColorSwatch, inStock, selected }
|
|
243
|
-
// ] }]
|
|
244
|
-
// modifierGroups: [{ key, name, mandatory, type: 'choices'|'text',
|
|
245
|
-
// choices?: [{ key, name, selected }], value?: string }]
|
|
246
|
-
// Select option: d.selectOption(group.id, choice.choiceId)
|
|
247
|
-
// Select modifier: d.setModifier(m.key, choice.key)
|
|
248
|
-
// Text modifier: d.setModifier(m.key, text)
|
|
249
|
-
```
|
|
250
|
-
Retired option choices are filtered out. Respect each choice's `inStock` and modifier's
|
|
251
|
-
`mandatory` flag. A choice with `isColorSwatch` renders as a **color swatch** filled with its
|
|
252
|
-
`colorCode` and labelled by its name — not as a text pill; the hook supplies the values and selection
|
|
253
|
-
state without prescribing the rest of the layout.
|
|
254
|
-
|
|
255
|
-
### Images
|
|
256
|
-
`useProductCard` returns normalized `image`/`hoverImage`, and `useProductDetail` returns normalized
|
|
257
|
-
`focusMediaUrl`; use them directly. For a gallery or images outside those hooks, import from
|
|
258
|
-
`@/lib/storeImage`:
|
|
259
|
-
|
|
260
|
-
| Helper | Contract |
|
|
261
|
-
|---|---|
|
|
262
|
-
| `productGallery(product)` | `[{ url, altText }]`, main image first, de-duplicated; skips entries without an image URL; empty array when no images |
|
|
263
|
-
| `productImage(product)` | Normalized primary image URL or null, for a standalone catalog image |
|
|
264
|
-
| `storeImage(value)` | Accepts a URL string, `{ image: { url } }`, or `{ url }`; prefixes `//` with `https:`, returns other URLs unchanged or null when absent |
|
|
265
|
-
|
|
266
|
-
Gallery URLs are normalized too. Handle missing images; don't reconstruct media URLs or resolve
|
|
267
|
-
choice/variant media yourself.
|
|
268
|
-
|
|
269
|
-
### Cart
|
|
270
|
-
Use the shipped `CartDrawer` and `CartButton` with `CartProvider`, as wired below. The drawer
|
|
271
|
-
already renders cart lines, quantities, subtotal, and checkout; you do not need to build a cart UI.
|
|
272
|
-
Your card/PDP adds products through the named `useCart` export from `@/context/CartContext`
|
|
273
|
-
within `CartProvider` (the PDP hook calls it for you).
|
|
274
|
-
|
|
275
|
-
```js
|
|
276
|
-
const { addToCart, isOpen, setIsOpen, loading, error, clearError } = useCart();
|
|
277
|
-
// addToCart(productId, variantId?, qty = 1, { modifierChoices?, customTextFields?, subscriptionOptionId?, preorder? }?)
|
|
278
|
-
// isOpen: boolean; setIsOpen(true): open the drawer; setIsOpen(false): close it
|
|
279
|
-
// loading: mutation-in-progress boolean; disable repeated adds while true
|
|
280
|
-
// error: string | null; clearError(): clears it
|
|
281
|
-
```
|
|
282
|
-
`addToCart` uses `product.id` and the resolved `variant.id` when needed. Extras: string maps
|
|
283
|
-
`modifierChoices: { [modifier.key]: choiceKey }` and
|
|
284
|
-
`customTextFields: { [modifier.freeTextSettings.key]: userInput }` (include mandatory values);
|
|
285
|
-
`preorder: true` for a pre-order variant (the PDP hook sets it); `subscriptionOptionId` for a chosen
|
|
286
|
-
recurring plan (omit for one-time). The shipped PDP hook doesn't render subscriptions — add that
|
|
287
|
-
only when the catalog has `subscriptionPricesInfo`, requiring an explicit plan choice.
|
|
288
|
-
|
|
289
|
-
The context's add/remove/update/checkout methods return promises resolving to `undefined` on
|
|
290
|
-
success or `null` on failure, storing the failure in `error`. They clear the previous error and
|
|
291
|
-
set `loading` during the operation. Successful add updates the server-cart snapshot and opens the
|
|
292
|
-
drawer; mutation failures also open it to display the error. Your card/PDP can additionally
|
|
293
|
-
surface `error` inline. These context methods do not return the updated cart or checkout URL.
|
|
294
|
-
The lower-level REST helpers can reject; don't apply their rejection contract to `useCart()`.
|
|
295
|
-
|
|
296
|
-
#### Custom cart UI — optional
|
|
297
|
-
Only use these additional contracts if you choose to render your own cart surface. They come
|
|
298
|
-
from the same `useCart()` context; mutation results and error handling are described above.
|
|
299
|
-
|
|
300
|
-
```js
|
|
301
|
-
const { cart, summary, itemCount, removeItem, updateQuantity, checkout, refreshCart } = useCart();
|
|
302
|
-
// cart: server cart | null; itemCount: sum of confirmed line quantities
|
|
303
|
-
// summary: the estimate's { priceSummary: { subtotal, discount, total } } | null — refreshed with the cart;
|
|
304
|
-
// subtotal is after discounts, discount is the CART-level discount only; both ConvertedMoney
|
|
305
|
-
// removeItem(lineItemId); updateQuantity(lineItemId, qty)
|
|
306
|
-
// checkout(); refreshCart()
|
|
307
|
-
```
|
|
308
|
-
For custom cart presentation, `cart?.lineItems ?? []` is the list. Each line has `id`,
|
|
309
|
-
`name.original`, and optional `attributes.image.url`. Option/modifier labels are in
|
|
310
|
-
`attributes.descriptionLines`: `[{ name: { original }, plainText?: { original },
|
|
311
|
-
colorInfo?: { original, code } }]`; use `plainText.original` or `colorInfo.original` for the value.
|
|
312
|
-
Update/remove use the line's `id`, not a catalog product id. Show each line's `attributes.descriptionLines`
|
|
313
|
-
(the chosen options and text) — a shopper verifies the configuration in the cart, not the checkout.
|
|
314
|
-
|
|
315
|
-
Normalize custom cart images with `storeImage(line.attributes?.image?.url)` (see **Images**).
|
|
316
|
-
|
|
317
|
-
`checkout()` navigates to the hosted checkout URL; it refuses empty carts and lines with a status
|
|
318
|
-
other than `IN_STOCK`, and refreshes the cart after failure. `refreshCart()` replaces the snapshot
|
|
319
|
-
and resolves to `undefined`; its underlying read returns null for no cart or a failed request. It
|
|
320
|
-
does not set mutation `loading` or `error`.
|
|
321
|
-
|
|
322
|
-
Cart money is `{ amount, convertedAmount }`, with no formatted string. `amount` is in site
|
|
323
|
-
currency; `convertedAmount` is in display currency. Format
|
|
324
|
-
`money.convertedAmount ?? money.amount` with `Intl.NumberFormat` and
|
|
325
|
-
`cart.customerInfo?.currencyCode ?? cart.businessInfo?.currencyCode` (the shipped drawer falls
|
|
326
|
-
back to `USD`). Use `summary.priceSummary.subtotal` (after discounts) with `cart.subtotal` as the
|
|
327
|
-
fallback while `summary` is null, a Discount row only when `priceSummary.discount` is above zero, and
|
|
328
|
-
line `pricing.totalPrice`; never sum lines yourself. Shipping and tax resolve at checkout — say
|
|
329
|
-
"calculated at checkout", never a hardcoded charge, threshold, or a made-up zero. The estimate's
|
|
330
|
-
`priceSummary.delivery`, `tax`, and `additionalFees` read `"0"` when nothing was calculated (verified
|
|
331
|
-
live), so a zero there is not "Free shipping" or "No tax" — don't render those rows from the estimate.
|
|
332
|
-
|
|
333
|
-
Line `quantityInfo.confirmedQuantity` is the current quantity; `availableQuantity` caps increases
|
|
334
|
-
when finite. `status` can be `IN_STOCK`, `PARTIALLY_IN_STOCK`, `OUT_OF_STOCK`, or
|
|
335
|
-
`REMOVED_FROM_CATALOG`; surface unavailable lines and prevent checkout until resolved.
|
|
336
|
-
|
|
337
|
-
## Routes and provider
|
|
338
|
-
|
|
339
|
-
> **The template decides this step, and `src/routes/__root.jsx` is the question to ask first.**
|
|
340
|
-
> Present → TanStack Start, which mounts these pages as route files at the end of this step; absent
|
|
341
|
-
> → React Router, which the wiring below is written for. Ask in that order: an `src/App.jsx` can
|
|
342
|
-
> exist on a TanStack app because an agent created one, and `__root.jsx` is never there by mistake.
|
|
343
|
-
> The installed `src/lib/nav.js` defaults to the React Router adapter, so on TanStack swap it:
|
|
344
|
-
> [both patterns](../_shared/routing.md).
|
|
345
|
-
>
|
|
346
|
-
> **Import `Link`, `useParams` and friends from `@/lib/nav` in the pages you write too** — same
|
|
347
|
-
> names as the router exports, and nothing you write is pinned to one template.
|
|
348
|
-
|
|
349
|
-
**No shipped source reads needed to wire this.** `CartDrawer` and `CartButton`
|
|
350
|
-
are default exports that take **no props**. `CartProvider` is a named export accepting `children`;
|
|
351
|
-
wire these exactly as shown below.
|
|
352
|
-
When adding storefront routes and providers to `src/App.jsx`, preserve the existing platform
|
|
353
|
-
authentication setup, including `AuthProvider`, `useAuth`, and their `@/lib/AuthContext` imports.
|
|
354
|
-
Do not remove or replace that authentication logic.
|
|
355
|
-
The shipped commerce flow needs no login: shoppers browse, cart, and check out on the Wix visitor
|
|
356
|
-
session, which is separate from platform user auth. Whether the storefront is public or members-only
|
|
357
|
-
is the brief's call — default to public, and gate routes behind platform auth only when the brief
|
|
358
|
-
asks for it. Neither choice affects the commerce flow.
|
|
359
|
-
- Wrap the routed tree in `<CartProvider>` (from `@/context/CartContext`).
|
|
360
|
-
- Put your **header + footer in a `Layout`** that renders `<Outlet/>` between them, and nest every
|
|
361
|
-
route under one pathless `<Route element={<Layout/>}>`. Your brand chrome then wraps **every** page
|
|
362
|
-
— including your Shop and product-detail pages. Mount `<CartDrawer/>` once in the Layout.
|
|
363
|
-
- Routes under the Layout: `/shop` → **your `Shop`** (renders your grid); `/product/:slug` → **your
|
|
364
|
-
`ProductDetail`**; `/` → **your `Home`**.
|
|
365
|
-
|
|
366
|
-
Mount the default export `CartButton` from `@/components/CartButton` once in your header. It opens
|
|
367
|
-
the drawer and shows the live count, inheriting `currentColor`; use it as-is, without a nested button.
|
|
368
|
-
|
|
369
|
-
```jsx
|
|
370
|
-
import { Routes, Route, Outlet } from "react-router-dom";
|
|
371
|
-
import { CartProvider } from "@/context/CartContext";
|
|
372
|
-
import CartDrawer from "@/components/CartDrawer";
|
|
373
|
-
import Shop from "@/pages/Shop"; // YOU build
|
|
374
|
-
import ProductDetail from "@/pages/ProductDetail"; // YOU build
|
|
375
|
-
import Home from "@/pages/Home"; // YOU build
|
|
376
|
-
import Header from "@/components/Header"; // YOU build
|
|
377
|
-
import Footer from "@/components/Footer"; // YOU build
|
|
378
|
-
|
|
379
|
-
function Layout() {
|
|
380
|
-
return (<>
|
|
381
|
-
<Header />
|
|
382
|
-
<Outlet />
|
|
383
|
-
<Footer />
|
|
384
|
-
<CartDrawer />
|
|
385
|
-
</>);
|
|
386
|
-
}
|
|
387
|
-
|
|
388
|
-
<CartProvider>
|
|
389
|
-
<Routes>
|
|
390
|
-
<Route element={<Layout />}> {/* chrome wraps all */}
|
|
391
|
-
<Route path="/" element={<Home />} /> {/* yours */}
|
|
392
|
-
<Route path="/shop" element={<Shop />} /> {/* yours */}
|
|
393
|
-
<Route path="/product/:slug" element={<ProductDetail />} /> {/* yours */}
|
|
394
|
-
</Route>
|
|
395
|
-
</Routes>
|
|
396
|
-
</CartProvider>
|
|
397
|
-
```
|
|
398
|
-
|
|
399
|
-
### Optional banner integration — enabled entry flows only
|
|
400
|
-
Follow the entry guide's banner choice. If it disables the banner, use the common wiring above
|
|
401
|
-
without a banner import, mount, or banner-specific fixed region.
|
|
402
|
-
|
|
403
|
-
When enabled, `WixManageBanner` is a default export with no props. It reads its own configuration,
|
|
404
|
-
links to the site's dashboard, and renders only in preview; it returns null
|
|
405
|
-
when dismissed or while the site id is a placeholder. Mount it once above the header in one fixed
|
|
406
|
-
region; keep the header in flow within that region and offset the content by its measured height
|
|
407
|
-
so dismissal or resizing leaves no gap or overlap. Replace only the example's `Layout` with:
|
|
408
|
-
|
|
409
|
-
```jsx
|
|
410
|
-
import { useRef, useState, useEffect } from "react";
|
|
411
|
-
import WixManageBanner from "@/components/WixManageBanner";
|
|
412
|
-
|
|
413
|
-
function Layout() {
|
|
414
|
-
const topRef = useRef(null);
|
|
415
|
-
const [offset, setOffset] = useState(0);
|
|
416
|
-
useEffect(() => {
|
|
417
|
-
const ro = new ResizeObserver(() => setOffset(topRef.current?.offsetHeight ?? 0));
|
|
418
|
-
if (topRef.current) ro.observe(topRef.current);
|
|
419
|
-
return () => ro.disconnect();
|
|
420
|
-
}, []);
|
|
421
|
-
return (<>
|
|
422
|
-
<div ref={topRef} style={{ position: "fixed", top: 0, left: 0, right: 0, zIndex: 50 }}>
|
|
423
|
-
<WixManageBanner />
|
|
424
|
-
<Header />
|
|
425
|
-
</div>
|
|
426
|
-
<div style={{ paddingTop: offset }}>
|
|
427
|
-
<Outlet />
|
|
428
|
-
<Footer />
|
|
429
|
-
</div>
|
|
430
|
-
<CartDrawer />
|
|
431
|
-
</>);
|
|
432
|
-
}
|
|
433
|
-
```
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
### TanStack Start template — the same pages, mounted as files
|
|
437
|
-
|
|
438
|
-
Chrome (header, footer, the fixed banner region described above) goes in `src/routes/__root.jsx`
|
|
439
|
-
around its `<Outlet/>`, and any provider this vertical asks for wraps that `<Outlet/>` once. Each
|
|
440
|
-
route is a two-line file; shipped pages stay in `src/pages/` untouched.
|
|
441
|
-
|
|
442
|
-
| route | file | component |
|
|
443
|
-
|---|---|---|
|
|
444
|
-
| `/` | `src/routes/index.jsx` | `Home` |
|
|
445
|
-
| `/shop` | `src/routes/shop.jsx` | `Shop` |
|
|
446
|
-
| `/product/:slug` | `src/routes/product.$slug.jsx` | `ProductDetail` |
|
|
447
|
-
|
|
448
|
-
```jsx
|
|
449
|
-
// src/routes/shop.jsx
|
|
450
|
-
import { createFileRoute } from "@tanstack/react-router";
|
|
451
|
-
import Shop from "@/pages/Shop";
|
|
452
|
-
|
|
453
|
-
export const Route = createFileRoute("/shop")({ component: Shop });
|
|
454
|
-
```
|
|
455
|
-
|
|
456
|
-
Path params are `$name` in both the filename and the route path; `useParams()` from `@/lib/nav`
|
|
457
|
-
reads them unchanged. Full pattern, including `ssr: false` for per-user routes:
|
|
458
|
-
[`../_shared/routing.md`](../_shared/routing.md).
|
|
459
|
-
|
|
460
|
-
## Missing capabilities
|
|
461
|
-
For anything these interfaces do not cover, consult the official Wix API documentation using
|
|
462
|
-
the documentation skill available in your environment.
|
|
463
|
-
For a specifically missing field/interface or an observed runtime error, read only the relevant
|
|
464
|
-
shipped file; catalog and cart helpers link their API references inline.
|
|
465
|
-
|
|
466
|
-
## Hard rules
|
|
467
|
-
- Header/footer live in a `Layout` around `<Outlet/>` (see **Routes and provider**) — keep shared chrome out of individual pages.
|
|
468
|
-
- Checkout goes through the shipped cart (redirect-session) — never a hand-built `/checkout` URL.
|
|
469
|
-
- Render live Wix data or your empty state — never mock products, reviews, ratings, or counts.
|
|
470
|
-
- Prices and ribbons come from the hooks as-is: no computed percent-off, no "Sale" badge inferred from a compare-at price, no struck price beside a range.
|
|
471
|
-
- Cart totals come from `summary`/`cart` — never summed or hardcoded in the client; shipping and tax say "calculated at checkout".
|