@wix/agent-skills 1.35.1 → 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-app/references/CODE_QUALITY.md +1 -1
- package/skills/wix-app/references/EDITOR_REACT_COMPONENT.md +27 -29
- package/skills/wix-app/references/editor-react-component/ANIMATED-COMPONENTS.md +1 -1
- package/skills/wix-app/references/editor-react-component/COMPONENT-CONTRACT.md +26 -25
- package/skills/wix-app/references/editor-react-component/CSS-GUIDELINES.md +12 -42
- package/skills/wix-app/references/editor-react-component/DESIGN-STATES.md +9 -20
- package/skills/wix-app/references/editor-react-component/MANIFEST-ERRORS.md +5 -4
- package/skills/wix-app/references/editor-react-component/PARTS.md +1 -1
- package/skills/wix-app/references/editor-react-component/PROPS-VS-CSS.md +1 -1
- package/skills/wix-app/references/editor-react-component/VECTOR-ART.md +95 -0
- package/skills/wix-app/references/editor-react-component/VISUAL-QUALITY.md +39 -0
- package/skills/wix-docs/references/CALLING.md +1 -1
- package/skills/wix-headless-kit/guides/api-run.md +1 -1
- package/skills/wix-headless-kit/install/pins.json +1 -1
- package/skills/wix-headless-templates/blog/seed/seed-blog.mjs +1 -1
- package/skills/wix-headless-templates/donations/app/wix/donations/campaigns.ts +0 -1
- package/skills/wix-headless-templates/donations/app/wix/donations/donate.ts +1 -1
- package/skills/wix-headless-templates/donations/project/src/wix/donations/campaigns.ts +0 -1
- package/skills/wix-headless-templates/donations/project/src/wix/donations/donate.ts +1 -1
- package/skills/wix-headless-templates/donations/rest/campaigns.ts +0 -1
- package/skills/wix-headless-templates/donations/rest/donate.ts +1 -1
- package/skills/wix-headless-templates/events/seed/seed-events.mjs +1 -1
- package/skills/wix-headless-templates/faq/INSTRUCTIONS.md +1 -1
- package/skills/wix-headless-templates/faq/app/wix/faq/faq.ts +2 -2
- package/skills/wix-headless-templates/faq/project/src/wix/faq/faq.ts +2 -2
- package/skills/wix-headless-templates/faq/rest/faq.ts +2 -2
- package/skills/wix-headless-templates/faq/seed/SEED.md +1 -1
- package/skills/wix-headless-templates/faq/seed/read-site.mjs +1 -1
- package/skills/wix-headless-templates/faq/seed/seed-faq.mjs +5 -5
- package/skills/wix-headless-templates/forms/app/wix/forms/forms.ts +2 -2
- package/skills/wix-headless-templates/forms/app/wix/forms/submissions.ts +2 -2
- package/skills/wix-headless-templates/forms/project/src/wix/forms/forms.ts +2 -2
- package/skills/wix-headless-templates/forms/project/src/wix/forms/submissions.ts +2 -2
- package/skills/wix-headless-templates/members/seed/read-site.mjs +1 -1
- package/skills/wix-headless-templates/pricing-plans/app/wix/pricing-plans/plan-access.ts +1 -1
- package/skills/wix-headless-templates/pricing-plans/project/src/wix/pricing-plans/plan-access.ts +1 -1
- package/skills/wix-headless-templates/pricing-plans/rest/plan-access.ts +1 -1
- package/skills/wix-headless-templates/restaurants/app/wix/restaurants/menu.ts +0 -1
- package/skills/wix-headless-templates/restaurants/project/src/wix/restaurants/menu.ts +0 -1
- package/skills/wix-headless-templates/restaurants/rest/menu.ts +0 -1
- package/skills/wix-headless-templates/shared/rest/client.ts +1 -1
- package/skills/wix-headless-templates/shared/seed/site.mjs +2 -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/google-ads/get-campaign-suggestions.md +0 -1
- package/skills/wix-manage/references/google-ads/install-and-create-account.md +0 -1
- 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-manage/references/rich-content/ricos-converter-service.md +1 -1
- 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 -306
- 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,328 +0,0 @@
|
|
|
1
|
-
# Wix Members — ready-made custom-login client
|
|
2
|
-
|
|
3
|
-
The members client is **shipped as real files**, not snippets to regenerate. It's a complete
|
|
4
|
-
**custom login** — email+password sign-up/sign-in, "Continue with Google/Facebook" (and custom SSO),
|
|
5
|
-
a member session, an account area, and route gating — styled with your app's design tokens (base44's
|
|
6
|
-
`src/index.css` — the shadcn palette the design phase already set). Copy it into the app and wire the
|
|
7
|
-
routes — you generate almost none of the auth code (the OAuth state machine, PKCE, the hidden-iframe
|
|
8
|
-
token exchange, and the social `/callback` all ship and are correct).
|
|
9
|
-
|
|
10
|
-
**Custom login only.** The member types credentials in **your own form on your own page** (or clicks
|
|
11
|
-
your own social button) — they are **never redirected to a Wix-hosted login page**. Talks to Wix
|
|
12
|
-
directly over the public `WIX_CLIENT_ID`; login swaps the token set on the one shared client, so
|
|
13
|
-
**every later `wixApiRequest` runs as the member** (their cart, orders, plans, "my …" reads). Never
|
|
14
|
-
mock a logged-in member; never mint a second client after login.
|
|
15
|
-
|
|
16
|
-
## Prerequisites
|
|
17
|
-
- The site's **Wix OAuth app** (headless) is the auth target — members **self-register**, so there is
|
|
18
|
-
**nothing to seed** (see **Seeding** below); the client renders the shipped logged-out state until a
|
|
19
|
-
member signs in.
|
|
20
|
-
- The **Members Area app** installed *only if* you need member **profile** data (name, photo, roles,
|
|
21
|
-
custom fields). Pure "logged-in vs. not" gating needs no app — see **Identity vs. profile** below.
|
|
22
|
-
- The public headless **`WIX_CLIENT_ID`** from your prompt (buyer-facing, safe to hardcode/commit).
|
|
23
|
-
- **OAuth-app allow-listing — the #1 gotcha, a manual owner-only step you can't do from client code.**
|
|
24
|
-
Two *different* fields gate the two mechanisms:
|
|
25
|
-
|
|
26
|
-
| Mechanism | What must be allow-listed | OAuth-app field | On `localhost:4321`? |
|
|
27
|
-
| :-- | :-- | :-- | :-- |
|
|
28
|
-
| **credential** (your form) | your app **origin** (the hidden iframe `postMessage`s the code back) | `allowedRedirectDomains` | ✅ allowed by default |
|
|
29
|
-
| **social / SSO** | the **exact `/callback` URL** (full-page redirect target) | `allowedRedirectUris` | ❌ **must be added** |
|
|
30
|
-
|
|
31
|
-
`localhost:4321` is Wix's default-allowed dev **origin**, so **credential login works there with zero
|
|
32
|
-
setup**; social **still fails** until you add `http://localhost:4321/callback` to `allowedRedirectUris`.
|
|
33
|
-
Any non-default origin (deployed domain, other port) needs both the origin and `<origin>/callback`.
|
|
34
|
-
**Symptoms:** unregistered origin → credential login hangs then throws `MemberAuthError('timeout')`
|
|
35
|
-
(+ a console *"postMessage… target origin does not match"*); unregistered callback → the Wix
|
|
36
|
-
authorize page shows *"Invalid redirect URI"* before returning, so the client can't catch it.
|
|
37
|
-
|
|
38
|
-
> **⚠️ AGENT: surface this proactively.** As soon as a run uses social/SSO (or deploys credential
|
|
39
|
-
> login to a non-`4321` origin), **tell the user the exact URIs to add and where** (deep link under
|
|
40
|
-
> **Point the user to their dashboard**), and note that **social login stays dead until they do it**.
|
|
41
|
-
|
|
42
|
-
## STEP 1 — The client is already in `src/`
|
|
43
|
-
The install step (base44.md STEP 1) deployed the whole members UI client + REST scaffolds into
|
|
44
|
-
`src/` (imports use the `@/` alias → `src/`). Here's every file and what it is — **this is your map,
|
|
45
|
-
so you don't need to open them:**
|
|
46
|
-
|
|
47
|
-
| file | what it is |
|
|
48
|
-
|---|---|
|
|
49
|
-
| `context/MemberContext.jsx` | `useMember()` provider: current member, `loggedIn`, `refresh()`, `logout()` |
|
|
50
|
-
| `hooks/useLoginForm.js` | credential state machine (login/register/verify, error mapping) — logic only |
|
|
51
|
-
| `components/LoginForm.jsx` | email+password form UI (sign-in/sign-up tabs, verify-code + pending phases) |
|
|
52
|
-
| `components/SocialButtons.jsx` | "Continue with Google/Facebook" buttons (kick off the redirect) |
|
|
53
|
-
| `components/MemberMenu.jsx` | header account control — "Log in" vs. member name + log-out (like a cart button) |
|
|
54
|
-
| `components/RequireAuth.jsx` | route gate: renders children for a member, else redirects to `/login` |
|
|
55
|
-
| `components/WixManageBanner.jsx` | preview-only manage banner — drop it into your Layout (STEP 3) |
|
|
56
|
-
| `pages/Login.jsx`, `pages/Account.jsx` | the shipped login + account routes (`/login`, `/account`) |
|
|
57
|
-
| `pages/Callback.jsx` | social/SSO return route — mount at **exactly** `/callback` |
|
|
58
|
-
| `rest/wix-config.js` | the two ids, written by the install step |
|
|
59
|
-
| `rest/wix-client.js` + `rest/wix-members-auth.js` | REST transport + the auth helper (copy verbatim) |
|
|
60
|
-
|
|
61
|
-
They're already in place — go **straight to theming + wiring**, nothing to verify first. **Don't
|
|
62
|
-
`read_file` the shipped page/component/hook source to inspect it** — the table says what each is and
|
|
63
|
-
every shape you need is in the snippets below. Read a shipped file's source **only** on a real
|
|
64
|
-
fallback — a runtime error, or a field the snippets don't cover (see "Fallback only" at the end).
|
|
65
|
-
(Files missing? the install's `deploy` result lists what it wrote; re-run install, or copy
|
|
66
|
-
`references/members/app/` → `src/`.)
|
|
67
|
-
|
|
68
|
-
**Their `Link`/`useParams` imports come from `@/lib/nav`**, so the same sources run on either
|
|
69
|
-
template. That adapter is installed at `src/lib/nav.js` with the rest of the deployed tree — use
|
|
70
|
-
the file that is there, and on TanStack check it first ([which template?](../_shared/routing.md)).
|
|
71
|
-
Import from `@/lib/nav` in the pages you write too, and they stay portable the same way.
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
> **⚠️ Copy `wix-members-auth.js` verbatim — do NOT rewrite its internals.** The OAuth wire shapes are
|
|
75
|
-
> exact and unforgiving: the `createRedirectSession` body needs the `auth.authRequest` wrapper, flat
|
|
76
|
-
> PKCE fields, and `responseType`/`scope` — "simplifying" it returns **400** and login dies. Extend by
|
|
77
|
-
> *calling* the exports, never by editing them. Its full JSDoc (state machine, `profile`, errors) is at
|
|
78
|
-
> the top of the file — read that, not the whole body, if you need the contract.
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
## STEP 2 — Theme
|
|
82
|
-
Use the existing Base44 theme in `src/index.css` so your pages and the shipped components
|
|
83
|
-
share the same colors and typography.
|
|
84
|
-
|
|
85
|
-
## STEP 3 — Wire routes + provider (surgical `find_replace` on `src/App.jsx`, never a rewrite)
|
|
86
|
-
|
|
87
|
-
> **The template decides this step, and `src/routes/__root.jsx` is the question to ask first.**
|
|
88
|
-
> Present → TanStack Start, which mounts these pages as route files at the end of this step; absent
|
|
89
|
-
> → React Router, which the wiring below is written for. Ask in that order: an `src/App.jsx` can
|
|
90
|
-
> exist on a TanStack app because an agent created one, and `__root.jsx` is never there by mistake.
|
|
91
|
-
> The installed `src/lib/nav.js` defaults to the React Router adapter, so on TanStack swap it:
|
|
92
|
-
> [both patterns](../_shared/routing.md).
|
|
93
|
-
>
|
|
94
|
-
> **Import `Link`, `useParams` and friends from `@/lib/nav` in the pages you write too** — same
|
|
95
|
-
> names as the router exports, and nothing you write is pinned to one template.
|
|
96
|
-
|
|
97
|
-
**No file reads needed to wire this.** Every shipped page and `WixManageBanner` is a default export that takes **no props** — wire them exactly as the snippet shows; nothing in those files needs looking up.
|
|
98
|
-
`App.jsx` carries required platform auth scaffolding (`AuthProvider`/`useAuth`, the **Base44 builder
|
|
99
|
-
account**) — edit it in, don't replace it. The Wix member session is separate and ships under its own
|
|
100
|
-
name, **`MemberProvider`/`useMember`**, so the two never collide (do NOT rename it to `useAuth`).
|
|
101
|
-
- Wrap the routed tree in `<MemberProvider>` (from `@/context/MemberContext`).
|
|
102
|
-
- Put your **header + footer in a `Layout`** that renders `<Outlet/>` between them, and nest every
|
|
103
|
-
route under one pathless `<Route element={<Layout/>}>`. Your brand chrome then wraps **every** page
|
|
104
|
-
— including the shipped `Login`/`Account`/`Callback` — so you **never edit the shipped pages to add
|
|
105
|
-
a header/footer** (they render inside `<Outlet/>` as-is).
|
|
106
|
-
- **Pin the top chrome as one fixed block.** Put `<WixManageBanner/>` (shipped, preview-only) **above**
|
|
107
|
-
your `<Header/>` inside a single `position:fixed` top region — the header itself is plain in-flow
|
|
108
|
-
markup, the region owns the fixing — so banner + header ride together (no scroll drift/gap). Pad
|
|
109
|
-
the content by the region's measured height so it clears the chrome and self-corrects when the
|
|
110
|
-
banner is dismissed.
|
|
111
|
-
- Routes under the Layout: `/login` → `Login`, `/callback` → `Callback` (both shipped, as-is), and
|
|
112
|
-
`/account` → `Account` **wrapped in `<RequireAuth>`** so a visitor is bounced to `/login`. **You add
|
|
113
|
-
`/` → your own Home** page. Gate your own member-only routes ("my orders", "my plans") the same way.
|
|
114
|
-
|
|
115
|
-
```jsx
|
|
116
|
-
import { useRef, useState, useEffect } from "react";
|
|
117
|
-
import { Routes, Route, Outlet } from "react-router-dom";
|
|
118
|
-
import { MemberProvider } from "@/context/MemberContext";
|
|
119
|
-
import WixManageBanner from "@/components/WixManageBanner"; // shipped, preview-only · default export, no props
|
|
120
|
-
import RequireAuth from "@/components/RequireAuth"; // shipped route gate
|
|
121
|
-
import Login from "@/pages/Login"; // shipped · default export, no props
|
|
122
|
-
import Account from "@/pages/Account"; // shipped · default export, no props
|
|
123
|
-
import Callback from "@/pages/Callback"; // shipped · default export, no props
|
|
124
|
-
import Home from "@/pages/Home"; // YOU build
|
|
125
|
-
import Header from "@/components/Header"; // YOU build — plain in-flow markup, NOT position:fixed
|
|
126
|
-
import Footer from "@/components/Footer"; // YOU build
|
|
127
|
-
|
|
128
|
-
function Layout() {
|
|
129
|
-
const topRef = useRef(null);
|
|
130
|
-
const [offset, setOffset] = useState(0);
|
|
131
|
-
useEffect(() => { // measure the fixed region → pad content below it
|
|
132
|
-
const ro = new ResizeObserver(() => setOffset(topRef.current?.offsetHeight ?? 0));
|
|
133
|
-
if (topRef.current) ro.observe(topRef.current);
|
|
134
|
-
return () => ro.disconnect();
|
|
135
|
-
}, []);
|
|
136
|
-
return (<>
|
|
137
|
-
<div ref={topRef} style={{ position: "fixed", top: 0, left: 0, right: 0, zIndex: 50 }}>
|
|
138
|
-
<WixManageBanner /> {/* null on the published site / when dismissed */}
|
|
139
|
-
<Header /> {/* your brand header, in-flow inside this fixed block */}
|
|
140
|
-
</div>
|
|
141
|
-
<div style={{ paddingTop: offset }}> {/* clears the chrome; shrinks when the banner is dismissed */}
|
|
142
|
-
<Outlet /> {/* shipped Login/Account/Callback render here, untouched */}
|
|
143
|
-
<Footer />
|
|
144
|
-
</div>
|
|
145
|
-
</>);
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
<MemberProvider>
|
|
149
|
-
<Routes>
|
|
150
|
-
<Route element={<Layout />}> {/* chrome wraps all */}
|
|
151
|
-
<Route path="/" element={<Home />} /> {/* yours */}
|
|
152
|
-
<Route path="/login" element={<Login />} /> {/* shipped, as-is */}
|
|
153
|
-
<Route path="/callback" element={<Callback />} /> {/* shipped — must be /callback */}
|
|
154
|
-
<Route path="/account" element={<RequireAuth><Account /></RequireAuth>} /> {/* gated, shipped */}
|
|
155
|
-
</Route>
|
|
156
|
-
</Routes>
|
|
157
|
-
</MemberProvider>
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
### TanStack Start template — the same pages, mounted as files
|
|
162
|
-
|
|
163
|
-
Chrome (header, footer, the fixed banner region described above) goes in `src/routes/__root.jsx`
|
|
164
|
-
around its `<Outlet/>`, and any provider this vertical asks for wraps that `<Outlet/>` once. Each
|
|
165
|
-
route is a two-line file; shipped pages stay in `src/pages/` untouched.
|
|
166
|
-
|
|
167
|
-
| route | file | component |
|
|
168
|
-
|---|---|---|
|
|
169
|
-
| `/` | `src/routes/index.jsx` | `Home` |
|
|
170
|
-
| `/login` | `src/routes/login.jsx` | `Login` |
|
|
171
|
-
| `/callback` | `src/routes/callback.jsx` | `Callback` |
|
|
172
|
-
|
|
173
|
-
```jsx
|
|
174
|
-
// src/routes/login.jsx
|
|
175
|
-
import { createFileRoute } from "@tanstack/react-router";
|
|
176
|
-
import Login from "@/pages/Login";
|
|
177
|
-
|
|
178
|
-
export const Route = createFileRoute("/login")({ component: Login });
|
|
179
|
-
```
|
|
180
|
-
|
|
181
|
-
Path params are `$name` in both the filename and the route path; `useParams()` from `@/lib/nav`
|
|
182
|
-
reads them unchanged. Full pattern, including `ssr: false` for per-user routes:
|
|
183
|
-
[`../_shared/routing.md`](../_shared/routing.md).
|
|
184
|
-
|
|
185
|
-
## What you build (not shipped)
|
|
186
|
-
The **home / landing page**, the **`Header`** (mount `<MemberMenu/>` in it) and a **`Footer`** — the
|
|
187
|
-
two you drop into the `Layout` (STEP 3) so they wrap every route — plus the overall brand story,
|
|
188
|
-
styled from the same base44 tokens/classes. The nav's account control is a `<MemberMenu/>` (shows
|
|
189
|
-
"Log in" for a visitor, the member's name + log-out once signed in — render it as-is, don't wrap it in
|
|
190
|
-
your own auth text button):
|
|
191
|
-
|
|
192
|
-
```jsx
|
|
193
|
-
import { useState, useEffect } from "react";
|
|
194
|
-
import { Link } from "react-router-dom";
|
|
195
|
-
import MemberMenu from "@/components/MemberMenu";
|
|
196
|
-
|
|
197
|
-
// Responsive header: choose ONE branch with a state flag, so <MemberMenu/> mounts once.
|
|
198
|
-
// Do NOT render a desktop nav AND a mobile nav toggled by `hidden md:flex` / `md:hidden`:
|
|
199
|
-
// these navs are inline-styled, and an inline `display` beats a Tailwind class, so `hidden`
|
|
200
|
-
// never applies — BOTH branches render and you get two menus. One branch = one menu.
|
|
201
|
-
export function Header() {
|
|
202
|
-
const [mobile, setMobile] = useState(() => window.innerWidth < 768);
|
|
203
|
-
useEffect(() => {
|
|
204
|
-
const onResize = () => setMobile(window.innerWidth < 768);
|
|
205
|
-
window.addEventListener("resize", onResize); // keep it reactive to viewport changes
|
|
206
|
-
return () => window.removeEventListener("resize", onResize);
|
|
207
|
-
}, []);
|
|
208
|
-
return (
|
|
209
|
-
<nav style={{ display: "flex", alignItems: "center", justifyContent: "space-between" }}>
|
|
210
|
-
{/* brand/logo */}
|
|
211
|
-
{mobile
|
|
212
|
-
? <YourMenu /> // your hamburger + <MemberMenu/> here
|
|
213
|
-
: <div style={{ display: "flex", gap: 24 }}><Link to="/">Home</Link><MemberMenu /></div>}
|
|
214
|
-
</nav>
|
|
215
|
-
);
|
|
216
|
-
}
|
|
217
|
-
```
|
|
218
|
-
Everything visual reads base44's design tokens (`index.css`), so your home/nav match the shipped pages automatically.
|
|
219
|
-
|
|
220
|
-
**Editing a component and the change doesn't show? It's the preview, not your code.** The dev preview
|
|
221
|
-
can serve a stale module after a write. Before diagnosing a visual bug you just "fixed", do a fresh
|
|
222
|
-
full navigate/reload of the preview and re-check — don't keep rewriting correct code against a stale
|
|
223
|
-
render.
|
|
224
|
-
|
|
225
|
-
## Using the client from your own UI (session, gating, "my …" reads)
|
|
226
|
-
|
|
227
|
-
```jsx
|
|
228
|
-
import { useMember } from "@/context/MemberContext";
|
|
229
|
-
|
|
230
|
-
// useMember() gives:
|
|
231
|
-
// { member, loggedIn, loading, refresh(), logout(returnTo?) }
|
|
232
|
-
// - member is null for a visitor OR when the Members Area app isn't installed (loggedIn still true).
|
|
233
|
-
// - login/register happen in the shipped LoginForm; call refresh() after your own login call.
|
|
234
|
-
|
|
235
|
-
function Greeting() {
|
|
236
|
-
const { loggedIn, member, loading } = useMember();
|
|
237
|
-
if (loading) return null;
|
|
238
|
-
return loggedIn ? <span>Hi, {member?.profile?.nickname || "member"}</span> : <a href="/login">Log in</a>;
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
// A member-only read runs as the member on the SAME shared client — no extra auth, no `elevate`:
|
|
242
|
-
import { wixApiRequest } from "@/rest/wix-client";
|
|
243
|
-
const { orders } = await wixApiRequest("/ecom/v1/orders/query", { body: { query: {} } }); // member's own
|
|
244
|
-
```
|
|
245
|
-
|
|
246
|
-
**"My items" in a CMS collection** (member-owned rows) → the **OWNED RECORDS** recipe in
|
|
247
|
-
`references/cms/INSTRUCTIONS.md`. Two facts from this vertical carry over: the member id lives at
|
|
248
|
-
**`member.id`**, and `member` is `null` for a logged-in member whenever the Members Area app is absent
|
|
249
|
-
(see *Identity vs. profile* below). Because of that second one, prefer a collection seeded
|
|
250
|
-
`read: SITE_MEMBER_AUTHOR` — the server scopes reads by the caller's own token, so it works in both states.
|
|
251
|
-
|
|
252
|
-
## Extending the client — the auth helper's exports (copy as-is, do NOT re-derive)
|
|
253
|
-
Building auth UI beyond the shipped pages? Call these exports (from `@/rest/wix-members-auth`) — the
|
|
254
|
-
same ones the shipped hook/pages use:
|
|
255
|
-
|
|
256
|
-
```js
|
|
257
|
-
// (A) Credential — handle EVERY branch, not just SUCCESS. register/login/verifyEmail → { state, ... }:
|
|
258
|
-
import { login, register, verifyEmail, MemberAuthError } from "@/rest/wix-members-auth";
|
|
259
|
-
try {
|
|
260
|
-
const res = await login(email, password);
|
|
261
|
-
if (res.state === "SUCCESS") { /* logged in; res.member (or null w/o Members Area app) */ }
|
|
262
|
-
else if (res.state === "REQUIRE_EMAIL_VERIFICATION") { /* 6-digit code emailed; verifyEmail(code, res.stateToken) */ }
|
|
263
|
-
else if (res.state === "REQUIRE_OWNER_APPROVAL") { /* show a pending notice — not an error */ }
|
|
264
|
-
} catch (e) {
|
|
265
|
-
if (e instanceof MemberAuthError) show(e.message); else throw e; // .code: invalidCredentials, emailAlreadyExists, …
|
|
266
|
-
}
|
|
267
|
-
// Custom sign-up fields → register's 3rd arg `profile` ({ firstName, lastName, nickname, addresses, … }).
|
|
268
|
-
// Arbitrary customFields keys must be defined in the Members Area app first, or they're silently dropped.
|
|
269
|
-
|
|
270
|
-
// (B) Social / SSO — button + the shipped /callback page:
|
|
271
|
-
import { startSocialLogin, IDP } from "@/rest/wix-members-auth";
|
|
272
|
-
const callbackUri = new URL("/callback", window.location.origin).href; // must be allow-listed
|
|
273
|
-
startSocialLogin(IDP.GOOGLE, callbackUri, window.location.pathname); // custom SSO: pass a connectionId as idp
|
|
274
|
-
```
|
|
275
|
-
|
|
276
|
-
Every export in `wix-members-auth.js` links its own reference page inline. The two areas they sit in
|
|
277
|
-
map onto the identity / profile split below — auth is the headless OAuth app, the profile is the
|
|
278
|
-
Members Area app:
|
|
279
|
-
- Headless authentication (login, register, verify, tokens): https://dev.wix.com/docs/api-reference/business-management/headless/authentication.md
|
|
280
|
-
- Headless redirects (social/SSO + logout): https://dev.wix.com/docs/api-reference/business-management/headless/redirects.md
|
|
281
|
-
- Members (the member profile, needs the Members Area app): https://dev.wix.com/docs/api-reference/crm/members-contacts/members.md
|
|
282
|
-
|
|
283
|
-
## Identity vs. profile — don't conflate them
|
|
284
|
-
- **Identity / auth** — sign up, log in, log out, "is this caller a member?". Native to the headless
|
|
285
|
-
OAuth app. **No app install needed** — every login mechanism here runs on this layer alone.
|
|
286
|
-
- **Member profile / Members Area** — name / photo / roles, an account page, custom-field definitions.
|
|
287
|
-
Served by the **Members Area app**, which must be installed. If `getCurrentMember()`/`useMember().member`
|
|
288
|
-
is `null` while `loggedIn` is `true`, suspect the app isn't installed — **not a code bug**.
|
|
289
|
-
|
|
290
|
-
Fallback only — when you hit an error or need something not shown here (password reset, custom SSO
|
|
291
|
-
connection ids, a profile field these snippets don't have): read the relevant shipped file under
|
|
292
|
-
`src/rest/`, or look it up via the documentation skill available in your environment.
|
|
293
|
-
|
|
294
|
-
## Hard rules
|
|
295
|
-
- **Custom login only** — the member logs in on **your** UI; never redirect them to a Wix-hosted login page.
|
|
296
|
-
- **One shared client** — login swaps the token set on `wix-client.js`; reuse it for everything so the
|
|
297
|
-
member identity carries across the app. Never mint a second client or re-mint anonymously after login.
|
|
298
|
-
- Copy `wix-members-auth.js` verbatim; extend by *calling* its exports, never by editing them.
|
|
299
|
-
- Header/footer live in a `Layout` around `<Outlet/>` (STEP 3) — never edit the shipped `Login`/`Account`/`Callback` to add chrome; the fixed top region owns positioning (`<WixManageBanner/>` above a plain in-flow `<Header/>`).
|
|
300
|
-
- **Never fake a member** — no mock logged-in state, invented profile, or roles. Render the real member or the real logged-out state.
|
|
301
|
-
- **Fail loudly** — the helper throws `MemberAuthError`; surface `.message`, don't swallow it.
|
|
302
|
-
- No `elevate` / admin scope, and no headless MFA/TOTP — those security layers are dashboard-governed.
|
|
303
|
-
|
|
304
|
-
## Point the user to their dashboard
|
|
305
|
-
Some setup only happens in the Wix dashboard — always give the user the deep links (substitute the
|
|
306
|
-
site's `metaSiteId` from the handoff / `ListWixSites`):
|
|
307
|
-
- **Allowed authorization redirect URIs** (the #1 gotcha) — `https://manage.wix.com/dashboard/{metaSiteId}/oauth-apps-settings`.
|
|
308
|
-
Add the **app origin** (for credential login off `localhost:4321`) and the **exact `/callback` URL**
|
|
309
|
-
(for social/SSO) — character-for-character matching your `startSocialLogin` `callbackUri`.
|
|
310
|
-
- **Members Area app** (profile data + custom fields) — `https://manage.wix.com/dashboard/{metaSiteId}/member-permissions`
|
|
311
|
-
- **Signup security** (email verification, owner approval, reCAPTCHA) — `Dashboard → Settings → Login & Security`
|
|
312
|
-
- **Custom SSO connection** (to obtain a `connectionId`) — the project's IAM / SSO settings in the Business Manager.
|
|
313
|
-
|
|
314
|
-
## Seeding
|
|
315
|
-
**Nothing to seed** — members self-register; there is no build-time member to create. See
|
|
316
|
-
`seed/SEED.md` (separate from this client build; the members work is entirely frontend wiring).
|
|
317
|
-
|
|
318
|
-
## Verify (before declaring done)
|
|
319
|
-
- [ ] Client files copied into `src/`; `WIX_CLIENT_ID` set (not the placeholder).
|
|
320
|
-
- [ ] Opened the vertical's data route(s) (not just the home page) — `/login` and `/account` — and confirmed the shipped components render themed (surface, text, brand) with images.
|
|
321
|
-
- [ ] `Layout` (fixed `<WixManageBanner/>` + `<Header/>` region, then `<Outlet/>` + Footer) wraps all routes; shipped `Login`/`Account`/`Callback` untouched; content clears the fixed chrome; `<MemberProvider>` wraps the tree; `<MemberMenu/>` in the header.
|
|
322
|
-
- [ ] Sign-up: `register()` reaches `SUCCESS` (or `REQUIRE_EMAIL_VERIFICATION` handled via the code entry).
|
|
323
|
-
- [ ] Log-in: `login()` reaches `SUCCESS`; wrong password shows `invalidCredentials`, not a crash.
|
|
324
|
-
- [ ] After login `useMember().loggedIn` is `true`; `/account` renders the member (or the identity-only fallback with the Members Area app not installed — documented, not a bug). `/account` bounces a visitor to `/login`.
|
|
325
|
-
- [ ] Session survives reload (same client); logout clears it and the next load is a clean anonymous visitor.
|
|
326
|
-
- [ ] Social: the button redirects to the provider and `/callback` logs the member in (callback URL allow-listed), or is flagged as pending host setup.
|
|
327
|
-
- [ ] No mocked member state, profile, or roles anywhere.
|
|
328
|
-
- [ ] Told the user about any required dashboard setup (allowed redirect URIs, Members Area app) with deep links.
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
// Credential login/sign-up form — a thin view over useLoginForm (all logic lives in the hook).
|
|
2
|
-
// Styled with base44 design tokens (shadcn Tailwind classes); don't rewrite this JSX. Renders one of
|
|
3
|
-
// three phases the hook drives: the email/password form, the 6-digit verification-code entry, or a
|
|
4
|
-
// pending-approval notice.
|
|
5
|
-
import { useLoginForm } from "@/hooks/useLoginForm";
|
|
6
|
-
|
|
7
|
-
const inputCls =
|
|
8
|
-
"w-full py-[11px] px-3 box-border text-[15px] border border-input rounded-sm bg-background text-foreground";
|
|
9
|
-
const labelCls = "block text-[13px] text-muted-foreground mb-1.5";
|
|
10
|
-
|
|
11
|
-
export default function LoginForm({ onSuccess }) {
|
|
12
|
-
const f = useLoginForm({ onSuccess });
|
|
13
|
-
|
|
14
|
-
if (f.phase === "pending") {
|
|
15
|
-
return <Notice>Your account is awaiting owner approval. You'll be able to sign in once it's approved.</Notice>;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
if (f.phase === "verify") {
|
|
19
|
-
return (
|
|
20
|
-
<form onSubmit={f.submitCode} className={formCls}>
|
|
21
|
-
<p className="text-muted-foreground m-0 leading-normal">
|
|
22
|
-
We emailed you a 6-digit code. Enter it to finish.
|
|
23
|
-
</p>
|
|
24
|
-
<div>
|
|
25
|
-
<label className={labelCls} htmlFor="mf-code">Verification code</label>
|
|
26
|
-
<input id="mf-code" className={inputCls} inputMode="numeric" autoComplete="one-time-code"
|
|
27
|
-
value={f.code} onChange={(e) => f.setCode(e.target.value)} />
|
|
28
|
-
</div>
|
|
29
|
-
{f.error && <ErrorText>{f.error}</ErrorText>}
|
|
30
|
-
<SubmitButton busy={f.busy}>Verify</SubmitButton>
|
|
31
|
-
</form>
|
|
32
|
-
);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
return (
|
|
36
|
-
<form onSubmit={f.submit} className={formCls}>
|
|
37
|
-
<div className="flex gap-2">
|
|
38
|
-
<ModeTab active={f.mode === "login"} onClick={() => f.switchMode("login")}>Sign in</ModeTab>
|
|
39
|
-
<ModeTab active={f.mode === "register"} onClick={() => f.switchMode("register")}>Sign up</ModeTab>
|
|
40
|
-
</div>
|
|
41
|
-
|
|
42
|
-
{f.mode === "register" && (
|
|
43
|
-
<div className="flex gap-3">
|
|
44
|
-
<div className="flex-1">
|
|
45
|
-
<label className={labelCls} htmlFor="mf-first">First name</label>
|
|
46
|
-
<input id="mf-first" className={inputCls} value={f.fields.firstName}
|
|
47
|
-
onChange={(e) => f.setField("firstName", e.target.value)} />
|
|
48
|
-
</div>
|
|
49
|
-
<div className="flex-1">
|
|
50
|
-
<label className={labelCls} htmlFor="mf-last">Last name</label>
|
|
51
|
-
<input id="mf-last" className={inputCls} value={f.fields.lastName}
|
|
52
|
-
onChange={(e) => f.setField("lastName", e.target.value)} />
|
|
53
|
-
</div>
|
|
54
|
-
</div>
|
|
55
|
-
)}
|
|
56
|
-
|
|
57
|
-
<div>
|
|
58
|
-
<label className={labelCls} htmlFor="mf-email">Email</label>
|
|
59
|
-
<input id="mf-email" type="email" autoComplete="email" required className={inputCls}
|
|
60
|
-
value={f.fields.email} onChange={(e) => f.setField("email", e.target.value)} />
|
|
61
|
-
</div>
|
|
62
|
-
<div>
|
|
63
|
-
<label className={labelCls} htmlFor="mf-pass">Password</label>
|
|
64
|
-
<input id="mf-pass" type="password" required className={inputCls}
|
|
65
|
-
autoComplete={f.mode === "register" ? "new-password" : "current-password"}
|
|
66
|
-
value={f.fields.password} onChange={(e) => f.setField("password", e.target.value)} />
|
|
67
|
-
</div>
|
|
68
|
-
|
|
69
|
-
{f.error && <ErrorText>{f.error}</ErrorText>}
|
|
70
|
-
<SubmitButton busy={f.busy}>{f.mode === "register" ? "Create account" : "Sign in"}</SubmitButton>
|
|
71
|
-
</form>
|
|
72
|
-
);
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
const formCls = "flex flex-col gap-4";
|
|
76
|
-
|
|
77
|
-
function ModeTab({ active, onClick, children }) {
|
|
78
|
-
return (
|
|
79
|
-
<button type="button" onClick={onClick}
|
|
80
|
-
className={`flex-1 py-2 px-0 cursor-pointer text-sm font-semibold border border-border rounded-sm ${active ? "bg-card text-foreground" : "bg-transparent text-muted-foreground"}`}
|
|
81
|
-
>{children}</button>
|
|
82
|
-
);
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
function SubmitButton({ busy, children }) {
|
|
86
|
-
return (
|
|
87
|
-
<button type="submit" disabled={busy}
|
|
88
|
-
className="px-6 py-3 cursor-pointer bg-primary text-primary-foreground border-none rounded-sm text-[15px] font-semibold disabled:opacity-50 disabled:cursor-not-allowed"
|
|
89
|
-
>{busy ? "…" : children}</button>
|
|
90
|
-
);
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
function ErrorText({ children }) {
|
|
94
|
-
return <p role="alert" className="text-destructive m-0 text-sm">{children}</p>;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
function Notice({ children }) {
|
|
98
|
-
return (
|
|
99
|
-
<p className="p-4 bg-card text-foreground border border-border rounded-lg leading-normal m-0">{children}</p>
|
|
100
|
-
);
|
|
101
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
// Header account control — the members analog of a cart button. Reads useMember() and renders the
|
|
2
|
-
// session state: a "Log in" link for a visitor, or the member's name + a log-out button once signed
|
|
3
|
-
// in. Drop it into the Header you build (STEP 4), same as the storefront's CartButton. Pure UI reading
|
|
4
|
-
// useMember + base44 design tokens (shadcn Tailwind classes) — render it as-is; don't wrap it in your own auth logic.
|
|
5
|
-
import { Link } from "@/lib/nav";
|
|
6
|
-
import { useMember } from "@/context/MemberContext";
|
|
7
|
-
|
|
8
|
-
export default function MemberMenu() {
|
|
9
|
-
const { loggedIn, member, loading, logout } = useMember();
|
|
10
|
-
|
|
11
|
-
if (loading) return <span className="text-muted-foreground text-sm">…</span>;
|
|
12
|
-
|
|
13
|
-
if (!loggedIn) {
|
|
14
|
-
return (
|
|
15
|
-
<Link to="/login" className="text-primary no-underline text-sm font-semibold">Log in</Link>
|
|
16
|
-
);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
// member may be null when logged in but the Members Area app isn't installed — fall back to a
|
|
20
|
-
// generic label rather than assuming a profile (see INSTRUCTIONS → identity vs. profile).
|
|
21
|
-
const name = member?.profile?.nickname || member?.contact?.firstName || member?.loginEmail || "Account";
|
|
22
|
-
|
|
23
|
-
return (
|
|
24
|
-
<div className="flex items-center gap-3">
|
|
25
|
-
<Link to="/account" className="text-foreground no-underline text-sm font-semibold">
|
|
26
|
-
{name}
|
|
27
|
-
</Link>
|
|
28
|
-
<button type="button" onClick={() => logout()}
|
|
29
|
-
className="bg-transparent border border-border rounded-full py-1 px-3 text-[13px] cursor-pointer text-muted-foreground"
|
|
30
|
-
>Log out</button>
|
|
31
|
-
</div>
|
|
32
|
-
);
|
|
33
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
// Route gate for member-only surfaces. Wrap any protected element in <RequireAuth> — it renders the
|
|
2
|
-
// children only for a logged-in member, otherwise redirects to /login (carrying the attempted path so
|
|
3
|
-
// login can return there). This is the gate the shipped Account page uses; reuse it for your own
|
|
4
|
-
// member-only routes ("my orders", "my plans", …). Reads useMember; no styling of its own.
|
|
5
|
-
import { Navigate, useLocation } from "@/lib/nav";
|
|
6
|
-
import { useMember } from "@/context/MemberContext";
|
|
7
|
-
|
|
8
|
-
export default function RequireAuth({ children, fallback = "/login" }) {
|
|
9
|
-
const { loggedIn, loading } = useMember();
|
|
10
|
-
const location = useLocation();
|
|
11
|
-
|
|
12
|
-
// Wait for the initial session read before deciding — otherwise a logged-in member gets bounced to
|
|
13
|
-
// /login on first paint while the token check is still resolving.
|
|
14
|
-
if (loading) {
|
|
15
|
-
return <div className="p-12 text-center text-muted-foreground">Loading…</div>;
|
|
16
|
-
}
|
|
17
|
-
if (!loggedIn) {
|
|
18
|
-
return <Navigate to={fallback} replace state={{ from: location.pathname }} />;
|
|
19
|
-
}
|
|
20
|
-
return children;
|
|
21
|
-
}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
// "Continue with Google / Facebook" buttons. Social/SSO is a FULL-PAGE redirect: this kicks it off
|
|
2
|
-
// with startSocialLogin, which sends the browser to the provider and returns to your /callback route
|
|
3
|
-
// (mount Callback there). callbackUri MUST be allow-listed on the OAuth app or Wix rejects it before
|
|
4
|
-
// returning — see INSTRUCTIONS (allowedRedirectUris). Styled with base44 design tokens (shadcn Tailwind classes).
|
|
5
|
-
import { startSocialLogin, IDP } from "@/rest/wix-members-auth";
|
|
6
|
-
|
|
7
|
-
// The exact /callback URL that must be registered as an allowed redirect URI. `returnTo` is where
|
|
8
|
-
// the member lands after login — carry the current path so they resume where they started.
|
|
9
|
-
function go(idp) {
|
|
10
|
-
const callbackUri = new URL("/callback", window.location.origin).href;
|
|
11
|
-
startSocialLogin(idp, callbackUri, window.location.pathname);
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export default function SocialButtons() {
|
|
15
|
-
return (
|
|
16
|
-
<div className="flex flex-col gap-2.5">
|
|
17
|
-
<ProviderButton onClick={() => go(IDP.GOOGLE)}>Continue with Google</ProviderButton>
|
|
18
|
-
<ProviderButton onClick={() => go(IDP.FACEBOOK)}>Continue with Facebook</ProviderButton>
|
|
19
|
-
</div>
|
|
20
|
-
);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
function ProviderButton({ onClick, children }) {
|
|
24
|
-
return (
|
|
25
|
-
<button type="button" onClick={onClick}
|
|
26
|
-
className="w-full py-[11px] px-4 cursor-pointer text-[15px] font-semibold bg-background text-foreground border border-border rounded-sm"
|
|
27
|
-
>{children}</button>
|
|
28
|
-
);
|
|
29
|
-
}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
// Member auth state — mirrors the Wix SESSION on the shared client (never a local guess). Wrap the
|
|
2
|
-
// app in <MemberProvider>; every component reads useMember(). Login mechanisms (credential/social)
|
|
3
|
-
// write member tokens onto @/rest/wix-client via the auth helper; this provider reads that session
|
|
4
|
-
// and exposes the current member + logout. Data wiring is correct as-is — do not re-derive it.
|
|
5
|
-
//
|
|
6
|
-
// NAMED useMember (not useAuth) ON PURPOSE: the Base44 App.jsx already ships a platform
|
|
7
|
-
// AuthProvider/useAuth for the builder account — a second `useAuth` would shadow it. This is the
|
|
8
|
-
// WIX member session, kept under its own name so the two never collide.
|
|
9
|
-
import { createContext, useContext, useState, useEffect, useCallback } from "react";
|
|
10
|
-
import { isLoggedIn, getCurrentMember, logout as apiLogout } from "@/rest/wix-members-auth";
|
|
11
|
-
|
|
12
|
-
const MemberContext = createContext(null);
|
|
13
|
-
|
|
14
|
-
export function MemberProvider({ children }) {
|
|
15
|
-
const [member, setMember] = useState(null);
|
|
16
|
-
const [loggedIn, setLoggedIn] = useState(false);
|
|
17
|
-
const [loading, setLoading] = useState(true);
|
|
18
|
-
|
|
19
|
-
// Re-read the session from the shared client. Call after a successful login so the header/account
|
|
20
|
-
// update without a reload. `member` stays null (with loggedIn true) when the Members Area app
|
|
21
|
-
// isn't installed — that's setup, not a bug (see INSTRUCTIONS → identity vs. profile).
|
|
22
|
-
const refresh = useCallback(async () => {
|
|
23
|
-
setLoading(true);
|
|
24
|
-
try {
|
|
25
|
-
const active = isLoggedIn();
|
|
26
|
-
setLoggedIn(active);
|
|
27
|
-
setMember(active ? await getCurrentMember() : null);
|
|
28
|
-
} finally {
|
|
29
|
-
setLoading(false);
|
|
30
|
-
}
|
|
31
|
-
}, []);
|
|
32
|
-
|
|
33
|
-
useEffect(() => { refresh(); }, [refresh]);
|
|
34
|
-
|
|
35
|
-
// logout() clears local tokens then redirects through the Wix logout URL, so it navigates away;
|
|
36
|
-
// we still reset local state first for the instant before the redirect lands.
|
|
37
|
-
const logout = useCallback(async (returnTo) => {
|
|
38
|
-
setMember(null);
|
|
39
|
-
setLoggedIn(false);
|
|
40
|
-
await apiLogout(returnTo);
|
|
41
|
-
}, []);
|
|
42
|
-
|
|
43
|
-
return (
|
|
44
|
-
<MemberContext.Provider value={{ member, loggedIn, loading, refresh, logout }}>
|
|
45
|
-
{children}
|
|
46
|
-
</MemberContext.Provider>
|
|
47
|
-
);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
export function useMember() {
|
|
51
|
-
const ctx = useContext(MemberContext);
|
|
52
|
-
if (!ctx) throw new Error("useMember must be used within <MemberProvider>");
|
|
53
|
-
return ctx;
|
|
54
|
-
}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
// useLoginForm — all credential-auth logic, no markup: hold the form fields, run login/register,
|
|
2
|
-
// and DRIVE THE STATE MACHINE. register()/login()/verifyEmail() resolve to { state, member?,
|
|
3
|
-
// stateToken? }; SUCCESS is only one of the branches. Handling every branch (email verification,
|
|
4
|
-
// owner approval) and mapping MemberAuthError to a message is the bug-prone part — keep it verbatim;
|
|
5
|
-
// the LoginForm component only renders what this returns. Social/SSO does NOT go through here (it's
|
|
6
|
-
// a full-page redirect — see SocialButtons + the /callback page).
|
|
7
|
-
import { useState } from "react";
|
|
8
|
-
import { login, register, verifyEmail, MemberAuthError } from "@/rest/wix-members-auth";
|
|
9
|
-
import { useMember } from "@/context/MemberContext";
|
|
10
|
-
|
|
11
|
-
export function useLoginForm({ onSuccess } = {}) {
|
|
12
|
-
const { refresh } = useMember();
|
|
13
|
-
const [mode, setMode] = useState("login"); // "login" | "register"
|
|
14
|
-
const [fields, setFields] = useState({ email: "", password: "", firstName: "", lastName: "" });
|
|
15
|
-
// phase drives which UI shows: the form, the 6-digit code entry, or a pending-approval notice.
|
|
16
|
-
const [phase, setPhase] = useState("form"); // "form" | "verify" | "pending"
|
|
17
|
-
const [stateToken, setStateToken] = useState(null);
|
|
18
|
-
const [code, setCode] = useState("");
|
|
19
|
-
const [error, setError] = useState(null);
|
|
20
|
-
const [busy, setBusy] = useState(false);
|
|
21
|
-
|
|
22
|
-
const setField = (name, value) => setFields((f) => ({ ...f, [name]: value }));
|
|
23
|
-
|
|
24
|
-
// Route a resolved { state } to the right phase. On SUCCESS refresh the member session (so the
|
|
25
|
-
// header/account update) and hand control back to the caller (navigate away).
|
|
26
|
-
async function applyResult(res) {
|
|
27
|
-
if (res.state === "SUCCESS") {
|
|
28
|
-
await refresh();
|
|
29
|
-
onSuccess?.(res.member);
|
|
30
|
-
} else if (res.state === "REQUIRE_EMAIL_VERIFICATION") {
|
|
31
|
-
setStateToken(res.stateToken);
|
|
32
|
-
setPhase("verify");
|
|
33
|
-
} else if (res.state === "REQUIRE_OWNER_APPROVAL") {
|
|
34
|
-
setPhase("pending");
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
// Wrap a helper call: clear the error, flip busy, map MemberAuthError to a shown message.
|
|
39
|
-
// emailAlreadyExists on register → bounce the user to the login tab instead of erroring out.
|
|
40
|
-
async function run(fn) {
|
|
41
|
-
setError(null);
|
|
42
|
-
setBusy(true);
|
|
43
|
-
try {
|
|
44
|
-
await applyResult(await fn());
|
|
45
|
-
} catch (e) {
|
|
46
|
-
if (e instanceof MemberAuthError) {
|
|
47
|
-
if (e.code === "emailAlreadyExists") { setMode("login"); setError(e.message); }
|
|
48
|
-
else setError(e.message);
|
|
49
|
-
} else throw e;
|
|
50
|
-
} finally {
|
|
51
|
-
setBusy(false);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
const submit = (e) => {
|
|
56
|
-
e?.preventDefault?.();
|
|
57
|
-
const { email, password, firstName, lastName } = fields;
|
|
58
|
-
if (mode === "register") {
|
|
59
|
-
const profile = (firstName || lastName) ? { firstName, lastName } : undefined;
|
|
60
|
-
return run(() => register(email, password, profile));
|
|
61
|
-
}
|
|
62
|
-
return run(() => login(email, password));
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
const submitCode = (e) => {
|
|
66
|
-
e?.preventDefault?.();
|
|
67
|
-
return run(() => verifyEmail(code, stateToken));
|
|
68
|
-
};
|
|
69
|
-
|
|
70
|
-
const switchMode = (next) => { setMode(next); setError(null); };
|
|
71
|
-
|
|
72
|
-
return {
|
|
73
|
-
mode, switchMode, fields, setField,
|
|
74
|
-
phase, code, setCode,
|
|
75
|
-
error, busy, submit, submitCode,
|
|
76
|
-
};
|
|
77
|
-
}
|