@wix/agent-skills 1.36.0 → 1.36.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +8 -3
- package/skills/wix-headless-kit/install/pins.json +1 -1
- package/skills/wix-manage/SKILL.md +3 -3
- package/skills/wix-manage/references/cms/cms-data-items-crud.md +78 -1
- package/skills/wix-manage/references/google-ads/create-performance-max-campaign.md +11 -11
- package/skills/wix-manage/references/marketing/create-and-publish-social-post.md +20 -51
- package/skills/wix-manage/references/marketing/generate-and-publish-marketing-plan.md +4 -4
- package/skills/wix-base44-connector/SKILL.md +0 -437
- package/skills/wix-base44-connector/references/CAPABILITY_MAP.md +0 -78
- package/skills/wix-base44-connector/scripts/utils.cjs +0 -466
- package/skills/wix-export/SKILL.md +0 -83
- package/skills/wix-harmony-editor/.publish-manifest.json +0 -8
- package/skills/wix-harmony-editor/COPY-SITE.md +0 -494
- package/skills/wix-harmony-editor/SKILL.md +0 -317
- package/skills/wix-harmony-editor/scripts/copy/build-description.mjs +0 -249
- package/skills/wix-harmony-editor/scripts/copy/check-description.mjs +0 -225
- package/skills/wix-harmony-editor/scripts/copy/check-mirror.mjs +0 -89
- package/skills/wix-harmony-editor/scripts/copy/compare-preview.mjs +0 -76
- package/skills/wix-harmony-editor/scripts/copy/deploy-description.mjs +0 -212
- package/skills/wix-harmony-editor/scripts/copy/desc-hash.mjs +0 -44
- package/skills/wix-harmony-editor/scripts/copy/editor-run.mjs +0 -45
- package/skills/wix-harmony-editor/scripts/copy/export-page.mjs +0 -53
- package/skills/wix-harmony-editor/scripts/copy/find-interactions.mjs +0 -76
- package/skills/wix-harmony-editor/scripts/copy/hide-scrollbars.mjs +0 -16
- package/skills/wix-harmony-editor/scripts/copy/import-media.mjs +0 -150
- package/skills/wix-harmony-editor/scripts/copy/link-url.mjs +0 -27
- package/skills/wix-harmony-editor/scripts/copy/lint-api.mjs +0 -56
- package/skills/wix-harmony-editor/scripts/copy/measure-source.mjs +0 -211
- package/skills/wix-harmony-editor/scripts/copy/merge-mirrors.mjs +0 -29
- package/skills/wix-harmony-editor/scripts/copy/mirror-site.mjs +0 -92
- package/skills/wix-harmony-editor/scripts/copy/mobile-stage.mjs +0 -56
- package/skills/wix-harmony-editor/scripts/copy/preview-widths.mjs +0 -73
- package/skills/wix-harmony-editor/scripts/copy/render-plate.mjs +0 -67
- package/skills/wix-harmony-editor/scripts/copy/serve-mirror.mjs +0 -102
- package/skills/wix-harmony-editor/scripts/copy/snapshot-capabilities.mjs +0 -40
- package/skills/wix-harmony-editor/scripts/copy/split-sections.mjs +0 -191
- package/skills/wix-harmony-editor/scripts/copy/upload-media-manager.mjs +0 -61
- package/skills/wix-harmony-editor/scripts/launch.sh +0 -359
- package/skills/wix-headless/SKILL.md +0 -151
- package/skills/wix-headless/references/AI_FEATURES.md +0 -178
- package/skills/wix-headless/references/CAPABILITIES.md +0 -117
- package/skills/wix-headless/references/CONTENT.md +0 -36
- package/skills/wix-headless/references/DESIGN.md +0 -55
- package/skills/wix-headless/references/DISCOVERY.md +0 -80
- package/skills/wix-headless/references/DOC_DISCOVERY.md +0 -43
- package/skills/wix-headless/references/FEEDBACK.md +0 -129
- package/skills/wix-headless/references/IMAGE_GENERATION.md +0 -80
- package/skills/wix-headless/references/SDK_HANDOFF.md +0 -108
- package/skills/wix-headless/references/SEED.md +0 -74
- package/skills/wix-headless/references/SETUP.md +0 -60
- package/skills/wix-headless/references/astro.md +0 -98
- package/skills/wix-headless/references/inline-recipes/experience-donations.md +0 -102
- package/skills/wix-headless/references/inline-recipes/experience-store.md +0 -49
- package/skills/wix-headless/references/inline-recipes/how-to-code-a-blog.md +0 -196
- package/skills/wix-headless/references/inline-recipes/how-to-code-a-store.md +0 -590
- package/skills/wix-headless/references/inline-recipes/how-to-code-bookings.md +0 -279
- package/skills/wix-headless/references/inline-recipes/how-to-code-cms.md +0 -163
- package/skills/wix-headless/references/inline-recipes/how-to-code-donations.md +0 -146
- package/skills/wix-headless/references/inline-recipes/how-to-code-events.md +0 -203
- package/skills/wix-headless/references/inline-recipes/how-to-code-forms.md +0 -696
- package/skills/wix-headless/references/inline-recipes/how-to-code-members-astro.md +0 -124
- package/skills/wix-headless/references/inline-recipes/how-to-code-members-custom-login.md +0 -160
- package/skills/wix-headless/references/inline-recipes/how-to-code-members-non-astro.md +0 -118
- package/skills/wix-headless/references/inline-recipes/how-to-code-portfolio.md +0 -132
- package/skills/wix-headless/references/inline-recipes/how-to-code-pricing-plans.md +0 -126
- package/skills/wix-headless/references/inline-recipes/how-to-code-rentals.md +0 -254
- package/skills/wix-headless/references/inline-recipes/how-to-code-restaurant-orders.md +0 -191
- package/skills/wix-headless/references/inline-recipes/how-to-code-restaurant-reservations.md +0 -213
- package/skills/wix-headless/references/inline-recipes/how-to-code-restaurants.md +0 -161
- package/skills/wix-headless/references/inline-recipes/setup-blog.md +0 -175
- package/skills/wix-headless/references/inline-recipes/setup-bookings.md +0 -232
- package/skills/wix-headless/references/inline-recipes/setup-cms.md +0 -200
- package/skills/wix-headless/references/inline-recipes/setup-donations.md +0 -15
- package/skills/wix-headless/references/inline-recipes/setup-events.md +0 -196
- package/skills/wix-headless/references/inline-recipes/setup-forms.md +0 -288
- package/skills/wix-headless/references/inline-recipes/setup-online-store.md +0 -214
- package/skills/wix-headless/references/inline-recipes/setup-portfolio.md +0 -155
- package/skills/wix-headless/references/inline-recipes/setup-pricing-plans.md +0 -229
- package/skills/wix-headless/references/inline-recipes/setup-rentals.md +0 -254
- package/skills/wix-headless/references/inline-recipes/setup-restaurant-experiences.md +0 -73
- package/skills/wix-headless/references/inline-recipes/setup-restaurant-orders.md +0 -197
- package/skills/wix-headless/references/inline-recipes/setup-restaurant-reservations.md +0 -136
- package/skills/wix-headless/references/inline-recipes/setup-restaurants.md +0 -152
- package/skills/wix-headless/references/managed/AUTHENTICATION.md +0 -71
- package/skills/wix-headless/references/managed/CONNECT.md +0 -74
- package/skills/wix-headless/references/managed/CREATE.md +0 -149
- package/skills/wix-headless/references/managed/DEPLOYMENT.md +0 -104
- package/skills/wix-headless/references/non-astro.md +0 -59
- package/skills/wix-headless/references/self-managed/AUTHENTICATION.md +0 -22
- package/skills/wix-headless/references/self-managed/DEPLOYMENT.md +0 -15
- package/skills/wix-headless/references/stripe/AUTHENTICATION.md +0 -55
- package/skills/wix-headless/references/stripe/DEPLOYMENT.md +0 -71
- package/skills/wix-headless/scripts/bootstrap.mjs +0 -156
- package/skills/wix-headless-replatform/.publish-manifest.json +0 -8
- package/skills/wix-headless-replatform/SKILL.md +0 -116
- package/skills/wix-headless-replatform/agents/openai.yaml +0 -6
- package/skills/wix-headless-replatform/references/control-and-visual-fidelity-contract.md +0 -43
- package/skills/wix-headless-replatform/references/extraction-schema.md +0 -187
- package/skills/wix-headless-replatform/references/interaction-runtime-contract.md +0 -137
- package/skills/wix-headless-replatform/references/layout-blueprint-contract.md +0 -41
- package/skills/wix-headless-replatform/references/output-contract.md +0 -93
- package/skills/wix-headless-replatform/references/post-build-gap-contract.md +0 -125
- package/skills/wix-headless-replatform/references/qa-checklist.md +0 -83
- package/skills/wix-headless-replatform/references/safety.md +0 -19
- package/skills/wix-headless-replatform/references/ui-normalization-contract.md +0 -70
- package/skills/wix-headless-replatform/references/workflow.md +0 -157
- package/skills/wix-headless-replatform/registry/README.md +0 -20
- package/skills/wix-headless-replatform/registry/approvals/button/shadcn-default-ac60ef5.json +0 -28
- package/skills/wix-headless-replatform/registry/items/button/shadcn-default-ac60ef5/button.tsx +0 -54
- package/skills/wix-headless-replatform/registry/items/button/shadcn-default-ac60ef5/capabilities.json +0 -60
- package/skills/wix-headless-replatform/registry/items/button/shadcn-default-ac60ef5/contract.md +0 -48
- package/skills/wix-headless-replatform/registry/licenses/shadcn-ui-ac60ef5-MIT.txt +0 -21
- package/skills/wix-headless-replatform/registry/registry.json +0 -36
- package/skills/wix-headless-replatform/resources/rp-facelift/SKILL.md +0 -32
- package/skills/wix-headless-replatform/resources/rp-project-context/SKILL.md +0 -62
- package/skills/wix-headless-replatform/resources/rp-qa-gap-loop/SKILL.md +0 -64
- package/skills/wix-headless-replatform/resources/rp-source-evidence/SKILL.md +0 -42
- package/skills/wix-headless-replatform/resources/rp-ui-implementation/SKILL.md +0 -73
- package/skills/wix-headless-replatform/schemas/build-plan.schema.json +0 -10
- package/skills/wix-headless-replatform/schemas/candidate.schema.json +0 -19
- package/skills/wix-headless-replatform/schemas/common.schema.json +0 -33
- package/skills/wix-headless-replatform/schemas/decision-patch.schema.json +0 -10
- package/skills/wix-headless-replatform/schemas/decision-request.schema.json +0 -10
- package/skills/wix-headless-replatform/schemas/extraction-gap.schema.json +0 -28
- package/skills/wix-headless-replatform/schemas/extraction-manifest.schema.json +0 -34
- package/skills/wix-headless-replatform/schemas/final-report.schema.json +0 -10
- package/skills/wix-headless-replatform/schemas/foundation.schema.json +0 -11
- package/skills/wix-headless-replatform/schemas/metadata.schema.json +0 -11
- package/skills/wix-headless-replatform/schemas/observation-packet.schema.json +0 -17
- package/skills/wix-headless-replatform/schemas/page-capture.schema.json +0 -11
- package/skills/wix-headless-replatform/schemas/page-resolution.schema.json +0 -33
- package/skills/wix-headless-replatform/schemas/shared-chrome.schema.json +0 -11
- package/skills/wix-headless-replatform/schemas/unit.schema.json +0 -40
- package/skills/wix-headless-replatform/scripts/assemble-extraction.mjs +0 -844
- package/skills/wix-headless-replatform/scripts/benchmark-extraction.mjs +0 -163
- package/skills/wix-headless-replatform/scripts/browser-extraction-preflight.mjs +0 -42
- package/skills/wix-headless-replatform/scripts/build-extracted-homepage.mjs +0 -228
- package/skills/wix-headless-replatform/scripts/clear-wix-starter.mjs +0 -87
- package/skills/wix-headless-replatform/scripts/create-wix-project.mjs +0 -505
- package/skills/wix-headless-replatform/scripts/discover-urls.mjs +0 -142
- package/skills/wix-headless-replatform/scripts/extract-assets.mjs +0 -140
- package/skills/wix-headless-replatform/scripts/extract-design-system.mjs +0 -637
- package/skills/wix-headless-replatform/scripts/extract-interactions.mjs +0 -1903
- package/skills/wix-headless-replatform/scripts/extract-page.mjs +0 -2461
- package/skills/wix-headless-replatform/scripts/extract-seo.mjs +0 -25
- package/skills/wix-headless-replatform/scripts/extract-tokens.mjs +0 -63
- package/skills/wix-headless-replatform/scripts/finalize-extraction-report.mjs +0 -126
- package/skills/wix-headless-replatform/scripts/finalize-gap-review.mjs +0 -180
- package/skills/wix-headless-replatform/scripts/finalize-gap-review.test.mjs +0 -98
- package/skills/wix-headless-replatform/scripts/finalize-migration-website.mjs +0 -103
- package/skills/wix-headless-replatform/scripts/generate-control-state-contract.mjs +0 -176
- package/skills/wix-headless-replatform/scripts/generate-design-md.mjs +0 -261
- package/skills/wix-headless-replatform/scripts/generate-extraction-validators.mjs +0 -25
- package/skills/wix-headless-replatform/scripts/generate-invoice-download-backend.mjs +0 -342
- package/skills/wix-headless-replatform/scripts/generate-layout-blueprint.mjs +0 -140
- package/skills/wix-headless-replatform/scripts/generate-repeater-cms.mjs +0 -22
- package/skills/wix-headless-replatform/scripts/generate-route-plan.mjs +0 -143
- package/skills/wix-headless-replatform/scripts/generate-scene-contract.mjs +0 -288
- package/skills/wix-headless-replatform/scripts/generate-ui-normalization.mjs +0 -266
- package/skills/wix-headless-replatform/scripts/generate-visual-assets.mjs +0 -111
- package/skills/wix-headless-replatform/scripts/lib/browser-tooling.mjs +0 -570
- package/skills/wix-headless-replatform/scripts/lib/common.mjs +0 -329
- package/skills/wix-headless-replatform/scripts/lib/component-capabilities.mjs +0 -121
- package/skills/wix-headless-replatform/scripts/lib/component-registry.mjs +0 -282
- package/skills/wix-headless-replatform/scripts/lib/content-boundary.mjs +0 -61
- package/skills/wix-headless-replatform/scripts/lib/extraction-contract.mjs +0 -374
- package/skills/wix-headless-replatform/scripts/lib/extraction-detectors.mjs +0 -243
- package/skills/wix-headless-replatform/scripts/lib/extraction-validators.generated.mjs +0 -1139
- package/skills/wix-headless-replatform/scripts/lib/font-contract.mjs +0 -326
- package/skills/wix-headless-replatform/scripts/lib/frontend-automation-state.mjs +0 -184
- package/skills/wix-headless-replatform/scripts/lib/gap-analysis.mjs +0 -396
- package/skills/wix-headless-replatform/scripts/lib/html-extract.mjs +0 -168
- package/skills/wix-headless-replatform/scripts/lib/interaction-bootstrap.mjs +0 -10
- package/skills/wix-headless-replatform/scripts/lib/interaction-runtime.mjs +0 -194
- package/skills/wix-headless-replatform/scripts/lib/interaction-timeline.mjs +0 -348
- package/skills/wix-headless-replatform/scripts/lib/layout-blueprint/classifiers.mjs +0 -141
- package/skills/wix-headless-replatform/scripts/lib/layout-blueprint/geometry.mjs +0 -43
- package/skills/wix-headless-replatform/scripts/lib/layout-blueprint/vocabulary.mjs +0 -18
- package/skills/wix-headless-replatform/scripts/lib/ui-normalization.css +0 -64
- package/skills/wix-headless-replatform/scripts/optimize-svg.mjs +0 -31
- package/skills/wix-headless-replatform/scripts/post-build-gap.mjs +0 -358
- package/skills/wix-headless-replatform/scripts/provision-repeater-cms.mjs +0 -25
- package/skills/wix-headless-replatform/scripts/record-gap-decision.mjs +0 -39
- package/skills/wix-headless-replatform/scripts/replay-extraction.mjs +0 -107
- package/skills/wix-headless-replatform/scripts/resolve-home-page.mjs +0 -96
- package/skills/wix-headless-replatform/scripts/site-clone.mjs +0 -658
- package/skills/wix-headless-replatform/scripts/validate-font-contract.mjs +0 -29
- package/skills/wix-headless-replatform/scripts/verify-interactions.mjs +0 -669
- package/skills/wix-headless-replatform/scripts/visual-qa.mjs +0 -370
- package/skills/wix-import/SKILL.md +0 -90
- package/skills/wix-replatform/.publish-manifest.json +0 -8
- package/skills/wix-replatform/CLI.md +0 -162
- package/skills/wix-replatform/README.md +0 -52
- package/skills/wix-replatform/SKILL.md +0 -238
- package/skills/wix-replatform/console/account.css +0 -1
- package/skills/wix-replatform/console/app.css +0 -1
- package/skills/wix-replatform/console/app.js +0 -117
- package/skills/wix-replatform/console/index.html +0 -4
- package/skills/wix-replatform/console/json.css +0 -11
- package/skills/wix-replatform/lib/agent-adapters/index.js +0 -71
- package/skills/wix-replatform/lib/app-page-routing.js +0 -75
- package/skills/wix-replatform/lib/artifact-freshness.js +0 -225
- package/skills/wix-replatform/lib/blocked-data-requests.js +0 -427
- package/skills/wix-replatform/lib/census-reconciliation.js +0 -426
- package/skills/wix-replatform/lib/completion-report.js +0 -1580
- package/skills/wix-replatform/lib/config-env.js +0 -133
- package/skills/wix-replatform/lib/confirmed-pictures.js +0 -212
- package/skills/wix-replatform/lib/dependency-readiness.js +0 -423
- package/skills/wix-replatform/lib/dependency-recovery.js +0 -21
- package/skills/wix-replatform/lib/destination-choice.js +0 -163
- package/skills/wix-replatform/lib/destination-handoff.js +0 -62
- package/skills/wix-replatform/lib/destination-http.js +0 -81
- package/skills/wix-replatform/lib/destination-route.js +0 -98
- package/skills/wix-replatform/lib/destination.js +0 -919
- package/skills/wix-replatform/lib/discovered-census.js +0 -231
- package/skills/wix-replatform/lib/discovered-set-status.js +0 -255
- package/skills/wix-replatform/lib/document-url-guard.js +0 -203
- package/skills/wix-replatform/lib/entity-qa-attestation.js +0 -339
- package/skills/wix-replatform/lib/entity-verification.js +0 -18
- package/skills/wix-replatform/lib/execution-capability.js +0 -120
- package/skills/wix-replatform/lib/execution-log.js +0 -170
- package/skills/wix-replatform/lib/execution-manifest.js +0 -203
- package/skills/wix-replatform/lib/execution-state.js +0 -195
- package/skills/wix-replatform/lib/expectations-ledger.js +0 -96
- package/skills/wix-replatform/lib/generated-plugin-handoff.js +0 -140
- package/skills/wix-replatform/lib/import-readiness-contract.js +0 -23
- package/skills/wix-replatform/lib/import-recovery.js +0 -1107
- package/skills/wix-replatform/lib/imported-redirect-targets.js +0 -608
- package/skills/wix-replatform/lib/internal-link-reconciliation.js +0 -166
- package/skills/wix-replatform/lib/link-audit.js +0 -173
- package/skills/wix-replatform/lib/link-census.js +0 -194
- package/skills/wix-replatform/lib/link-plan.js +0 -148
- package/skills/wix-replatform/lib/link-verification.js +0 -274
- package/skills/wix-replatform/lib/link-write-journal.js +0 -42
- package/skills/wix-replatform/lib/local-state.js +0 -1481
- package/skills/wix-replatform/lib/member-completion.js +0 -658
- package/skills/wix-replatform/lib/member-crosswalk.js +0 -69
- package/skills/wix-replatform/lib/member-outcome-registry.js +0 -265
- package/skills/wix-replatform/lib/migration-completion.js +0 -311
- package/skills/wix-replatform/lib/operator-identity.js +0 -47
- package/skills/wix-replatform/lib/orchestration-decisions.js +0 -248
- package/skills/wix-replatform/lib/orchestration-preflight.js +0 -525
- package/skills/wix-replatform/lib/orchestration-router.js +0 -698
- package/skills/wix-replatform/lib/orchestration-state.js +0 -631
- package/skills/wix-replatform/lib/order-reference-readiness.js +0 -30
- package/skills/wix-replatform/lib/payments-outcome-registry.js +0 -200
- package/skills/wix-replatform/lib/plugin-cms-fallback.js +0 -618
- package/skills/wix-replatform/lib/preservation-approval-stamp.js +0 -54
- package/skills/wix-replatform/lib/product-media-deferral.js +0 -96
- package/skills/wix-replatform/lib/progress-log.js +0 -240
- package/skills/wix-replatform/lib/progress-log.sh +0 -140
- package/skills/wix-replatform/lib/read-back-approval.js +0 -184
- package/skills/wix-replatform/lib/read-back-comparison.js +0 -136
- package/skills/wix-replatform/lib/read-back-contract.js +0 -243
- package/skills/wix-replatform/lib/read-back-extract.js +0 -118
- package/skills/wix-replatform/lib/read-back-gate.js +0 -734
- package/skills/wix-replatform/lib/read-back-reads.js +0 -94
- package/skills/wix-replatform/lib/read-back-state.js +0 -107
- package/skills/wix-replatform/lib/read-back-summary.js +0 -81
- package/skills/wix-replatform/lib/rerun-conflicts.js +0 -334
- package/skills/wix-replatform/lib/run-controller.js +0 -401
- package/skills/wix-replatform/lib/seo-outcome-registry.js +0 -45
- package/skills/wix-replatform/lib/setup-verification.js +0 -148
- package/skills/wix-replatform/lib/source-access.js +0 -231
- package/skills/wix-replatform/lib/source-coverage.js +0 -1130
- package/skills/wix-replatform/lib/source-secrets.js +0 -277
- package/skills/wix-replatform/lib/structured-link-patch.js +0 -59
- package/skills/wix-replatform/lib/task-state.js +0 -110
- package/skills/wix-replatform/lib/url-preservation-report.js +0 -319
- package/skills/wix-replatform/lib/url-preservation-state.js +0 -739
- package/skills/wix-replatform/lib/url-redirect-plan.js +0 -728
- package/skills/wix-replatform/lib/url-verification.js +0 -315
- package/skills/wix-replatform/lib/user-action-effects.js +0 -42
- package/skills/wix-replatform/lib/user-actions.js +0 -264
- package/skills/wix-replatform/lib/website-handoff.js +0 -1220
- package/skills/wix-replatform/lib/wix-client-callers.js +0 -54
- package/skills/wix-replatform/lib/wix-dashboard-url.js +0 -35
- package/skills/wix-replatform/lib/write-verification-state.js +0 -92
- package/skills/wix-replatform/lib/write-verification.js +0 -274
- package/skills/wix-replatform/resources/rp-destination/SKILL.md +0 -137
- package/skills/wix-replatform/resources/rp-discovery/SKILL.md +0 -357
- package/skills/wix-replatform/resources/rp-discovery/scripts/promote-source-coverage.js +0 -47
- package/skills/wix-replatform/resources/rp-execute-import/SKILL.md +0 -1369
- package/skills/wix-replatform/resources/rp-execute-import/scripts/shipping-estimate-audit.js +0 -70
- package/skills/wix-replatform/resources/rp-execute-setup/SKILL.md +0 -482
- package/skills/wix-replatform/resources/rp-execute-setup/scripts/execute-setup.js +0 -442
- package/skills/wix-replatform/resources/rp-execute-setup/scripts/mint-token.sh +0 -64
- package/skills/wix-replatform/resources/rp-execution-policy/SKILL.md +0 -112
- package/skills/wix-replatform/resources/rp-execution-policy/lib/coupon-currency-plan-report.js +0 -143
- package/skills/wix-replatform/resources/rp-execution-policy/lib/payments-report.js +0 -244
- package/skills/wix-replatform/resources/rp-import-codegen/SKILL.md +0 -3158
- package/skills/wix-replatform/resources/rp-mapper/SKILL.md +0 -947
- package/skills/wix-replatform/resources/rp-mapper/lib/mapping-resolve.js +0 -217
- package/skills/wix-replatform/resources/rp-mapper/lib/structure-bridge-planning.js +0 -303
- package/skills/wix-replatform/resources/rp-mapper/scripts/coverage-reconcile.js +0 -88
- package/skills/wix-replatform/resources/rp-mapper/scripts/resolve-mapping.js +0 -148
- package/skills/wix-replatform/resources/rp-mapper/wix-business-solutions-taxonomy.md +0 -378
- package/skills/wix-replatform/resources/rp-preflight/SKILL.md +0 -40
- package/skills/wix-replatform/resources/rp-project-intake/SKILL.md +0 -55
- package/skills/wix-replatform/resources/rp-quick-runtime/SKILL.md +0 -60
- package/skills/wix-replatform/resources/rp-quick-runtime/lib/import-progress.js +0 -89
- package/skills/wix-replatform/resources/rp-quick-runtime/lib/limit-recovery.js +0 -36
- package/skills/wix-replatform/resources/rp-quick-shopify/SKILL.md +0 -123
- package/skills/wix-replatform/resources/rp-quick-shopify/quick-mode.json +0 -124
- package/skills/wix-replatform/resources/rp-quick-shopify/scripts/quick-mode.js +0 -522
- package/skills/wix-replatform/resources/rp-quick-woocommerce/SKILL.md +0 -56
- package/skills/wix-replatform/resources/rp-quick-woocommerce/quick-mode.json +0 -91
- package/skills/wix-replatform/resources/rp-quick-woocommerce/scripts/quick-mode.js +0 -255
- package/skills/wix-replatform/resources/rp-setup-discovery/SKILL.md +0 -253
- package/skills/wix-replatform/resources/rp-setup-discovery/scripts/quick-setup-plan.js +0 -44
- package/skills/wix-replatform/resources/rp-source-csv/SKILL.md +0 -481
- package/skills/wix-replatform/resources/rp-source-csv/lib/canonical-record.js +0 -136
- package/skills/wix-replatform/resources/rp-source-csv/lib/csv-fileset.js +0 -0
- package/skills/wix-replatform/resources/rp-source-csv/lib/csv-fingerprint.js +0 -310
- package/skills/wix-replatform/resources/rp-source-csv/lib/csv-layout.js +0 -1081
- package/skills/wix-replatform/resources/rp-source-csv/lib/csv-parse.js +0 -618
- package/skills/wix-replatform/resources/rp-source-csv/scripts/csv-discovery.js +0 -969
- package/skills/wix-replatform/resources/rp-source-csv/source-schema.example.json +0 -196
- package/skills/wix-replatform/resources/rp-source-csv/vendors/bigcommerce.json +0 -66
- package/skills/wix-replatform/resources/rp-source-csv/vendors/magento.json +0 -60
- package/skills/wix-replatform/resources/rp-source-csv/vendors/shopify.json +0 -95
- package/skills/wix-replatform/resources/rp-source-csv/vendors/woocommerce.json +0 -82
- package/skills/wix-replatform/resources/rp-source-inputs/SKILL.md +0 -66
- package/skills/wix-replatform/resources/rp-source-sfcc/SKILL.md +0 -153
- package/skills/wix-replatform/resources/rp-source-shopify/SKILL.md +0 -394
- package/skills/wix-replatform/resources/rp-source-shopify/lib/discovery-reads.js +0 -200
- package/skills/wix-replatform/resources/rp-source-shopify/lib/import-findings.js +0 -34
- package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-bulk-sqlite-worker.js +0 -44
- package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-bulk.js +0 -1470
- package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-cli.js +0 -446
- package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-gift-cards.js +0 -474
- package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-protected-fields.js +0 -879
- package/skills/wix-replatform/resources/rp-source-shopify/lib/shopify-session.js +0 -426
- package/skills/wix-replatform/resources/rp-source-shopify/queries/articles.graphql +0 -24
- package/skills/wix-replatform/resources/rp-source-shopify/queries/blogs.graphql +0 -18
- package/skills/wix-replatform/resources/rp-source-shopify/queries/collections.graphql +0 -40
- package/skills/wix-replatform/resources/rp-source-shopify/queries/customers.graphql +0 -76
- package/skills/wix-replatform/resources/rp-source-shopify/queries/delivery-profiles.graphql +0 -51
- package/skills/wix-replatform/resources/rp-source-shopify/queries/discounts.graphql +0 -35
- package/skills/wix-replatform/resources/rp-source-shopify/queries/files.graphql +0 -20
- package/skills/wix-replatform/resources/rp-source-shopify/queries/gift-cards.graphql +0 -18
- package/skills/wix-replatform/resources/rp-source-shopify/queries/inventory.graphql +0 -31
- package/skills/wix-replatform/resources/rp-source-shopify/queries/locations.graphql +0 -21
- package/skills/wix-replatform/resources/rp-source-shopify/queries/menus.graphql +0 -21
- package/skills/wix-replatform/resources/rp-source-shopify/queries/metaobjects.graphql +0 -30
- package/skills/wix-replatform/resources/rp-source-shopify/queries/orders-core.graphql +0 -150
- package/skills/wix-replatform/resources/rp-source-shopify/queries/orders-fulfillments.graphql +0 -36
- package/skills/wix-replatform/resources/rp-source-shopify/queries/orders-refunds.graphql +0 -48
- package/skills/wix-replatform/resources/rp-source-shopify/queries/pages.graphql +0 -20
- package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-customers-address.graphql +0 -8
- package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-customers-email.graphql +0 -6
- package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-customers-name.graphql +0 -8
- package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-customers-phone.graphql +0 -8
- package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-orders-address.graphql +0 -12
- package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-orders-email.graphql +0 -6
- package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-orders-name.graphql +0 -13
- package/skills/wix-replatform/resources/rp-source-shopify/queries/probe-orders-phone.graphql +0 -13
- package/skills/wix-replatform/resources/rp-source-shopify/queries/products.graphql +0 -73
- package/skills/wix-replatform/resources/rp-source-shopify/queries/url-redirects.graphql +0 -13
- package/skills/wix-replatform/resources/rp-source-shopify/scripts/shopify-discovery.js +0 -693
- package/skills/wix-replatform/resources/rp-source-shopify/scripts/shopify-extract.js +0 -283
- package/skills/wix-replatform/resources/rp-source-shopify/scripts/shopify-gift-card-remedy.js +0 -191
- package/skills/wix-replatform/resources/rp-source-shopify/scripts/shopify-session-check.js +0 -115
- package/skills/wix-replatform/resources/rp-source-shopify/source-schema.example.json +0 -201
- package/skills/wix-replatform/resources/rp-source-wordpress/PLUGIN-READ-PLANS.md +0 -146
- package/skills/wix-replatform/resources/rp-source-wordpress/SKILL.md +0 -970
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/blocked-data-handlers.js +0 -73
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/checkout-field-csv-parser.js +0 -115
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/checkout-field-csv-parser.test-fixture.js +0 -91
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/coupon-discovery.js +0 -440
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/currency-gate.js +0 -125
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/gateway-source-keys.js +0 -252
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/gateway-source-keys.json +0 -183
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/gateway-summary.mjs +0 -333
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/invoice-discovery.js +0 -426
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/plugin-disposition.js +0 -400
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/plugin-entity-read-plan.js +0 -633
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/plugin-knowledge.js +0 -1127
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/refund-corroboration.js +0 -194
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/refund-corroboration.json +0 -100
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/sampled-ids-batch.js +0 -157
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/secret-value-guard.js +0 -234
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/store-currency.js +0 -101
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/structure-bridge-reader.js +0 -755
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/wix-wp-plugin-v2-client.js +0 -1074
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/wix-wp-plugin-v2-client.test-fixture.js +0 -149
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/woo-inventory.js +0 -25
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-http.js +0 -444
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-image-url.js +0 -186
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-plugin-detect.js +0 -1422
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-redirect-sources.js +0 -343
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/wp-route-classifier.js +0 -680
- package/skills/wix-replatform/resources/rp-source-wordpress/lib/yoast-product-seo-evidence.js +0 -272
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/README.md +0 -373
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/advanced-custom-fields.json +0 -101
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/back-in-stock-notifier-for-woocommerce.json +0 -81
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/capabilities-pending-decision.json +0 -128
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/cms-fallback-eligible.json +0 -18
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/contact-form-7.json +0 -104
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/facebook-for-woocommerce.json +0 -44
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/fingerprint-aliases.json +0 -49
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/free-gifts-for-woocommerce.json +0 -94
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/index.json +0 -863
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/mailpoet.json +0 -52
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/membership-for-woocommerce.json +0 -161
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/mwb-bookings-for-woocommerce.json +0 -180
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/no-migration-needed.json +0 -286
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/pricing-deals-for-woocommerce.json +0 -79
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/product-extras-for-woocommerce.json +0 -120
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/pw-woocommerce-gift-cards.json +0 -128
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/requires-development.json +0 -88
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/seo-by-rank-math.json +0 -80
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/seriously-simple-podcasting.json +0 -46
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/strong-testimonials.json +0 -55
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/subscriptions-for-woocommerce.json +0 -99
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/tablepress.json +0 -55
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/the-events-calendar.json +0 -160
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/ti-woocommerce-wishlist.json +0 -81
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woo-checkout-field-editor-pro.json +0 -60
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woo-discount-rules.json +0 -74
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woo-product-bundle.json +0 -75
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-gift-cards.json +0 -60
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-other-payment-gateway.json +0 -44
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-pdf-invoices-packing-slips.json +0 -57
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-product-addon.json +0 -141
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/woocommerce-progressive-discounts.json +0 -54
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/wordpress-seo.json +0 -158
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/wpc-composite-products.json +0 -97
- package/skills/wix-replatform/resources/rp-source-wordpress/plugins/wpforms-lite.json +0 -86
- package/skills/wix-replatform/resources/rp-source-wordpress/scripts/capture-store-settings.js +0 -90
- package/skills/wix-replatform/resources/rp-source-wordpress/scripts/plugin-knowledge-validate.js +0 -51
- package/skills/wix-replatform/resources/rp-source-wordpress/scripts/plugin-knowledge.js +0 -103
- package/skills/wix-replatform/resources/rp-source-wordpress/scripts/wp-discovery.js +0 -2409
- package/skills/wix-replatform/resources/rp-source-wordpress/scripts/wp-plugin-inventory.js +0 -273
- package/skills/wix-replatform/resources/rp-source-wordpress/secret-value-patterns.v1.json +0 -11
- package/skills/wix-replatform/resources/rp-source-wordpress/source-schema.example.json +0 -71
- package/skills/wix-replatform/resources/rp-source-wordpress/sub-parts.json +0 -13
- package/skills/wix-replatform/resources/rp-target-wix/SKILL.md +0 -1046
- package/skills/wix-replatform/resources/rp-target-wix/app-page-routing-capabilities.json +0 -36
- package/skills/wix-replatform/resources/rp-target-wix/domains/README.md +0 -57
- package/skills/wix-replatform/resources/rp-target-wix/domains/SERVICE-PLUGINS.md +0 -322
- package/skills/wix-replatform/resources/rp-target-wix/domains/blog/docs-survey.json +0 -70
- package/skills/wix-replatform/resources/rp-target-wix/domains/blog/domain.json +0 -29
- package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/category.json +0 -71
- package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/comment.json +0 -83
- package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/post.json +0 -95
- package/skills/wix-replatform/resources/rp-target-wix/domains/blog/entities/tag.json +0 -66
- package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/docs-survey.json +0 -332
- package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/domain.json +0 -75
- package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/entities/booking.json +0 -181
- package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/entities/service-add-on.json +0 -130
- package/skills/wix-replatform/resources/rp-target-wix/domains/bookings/entities/service.json +0 -180
- package/skills/wix-replatform/resources/rp-target-wix/domains/cms/docs-survey.json +0 -161
- package/skills/wix-replatform/resources/rp-target-wix/domains/cms/domain.json +0 -25
- package/skills/wix-replatform/resources/rp-target-wix/domains/cms/entities/collection.json +0 -67
- package/skills/wix-replatform/resources/rp-target-wix/domains/cms/entities/data-item.json +0 -75
- package/skills/wix-replatform/resources/rp-target-wix/domains/cms/entities/reference.json +0 -41
- package/skills/wix-replatform/resources/rp-target-wix/domains/crm/docs-survey.json +0 -204
- package/skills/wix-replatform/resources/rp-target-wix/domains/crm/domain.json +0 -27
- package/skills/wix-replatform/resources/rp-target-wix/domains/crm/entities/contact.json +0 -275
- package/skills/wix-replatform/resources/rp-target-wix/domains/crm/entities/email-subscription.json +0 -105
- package/skills/wix-replatform/resources/rp-target-wix/domains/crm/entities/label.json +0 -77
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/docs-survey.json +0 -297
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/domain.json +0 -44
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/delivery-profile.json +0 -171
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/discount-rule.json +0 -182
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-applied-discount.json +0 -129
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-invoice-document.json +0 -192
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-line-item-options.json +0 -123
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-line-item.json +0 -85
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-merchant-note.json +0 -112
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-payment.json +0 -191
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order-refund.json +0 -164
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/order.json +0 -462
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/pickup-location.json +0 -122
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/shipping-option.json +0 -98
- package/skills/wix-replatform/resources/rp-target-wix/domains/ecom/entities/wishlist-item.json +0 -86
- package/skills/wix-replatform/resources/rp-target-wix/domains/events/docs-survey.json +0 -128
- package/skills/wix-replatform/resources/rp-target-wix/domains/events/domain.json +0 -38
- package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/category.json +0 -73
- package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/event.json +0 -107
- package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/registration-form.json +0 -89
- package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/rsvp.json +0 -118
- package/skills/wix-replatform/resources/rp-target-wix/domains/events/entities/ticket-definition.json +0 -93
- package/skills/wix-replatform/resources/rp-target-wix/domains/forms/docs-survey.json +0 -86
- package/skills/wix-replatform/resources/rp-target-wix/domains/forms/domain.json +0 -56
- package/skills/wix-replatform/resources/rp-target-wix/domains/forms/entities/form-submission.json +0 -121
- package/skills/wix-replatform/resources/rp-target-wix/domains/forms/entities/form.json +0 -134
- package/skills/wix-replatform/resources/rp-target-wix/domains/gift-cards/docs-survey.json +0 -41
- package/skills/wix-replatform/resources/rp-target-wix/domains/gift-cards/domain.json +0 -50
- package/skills/wix-replatform/resources/rp-target-wix/domains/gift-cards/entities/gift-card-product.json +0 -87
- package/skills/wix-replatform/resources/rp-target-wix/domains/gift-cards/entities/gift-card.json +0 -130
- package/skills/wix-replatform/resources/rp-target-wix/domains/index.json +0 -1418
- package/skills/wix-replatform/resources/rp-target-wix/domains/media/docs-survey.json +0 -41
- package/skills/wix-replatform/resources/rp-target-wix/domains/media/domain.json +0 -24
- package/skills/wix-replatform/resources/rp-target-wix/domains/media/entities/media-file.json +0 -75
- package/skills/wix-replatform/resources/rp-target-wix/domains/media/entities/media-folder.json +0 -71
- package/skills/wix-replatform/resources/rp-target-wix/domains/members/docs-survey.json +0 -119
- package/skills/wix-replatform/resources/rp-target-wix/domains/members/domain.json +0 -23
- package/skills/wix-replatform/resources/rp-target-wix/domains/members/entities/badge.json +0 -71
- package/skills/wix-replatform/resources/rp-target-wix/domains/members/entities/custom-field.json +0 -82
- package/skills/wix-replatform/resources/rp-target-wix/domains/members/entities/member-about.json +0 -77
- package/skills/wix-replatform/resources/rp-target-wix/domains/members/entities/member.json +0 -205
- package/skills/wix-replatform/resources/rp-target-wix/domains/pricing-plans/docs-survey.json +0 -41
- package/skills/wix-replatform/resources/rp-target-wix/domains/pricing-plans/domain.json +0 -46
- package/skills/wix-replatform/resources/rp-target-wix/domains/pricing-plans/entities/plan-order.json +0 -137
- package/skills/wix-replatform/resources/rp-target-wix/domains/pricing-plans/entities/plan.json +0 -133
- package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/docs-survey.json +0 -7
- package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/domain.json +0 -36
- package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/amazon-shop-connect.json +0 -71
- package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/ebay-shop-connect.json +0 -67
- package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/google-youtube-connect.json +0 -72
- package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/meta-catalog-connect.json +0 -74
- package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/pinterest-catalog-connect.json +0 -69
- package/skills/wix-replatform/resources/rp-target-wix/domains/sales-channels/entities/tiktok-catalog-connect.json +0 -61
- package/skills/wix-replatform/resources/rp-target-wix/domains/schema.json +0 -111
- package/skills/wix-replatform/resources/rp-target-wix/domains/seo/docs-survey.json +0 -109
- package/skills/wix-replatform/resources/rp-target-wix/domains/seo/domain.json +0 -73
- package/skills/wix-replatform/resources/rp-target-wix/domains/seo/entities/item-seo-tags.json +0 -148
- package/skills/wix-replatform/resources/rp-target-wix/domains/seo/entities/seo-pattern.json +0 -91
- package/skills/wix-replatform/resources/rp-target-wix/domains/seo/entities/site-seo-tags.json +0 -79
- package/skills/wix-replatform/resources/rp-target-wix/domains/site/docs-survey.json +0 -32
- package/skills/wix-replatform/resources/rp-target-wix/domains/site/domain.json +0 -49
- package/skills/wix-replatform/resources/rp-target-wix/domains/site/entities/business-contact.json +0 -103
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/docs-survey.json +0 -203
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/domain.json +0 -42
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/back-in-stock-request.json +0 -119
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/brand.json +0 -111
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/category.json +0 -81
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/coupon.json +0 -241
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/inventory-item.json +0 -118
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/product-customization.json +0 -111
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/product-tag.json +0 -79
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/product.json +0 -221
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/promotion.json +0 -84
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/review.json +0 -178
- package/skills/wix-replatform/resources/rp-target-wix/domains/stores/entities/subscription-product.json +0 -87
- package/skills/wix-replatform/resources/rp-target-wix/domains/tax/docs-survey.json +0 -106
- package/skills/wix-replatform/resources/rp-target-wix/domains/tax/domain.json +0 -64
- package/skills/wix-replatform/resources/rp-target-wix/domains/tax/entities/manual-tax-mapping.json +0 -119
- package/skills/wix-replatform/resources/rp-target-wix/domains/tax/entities/tax-group.json +0 -94
- package/skills/wix-replatform/resources/rp-target-wix/domains/tax/entities/tax-region.json +0 -113
- package/skills/wix-replatform/resources/rp-target-wix/domains/tax/entities/tax-settings.json +0 -65
- package/skills/wix-replatform/resources/rp-target-wix/lib/audit-summary.js +0 -64
- package/skills/wix-replatform/resources/rp-target-wix/lib/blog-author-attribution.js +0 -165
- package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-client.js +0 -60
- package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-duplicates.js +0 -201
- package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-ledger.js +0 -306
- package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-report.js +0 -229
- package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build-stage.js +0 -55
- package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-build.js +0 -715
- package/skills/wix-replatform/resources/rp-target-wix/lib/blog-post-media.js +0 -567
- package/skills/wix-replatform/resources/rp-target-wix/lib/bulk-results.js +0 -73
- package/skills/wix-replatform/resources/rp-target-wix/lib/contact-extended-fields.js +0 -194
- package/skills/wix-replatform/resources/rp-target-wix/lib/contact-import.js +0 -133
- package/skills/wix-replatform/resources/rp-target-wix/lib/contract-ledger.js +0 -150
- package/skills/wix-replatform/resources/rp-target-wix/lib/coupon-redemption-drift.js +0 -491
- package/skills/wix-replatform/resources/rp-target-wix/lib/customer-member.js +0 -104
- package/skills/wix-replatform/resources/rp-target-wix/lib/data-extension-schema.js +0 -673
- package/skills/wix-replatform/resources/rp-target-wix/lib/domain-knowledge.js +0 -835
- package/skills/wix-replatform/resources/rp-target-wix/lib/gift-card-balance-reconciliation.js +0 -119
- package/skills/wix-replatform/resources/rp-target-wix/lib/gift-card-build.js +0 -566
- package/skills/wix-replatform/resources/rp-target-wix/lib/gift-card-redemption-build.js +0 -249
- package/skills/wix-replatform/resources/rp-target-wix/lib/ndjson.js +0 -260
- package/skills/wix-replatform/resources/rp-target-wix/lib/order-applied-discount-build.js +0 -63
- package/skills/wix-replatform/resources/rp-target-wix/lib/order-buyer.js +0 -187
- package/skills/wix-replatform/resources/rp-target-wix/lib/order-channel-build.js +0 -64
- package/skills/wix-replatform/resources/rp-target-wix/lib/order-history.js +0 -1027
- package/skills/wix-replatform/resources/rp-target-wix/lib/order-invoice-contract.js +0 -90
- package/skills/wix-replatform/resources/rp-target-wix/lib/order-payment-mapping.js +0 -420
- package/skills/wix-replatform/resources/rp-target-wix/lib/pricing-plan-definition.js +0 -177
- package/skills/wix-replatform/resources/rp-target-wix/lib/product-import.js +0 -151
- package/skills/wix-replatform/resources/rp-target-wix/lib/product-seo.js +0 -723
- package/skills/wix-replatform/resources/rp-target-wix/lib/seo-redirects.js +0 -353
- package/skills/wix-replatform/resources/rp-target-wix/lib/shipping-build.js +0 -1437
- package/skills/wix-replatform/resources/rp-target-wix/lib/shipping-option-stage.js +0 -354
- package/skills/wix-replatform/resources/rp-target-wix/lib/store-config-build.js +0 -134
- package/skills/wix-replatform/resources/rp-target-wix/lib/stores-category-attach.js +0 -221
- package/skills/wix-replatform/resources/rp-target-wix/lib/stores-inventory.js +0 -248
- package/skills/wix-replatform/resources/rp-target-wix/lib/stores-verification.js +0 -321
- package/skills/wix-replatform/resources/rp-target-wix/lib/tax-build.js +0 -231
- package/skills/wix-replatform/resources/rp-target-wix/lib/url-mapper-transport.js +0 -28
- package/skills/wix-replatform/resources/rp-target-wix/lib/value-utils.js +0 -14
- package/skills/wix-replatform/resources/rp-target-wix/lib/variant-correlation.js +0 -34
- package/skills/wix-replatform/resources/rp-target-wix/lib/wix-build.js +0 -388
- package/skills/wix-replatform/resources/rp-target-wix/lib/wix-target-spec.js +0 -255
- package/skills/wix-replatform/resources/rp-target-wix/lib/wix-writers.js +0 -6041
- package/skills/wix-replatform/resources/rp-target-wix/lib/write-verification.js +0 -3
- package/skills/wix-replatform/resources/rp-target-wix/scripts/docs-survey-sync.js +0 -150
- package/skills/wix-replatform/resources/rp-target-wix/scripts/domain-knowledge-validate.js +0 -69
- package/skills/wix-replatform/resources/rp-target-wix/scripts/domain-knowledge.js +0 -100
- package/skills/wix-replatform/resources/rp-target-wix/scripts/verify-stores.js +0 -112
- package/skills/wix-replatform/resources/rp-telemetry/SKILL.md +0 -484
- package/skills/wix-replatform/resources/rp-telemetry/lib/bi-sink.js +0 -318
- package/skills/wix-replatform/resources/rp-telemetry/lib/telemetry-recorder.js +0 -2831
- package/skills/wix-replatform/resources/rp-telemetry/lib/transcript-digest.js +0 -318
- package/skills/wix-replatform/resources/rp-telemetry/scripts/meter-from-audit.js +0 -83
- package/skills/wix-replatform/resources/rp-telemetry/scripts/rp-telemetry.js +0 -243
- package/skills/wix-replatform/resources/rp-website-continuation/SKILL.md +0 -94
- package/skills/wix-replatform/scripts/artifact-freshness.js +0 -76
- package/skills/wix-replatform/scripts/census-reconciliation.js +0 -25
- package/skills/wix-replatform/scripts/cms-fallback.js +0 -89
- package/skills/wix-replatform/scripts/discovered-census.js +0 -26
- package/skills/wix-replatform/scripts/discovered-set-status.js +0 -33
- package/skills/wix-replatform/scripts/entity-qa-attestation.js +0 -130
- package/skills/wix-replatform/scripts/execution-health-check.js +0 -415
- package/skills/wix-replatform/scripts/execution-manifest-validate.js +0 -43
- package/skills/wix-replatform/scripts/execution-state-prepare.js +0 -128
- package/skills/wix-replatform/scripts/expectations-ledger.js +0 -44
- package/skills/wix-replatform/scripts/import-contract-verify.js +0 -183
- package/skills/wix-replatform/scripts/internal-link-audit.js +0 -90
- package/skills/wix-replatform/scripts/item-seo-tags-verify.js +0 -205
- package/skills/wix-replatform/scripts/migration-completion.js +0 -76
- package/skills/wix-replatform/scripts/orchestration-preflight.js +0 -67
- package/skills/wix-replatform/scripts/orchestration-route.js +0 -77
- package/skills/wix-replatform/scripts/orchestration-state.js +0 -381
- package/skills/wix-replatform/scripts/read-back-gate.js +0 -175
- package/skills/wix-replatform/scripts/replatform-console.js +0 -146
- package/skills/wix-replatform/scripts/replatform.js +0 -436
- package/skills/wix-replatform/scripts/source-secrets.js +0 -77
- package/skills/wix-replatform/scripts/url-redirects.js +0 -286
- package/skills/wix-replatform/scripts/user-action.js +0 -58
- package/skills/wix-replatform/scripts/website-handoff-generate.js +0 -64
- package/skills/wix-replatform/scripts/wix-dashboard-url.js +0 -54
- package/skills/wix-replatform/scripts/wix-destination.js +0 -143
- package/skills/wix-replatform/scripts/wix-headless-scaffold.js +0 -762
- package/skills/wix-vibe-headless/SKILL.md +0 -183
- package/skills/wix-vibe-headless/install/deploy.cjs +0 -221
- package/skills/wix-vibe-headless/install/pin-agents-md.cjs +0 -35
- package/skills/wix-vibe-headless/platforms/README.md +0 -26
- package/skills/wix-vibe-headless/platforms/base44-ecom-light-seed-with-install.md +0 -127
- package/skills/wix-vibe-headless/platforms/base44-ecom-light-seed.md +0 -121
- package/skills/wix-vibe-headless/platforms/base44-ecom-light.md +0 -87
- package/skills/wix-vibe-headless/platforms/base44.md +0 -148
- package/skills/wix-vibe-headless/platforms/generic.md +0 -132
- package/skills/wix-vibe-headless/references/_shared/nav/nav.tanstack.js +0 -30
- package/skills/wix-vibe-headless/references/_shared/routing.md +0 -86
- package/skills/wix-vibe-headless/references/blog/INSTRUCTIONS.md +0 -270
- package/skills/wix-vibe-headless/references/blog/app/components/PostCard.jsx +0 -43
- package/skills/wix-vibe-headless/references/blog/app/components/PostChips.jsx +0 -25
- package/skills/wix-vibe-headless/references/blog/app/components/PostGrid.jsx +0 -15
- package/skills/wix-vibe-headless/references/blog/app/context/TaxonomyContext.jsx +0 -35
- package/skills/wix-vibe-headless/references/blog/app/hooks/usePostDetail.js +0 -38
- package/skills/wix-vibe-headless/references/blog/app/pages/Blog.jsx +0 -40
- package/skills/wix-vibe-headless/references/blog/app/pages/CategoryPage.jsx +0 -54
- package/skills/wix-vibe-headless/references/blog/app/pages/PostDetail.jsx +0 -65
- package/skills/wix-vibe-headless/references/blog/app/pages/TagPage.jsx +0 -50
- package/skills/wix-vibe-headless/references/blog/app/rest/wix-blog.js +0 -217
- package/skills/wix-vibe-headless/references/blog/seed/SEED.md +0 -99
- package/skills/wix-vibe-headless/references/blog/seed/seed-blog.cjs +0 -269
- package/skills/wix-vibe-headless/references/bookings/INSTRUCTIONS.md +0 -342
- package/skills/wix-vibe-headless/references/bookings/app/components/BookingForm.jsx +0 -65
- package/skills/wix-vibe-headless/references/bookings/app/components/RentalDurationPicker.jsx +0 -67
- package/skills/wix-vibe-headless/references/bookings/app/components/ServiceCard.jsx +0 -47
- package/skills/wix-vibe-headless/references/bookings/app/components/ServiceGrid.jsx +0 -13
- package/skills/wix-vibe-headless/references/bookings/app/components/SlotPicker.jsx +0 -126
- package/skills/wix-vibe-headless/references/bookings/app/hooks/useRentalDuration.js +0 -128
- package/skills/wix-vibe-headless/references/bookings/app/hooks/useServiceDetail.js +0 -110
- package/skills/wix-vibe-headless/references/bookings/app/hooks/useServices.js +0 -58
- package/skills/wix-vibe-headless/references/bookings/app/lib/serviceFacts.js +0 -95
- package/skills/wix-vibe-headless/references/bookings/app/pages/ServiceDetail.jsx +0 -94
- package/skills/wix-vibe-headless/references/bookings/app/pages/Services.jsx +0 -89
- package/skills/wix-vibe-headless/references/bookings/app/rest/wix-bookings-checkout.js +0 -148
- package/skills/wix-vibe-headless/references/bookings/app/rest/wix-bookings-rentals.js +0 -250
- package/skills/wix-vibe-headless/references/bookings/app/rest/wix-bookings-services.js +0 -300
- package/skills/wix-vibe-headless/references/bookings/seed/SEED.md +0 -154
- package/skills/wix-vibe-headless/references/bookings/seed/seed-bookings.cjs +0 -333
- package/skills/wix-vibe-headless/references/bookings/seed/seed-rentals.cjs +0 -267
- package/skills/wix-vibe-headless/references/cms/INSTRUCTIONS.md +0 -178
- package/skills/wix-vibe-headless/references/cms/app/collection.config.js +0 -31
- package/skills/wix-vibe-headless/references/cms/app/lib/wixImage.js +0 -18
- package/skills/wix-vibe-headless/references/cms/app/rest/wix-cms.js +0 -231
- package/skills/wix-vibe-headless/references/cms/seed/SEED.md +0 -145
- package/skills/wix-vibe-headless/references/donations/INSTRUCTIONS.md +0 -88
- package/skills/wix-vibe-headless/references/donations/app/rest/wix-donations.js +0 -112
- package/skills/wix-vibe-headless/references/donations/seed/SEED.md +0 -11
- package/skills/wix-vibe-headless/references/donations/tests/donations.test.mjs +0 -258
- package/skills/wix-vibe-headless/references/events/INSTRUCTIONS.md +0 -267
- package/skills/wix-vibe-headless/references/events/app/components/CategoryFilter.jsx +0 -23
- package/skills/wix-vibe-headless/references/events/app/components/EventCard.jsx +0 -43
- package/skills/wix-vibe-headless/references/events/app/components/EventGrid.jsx +0 -13
- package/skills/wix-vibe-headless/references/events/app/components/EventRegistration.jsx +0 -29
- package/skills/wix-vibe-headless/references/events/app/components/RsvpForm.jsx +0 -57
- package/skills/wix-vibe-headless/references/events/app/components/TicketPicker.jsx +0 -78
- package/skills/wix-vibe-headless/references/events/app/hooks/useEventDetail.js +0 -27
- package/skills/wix-vibe-headless/references/events/app/hooks/useEventsList.js +0 -54
- package/skills/wix-vibe-headless/references/events/app/hooks/useRsvpForm.js +0 -40
- package/skills/wix-vibe-headless/references/events/app/hooks/useTicketing.js +0 -81
- package/skills/wix-vibe-headless/references/events/app/pages/EventDetail.jsx +0 -48
- package/skills/wix-vibe-headless/references/events/app/pages/Events.jsx +0 -36
- package/skills/wix-vibe-headless/references/events/app/rest/wix-events-browse.js +0 -136
- package/skills/wix-vibe-headless/references/events/app/rest/wix-events-registration.js +0 -187
- package/skills/wix-vibe-headless/references/events/seed/SEED.md +0 -103
- package/skills/wix-vibe-headless/references/events/seed/seed-events.cjs +0 -251
- package/skills/wix-vibe-headless/references/forms/INSTRUCTIONS.md +0 -487
- package/skills/wix-vibe-headless/references/forms/app/hooks/useWixForm.js +0 -425
- package/skills/wix-vibe-headless/references/forms/app/lib/wix-form-schema-utils.js +0 -187
- package/skills/wix-vibe-headless/references/forms/app/rest/wix-forms-submissions.js +0 -238
- package/skills/wix-vibe-headless/references/forms/app/rest/wix-forms.js +0 -108
- package/skills/wix-vibe-headless/references/forms/seed/SEED.md +0 -1836
- package/skills/wix-vibe-headless/references/members/INSTRUCTIONS.md +0 -328
- package/skills/wix-vibe-headless/references/members/app/components/LoginForm.jsx +0 -101
- package/skills/wix-vibe-headless/references/members/app/components/MemberMenu.jsx +0 -33
- package/skills/wix-vibe-headless/references/members/app/components/RequireAuth.jsx +0 -21
- package/skills/wix-vibe-headless/references/members/app/components/SocialButtons.jsx +0 -29
- package/skills/wix-vibe-headless/references/members/app/context/MemberContext.jsx +0 -54
- package/skills/wix-vibe-headless/references/members/app/hooks/useLoginForm.js +0 -77
- package/skills/wix-vibe-headless/references/members/app/pages/Account.jsx +0 -36
- package/skills/wix-vibe-headless/references/members/app/pages/Callback.jsx +0 -32
- package/skills/wix-vibe-headless/references/members/app/pages/Login.jsx +0 -35
- package/skills/wix-vibe-headless/references/members/app/rest/wix-members-auth.js +0 -390
- package/skills/wix-vibe-headless/references/members/install/Register.jsx +0 -22
- package/skills/wix-vibe-headless/references/members/seed/SEED.md +0 -21
- package/skills/wix-vibe-headless/references/portfolio/INSTRUCTIONS.md +0 -270
- package/skills/wix-vibe-headless/references/portfolio/app/components/CollectionCard.jsx +0 -31
- package/skills/wix-vibe-headless/references/portfolio/app/components/CollectionGrid.jsx +0 -15
- package/skills/wix-vibe-headless/references/portfolio/app/components/ProjectCard.jsx +0 -39
- package/skills/wix-vibe-headless/references/portfolio/app/components/ProjectGrid.jsx +0 -15
- package/skills/wix-vibe-headless/references/portfolio/app/components/ProjectMedia.jsx +0 -29
- package/skills/wix-vibe-headless/references/portfolio/app/hooks/useCollectionProjects.js +0 -35
- package/skills/wix-vibe-headless/references/portfolio/app/hooks/usePortfolioGallery.js +0 -27
- package/skills/wix-vibe-headless/references/portfolio/app/hooks/useProjectDetail.js +0 -25
- package/skills/wix-vibe-headless/references/portfolio/app/pages/CollectionPage.jsx +0 -39
- package/skills/wix-vibe-headless/references/portfolio/app/pages/Portfolio.jsx +0 -27
- package/skills/wix-vibe-headless/references/portfolio/app/pages/ProjectDetail.jsx +0 -60
- package/skills/wix-vibe-headless/references/portfolio/app/rest/wix-portfolio.js +0 -223
- package/skills/wix-vibe-headless/references/portfolio/seed/SEED.md +0 -90
- package/skills/wix-vibe-headless/references/portfolio/seed/seed-portfolio.cjs +0 -236
- package/skills/wix-vibe-headless/references/pricing-plans/INSTRUCTIONS.md +0 -280
- package/skills/wix-vibe-headless/references/pricing-plans/app/components/OrderCard.jsx +0 -35
- package/skills/wix-vibe-headless/references/pricing-plans/app/components/PlanCard.jsx +0 -48
- package/skills/wix-vibe-headless/references/pricing-plans/app/components/PlanGrid.jsx +0 -16
- package/skills/wix-vibe-headless/references/pricing-plans/app/components/PlanPrice.jsx +0 -35
- package/skills/wix-vibe-headless/references/pricing-plans/app/hooks/useMyPlans.js +0 -25
- package/skills/wix-vibe-headless/references/pricing-plans/app/hooks/usePlanDetail.js +0 -28
- package/skills/wix-vibe-headless/references/pricing-plans/app/hooks/usePlans.js +0 -30
- package/skills/wix-vibe-headless/references/pricing-plans/app/pages/MyPlans.jsx +0 -30
- package/skills/wix-vibe-headless/references/pricing-plans/app/pages/PlanDetail.jsx +0 -53
- package/skills/wix-vibe-headless/references/pricing-plans/app/pages/Plans.jsx +0 -28
- package/skills/wix-vibe-headless/references/pricing-plans/app/rest/wix-pricing-plans.js +0 -157
- package/skills/wix-vibe-headless/references/pricing-plans/seed/SEED.md +0 -82
- package/skills/wix-vibe-headless/references/pricing-plans/seed/seed-pricing-plans.cjs +0 -251
- package/skills/wix-vibe-headless/references/rentals/INSTRUCTIONS.md +0 -13
- package/skills/wix-vibe-headless/references/restaurants/INSTRUCTIONS.md +0 -290
- package/skills/wix-vibe-headless/references/restaurants/app/components/ItemDialog.jsx +0 -81
- package/skills/wix-vibe-headless/references/restaurants/app/components/MenuItemCard.jsx +0 -71
- package/skills/wix-vibe-headless/references/restaurants/app/components/MenuList.jsx +0 -43
- package/skills/wix-vibe-headless/references/restaurants/app/components/OrderCartButton.jsx +0 -21
- package/skills/wix-vibe-headless/references/restaurants/app/components/OrderCartDrawer.jsx +0 -72
- package/skills/wix-vibe-headless/references/restaurants/app/context/OrderCartContext.jsx +0 -66
- package/skills/wix-vibe-headless/references/restaurants/app/hooks/useItemOrder.js +0 -32
- package/skills/wix-vibe-headless/references/restaurants/app/hooks/useReservation.js +0 -73
- package/skills/wix-vibe-headless/references/restaurants/app/pages/Menu.jsx +0 -28
- package/skills/wix-vibe-headless/references/restaurants/app/pages/Reservations.jsx +0 -102
- package/skills/wix-vibe-headless/references/restaurants/app/rest/wix-restaurants-menu.js +0 -224
- package/skills/wix-vibe-headless/references/restaurants/app/rest/wix-restaurants-ordering.js +0 -218
- package/skills/wix-vibe-headless/references/restaurants/app/rest/wix-restaurants-reservations.js +0 -107
- package/skills/wix-vibe-headless/references/restaurants/seed/SEED.md +0 -176
- package/skills/wix-vibe-headless/references/restaurants/seed/seed-restaurants.cjs +0 -452
- package/skills/wix-vibe-headless/references/shared/app/components/WixManageBanner.jsx +0 -56
- package/skills/wix-vibe-headless/references/shared/app/lib/nav.js +0 -9
- package/skills/wix-vibe-headless/references/shared/app/rest/wix-client.js +0 -185
- package/skills/wix-vibe-headless/references/shared/app/rest/wix-config.js +0 -8
- package/skills/wix-vibe-headless/references/storefront/INSTRUCTIONS.md +0 -471
- package/skills/wix-vibe-headless/references/storefront/app/components/CartButton.jsx +0 -20
- package/skills/wix-vibe-headless/references/storefront/app/components/CartDrawer.jsx +0 -167
- package/skills/wix-vibe-headless/references/storefront/app/context/CartContext.jsx +0 -83
- package/skills/wix-vibe-headless/references/storefront/app/hooks/useProductCard.js +0 -104
- package/skills/wix-vibe-headless/references/storefront/app/hooks/useProductDetail.js +0 -163
- package/skills/wix-vibe-headless/references/storefront/app/hooks/useShop.js +0 -83
- package/skills/wix-vibe-headless/references/storefront/app/hooks/useVariantOptions.js +0 -76
- package/skills/wix-vibe-headless/references/storefront/app/lib/storeImage.js +0 -64
- package/skills/wix-vibe-headless/references/storefront/app/rest/wix-store-cart.js +0 -176
- package/skills/wix-vibe-headless/references/storefront/app/rest/wix-store-catalog.js +0 -218
- package/skills/wix-vibe-headless/references/storefront/seed/SEED.md +0 -174
- package/skills/wix-vibe-headless/references/storefront/seed/seed-store.cjs +0 -546
|
@@ -1,270 +0,0 @@
|
|
|
1
|
-
# Wix Portfolio — ready-made client
|
|
2
|
-
|
|
3
|
-
The portfolio client is **shipped as real files**, not snippets to regenerate. It's a complete
|
|
4
|
-
collections gallery + collection page + project detail (media gallery + `details[]` rows), styled
|
|
5
|
-
with your app's design tokens (base44's `src/index.css` — the shadcn palette the design phase already
|
|
6
|
-
set). The install step copied it into `src/`; you wire the routes — you generate almost none of the
|
|
7
|
-
read/render code (return-object destructuring, `item.type` media branching, the `details[]` link
|
|
8
|
-
shape all ship and are correct).
|
|
9
|
-
|
|
10
|
-
Talks to Wix directly over the public `WIX_CLIENT_ID` (anonymous visitor tokens). Portfolio is
|
|
11
|
-
**read-only**: never mock projects, never invent media — render live Wix data or the shipped empty
|
|
12
|
-
state. The content tree is **Collection → Project → Project Item (image/video)**.
|
|
13
|
-
|
|
14
|
-
## Prerequisites
|
|
15
|
-
- The site's **Wix Portfolio** is the read target. It's installed and seeded separately (see
|
|
16
|
-
**Seeding** below), in parallel with this build — so it may be empty at build time; the client
|
|
17
|
-
renders the shipped empty state until collections and projects land.
|
|
18
|
-
- The public headless **`WIX_CLIENT_ID`** from your prompt (visitor-facing, safe to hardcode/commit).
|
|
19
|
-
- If the read calls return `403`/`428` before content is published, the Portfolio app or its content
|
|
20
|
-
may not be live yet — a **Wix dashboard step the owner completes**, out of scope here. Flag it and
|
|
21
|
-
continue; don't fall back to mock data.
|
|
22
|
-
|
|
23
|
-
## STEP 1 — The client is already in `src/`
|
|
24
|
-
The install step (base44.md STEP 1) deployed the whole portfolio UI client + REST scaffolds into
|
|
25
|
-
`src/` (imports use the `@/` alias → `src/`). Here's every file and what it is — **this is your map,
|
|
26
|
-
so you don't need to open them:**
|
|
27
|
-
|
|
28
|
-
| file | what it is |
|
|
29
|
-
|---|---|
|
|
30
|
-
| `hooks/usePortfolioGallery.js` | collections gallery data — first page + count + cursor paging |
|
|
31
|
-
| `hooks/useCollectionProjects.js` | one collection's header + its projects (paged), by slug |
|
|
32
|
-
| `hooks/useProjectDetail.js` | project + its media gallery, by slug (null → not-found) |
|
|
33
|
-
| `components/CollectionCard.jsx`, `CollectionGrid.jsx` | collections listing UI (grid + card, with empty state) |
|
|
34
|
-
| `components/ProjectCard.jsx`, `ProjectGrid.jsx` | projects listing UI (grid + card, with empty state) |
|
|
35
|
-
| `components/ProjectMedia.jsx` | one gallery item — branches on `item.type` (IMAGE / VIDEO) |
|
|
36
|
-
| `components/WixManageBanner.jsx` | preview-only manage banner — drop it into your Layout (STEP 3) |
|
|
37
|
-
| `pages/Portfolio.jsx` | collections gallery route (`/portfolio`) |
|
|
38
|
-
| `pages/CollectionPage.jsx` | collection page route (`/collection/:slug`) |
|
|
39
|
-
| `pages/ProjectDetail.jsx` | project detail route (`/project/:slug`) |
|
|
40
|
-
| `rest/wix-config.js` | the two ids, written by the install step |
|
|
41
|
-
| `rest/wix-client.js` + `rest/wix-portfolio.js` | REST transport + portfolio read helpers |
|
|
42
|
-
|
|
43
|
-
They're already in place — go **straight to theming + wiring**, nothing to verify first. **Don't
|
|
44
|
-
`read_file` the shipped page/component/hook source to inspect it** — the table above says what each
|
|
45
|
-
is and every field shape you need is in the snippets below. Read a shipped file's source **only** on
|
|
46
|
-
a real fallback — a runtime error, or a field the snippets don't cover (see "Fallback only" at the
|
|
47
|
-
end). (Files missing? the install's `deploy` result lists what it wrote; re-run install, or copy
|
|
48
|
-
`references/portfolio/app/` → `src/`.)
|
|
49
|
-
|
|
50
|
-
**Their `Link`/`useParams` imports come from `@/lib/nav`**, so the same sources run on either
|
|
51
|
-
template. That adapter is installed at `src/lib/nav.js` with the rest of the deployed tree — use
|
|
52
|
-
the file that is there, and on TanStack check it first ([which template?](../_shared/routing.md)).
|
|
53
|
-
Import from `@/lib/nav` in the pages you write too, and they stay portable the same way.
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
## STEP 2 — Theme
|
|
58
|
-
Use the existing Base44 theme in `src/index.css` so your pages and the shipped components
|
|
59
|
-
share the same colors and typography.
|
|
60
|
-
|
|
61
|
-
## STEP 3 — Wire routes (surgical `find_replace` on `src/App.jsx`, never a rewrite)
|
|
62
|
-
|
|
63
|
-
> **The template decides this step, and `src/routes/__root.jsx` is the question to ask first.**
|
|
64
|
-
> Present → TanStack Start, which mounts these pages as route files at the end of this step; absent
|
|
65
|
-
> → React Router, which the wiring below is written for. Ask in that order: an `src/App.jsx` can
|
|
66
|
-
> exist on a TanStack app because an agent created one, and `__root.jsx` is never there by mistake.
|
|
67
|
-
> The installed `src/lib/nav.js` defaults to the React Router adapter, so on TanStack swap it:
|
|
68
|
-
> [both patterns](../_shared/routing.md).
|
|
69
|
-
>
|
|
70
|
-
> **Import `Link`, `useParams` and friends from `@/lib/nav` in the pages you write too** — same
|
|
71
|
-
> names as the router exports, and nothing you write is pinned to one template.
|
|
72
|
-
|
|
73
|
-
**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.
|
|
74
|
-
`App.jsx` carries required platform auth scaffolding (`AuthProvider`/`useAuth`) — edit it in, don't
|
|
75
|
-
replace it. Portfolio is read-only with no cross-page state, so there's **no provider to wrap** (no
|
|
76
|
-
cart equivalent) — just the Layout and the routes.
|
|
77
|
-
- Put your **header + footer in a `Layout`** that renders `<Outlet/>` between them, and nest every
|
|
78
|
-
route under one pathless `<Route element={<Layout/>}>`. Your brand chrome then wraps **every** page
|
|
79
|
-
— including the shipped `Portfolio` / `CollectionPage` / `ProjectDetail` — so you **never edit the
|
|
80
|
-
shipped pages to add a header/footer** (they render inside `<Outlet/>` as-is).
|
|
81
|
-
- **Pin the top chrome as one fixed block.** Put `<WixManageBanner/>` (shipped, preview-only) **above**
|
|
82
|
-
your `<Header/>` inside a single `position:fixed` top region — the header itself is plain in-flow
|
|
83
|
-
markup, the region owns the fixing — so banner + header ride together (no scroll drift/gap). Pad
|
|
84
|
-
the content by the region's measured height so it clears the chrome and self-corrects when the
|
|
85
|
-
banner is dismissed.
|
|
86
|
-
- Routes under the Layout: `/portfolio` → `Portfolio`, `/collection/:slug` → `CollectionPage`,
|
|
87
|
-
`/project/:slug` → `ProjectDetail` (all shipped, as-is). **You add `/` → your own Home** page.
|
|
88
|
-
|
|
89
|
-
```jsx
|
|
90
|
-
import { useRef, useState, useEffect } from "react";
|
|
91
|
-
import { Routes, Route, Outlet } from "react-router-dom";
|
|
92
|
-
import WixManageBanner from "@/components/WixManageBanner"; // shipped, preview-only · default export, no props
|
|
93
|
-
import Portfolio from "@/pages/Portfolio"; // shipped · default export, no props
|
|
94
|
-
import CollectionPage from "@/pages/CollectionPage"; // shipped · default export, no props
|
|
95
|
-
import ProjectDetail from "@/pages/ProjectDetail"; // shipped · default export, no props
|
|
96
|
-
import Home from "@/pages/Home"; // YOU build
|
|
97
|
-
import Header from "@/components/Header"; // YOU build — plain in-flow markup, NOT position:fixed
|
|
98
|
-
import Footer from "@/components/Footer"; // YOU build
|
|
99
|
-
|
|
100
|
-
function Layout() {
|
|
101
|
-
const topRef = useRef(null);
|
|
102
|
-
const [offset, setOffset] = useState(0);
|
|
103
|
-
useEffect(() => { // measure the fixed region → pad content below it
|
|
104
|
-
const ro = new ResizeObserver(() => setOffset(topRef.current?.offsetHeight ?? 0));
|
|
105
|
-
if (topRef.current) ro.observe(topRef.current);
|
|
106
|
-
return () => ro.disconnect();
|
|
107
|
-
}, []);
|
|
108
|
-
return (<>
|
|
109
|
-
<div ref={topRef} style={{ position: "fixed", top: 0, left: 0, right: 0, zIndex: 50 }}>
|
|
110
|
-
<WixManageBanner /> {/* null on the published site / when dismissed */}
|
|
111
|
-
<Header /> {/* your brand header, in-flow inside this fixed block */}
|
|
112
|
-
</div>
|
|
113
|
-
<div style={{ paddingTop: offset }}> {/* clears the chrome; shrinks when the banner is dismissed */}
|
|
114
|
-
<Outlet /> {/* shipped pages render here, untouched */}
|
|
115
|
-
<Footer />
|
|
116
|
-
</div>
|
|
117
|
-
</>);
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
<Routes>
|
|
121
|
-
<Route element={<Layout />}> {/* chrome wraps all */}
|
|
122
|
-
<Route path="/" element={<Home />} /> {/* yours */}
|
|
123
|
-
<Route path="/portfolio" element={<Portfolio />} /> {/* shipped, as-is */}
|
|
124
|
-
<Route path="/collection/:slug" element={<CollectionPage />} />{/* shipped, as-is */}
|
|
125
|
-
<Route path="/project/:slug" element={<ProjectDetail />} /> {/* shipped, as-is */}
|
|
126
|
-
</Route>
|
|
127
|
-
</Routes>
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
### TanStack Start template — the same pages, mounted as files
|
|
132
|
-
|
|
133
|
-
Chrome (header, footer, the fixed banner region described above) goes in `src/routes/__root.jsx`
|
|
134
|
-
around its `<Outlet/>`, and any provider this vertical asks for wraps that `<Outlet/>` once. Each
|
|
135
|
-
route is a two-line file; shipped pages stay in `src/pages/` untouched.
|
|
136
|
-
|
|
137
|
-
| route | file | component |
|
|
138
|
-
|---|---|---|
|
|
139
|
-
| `/` | `src/routes/index.jsx` | `Home` |
|
|
140
|
-
| `/portfolio` | `src/routes/portfolio.jsx` | `Portfolio` |
|
|
141
|
-
| `/collection/:slug` | `src/routes/collection.$slug.jsx` | `CollectionPage` |
|
|
142
|
-
| `/project/:slug` | `src/routes/project.$slug.jsx` | `ProjectDetail` |
|
|
143
|
-
|
|
144
|
-
```jsx
|
|
145
|
-
// src/routes/portfolio.jsx
|
|
146
|
-
import { createFileRoute } from "@tanstack/react-router";
|
|
147
|
-
import Portfolio from "@/pages/Portfolio";
|
|
148
|
-
|
|
149
|
-
export const Route = createFileRoute("/portfolio")({ component: Portfolio });
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
Path params are `$name` in both the filename and the route path; `useParams()` from `@/lib/nav`
|
|
153
|
-
reads them unchanged. Full pattern, including `ssr: false` for per-user routes:
|
|
154
|
-
[`../_shared/routing.md`](../_shared/routing.md).
|
|
155
|
-
|
|
156
|
-
## What you build (not shipped)
|
|
157
|
-
The **home / landing page**, the **`Header`** and a **`Footer`** — the two you drop into the `Layout`
|
|
158
|
-
(STEP 3) so they wrap every route — plus the overall brand story, styled with the same base44
|
|
159
|
-
tokens/classes. **Compose the shipped pieces** — a featured strip is just `queryCollections` (or
|
|
160
|
-
`queryProjects`) + the shipped `CollectionGrid` / `ProjectGrid`; the nav is a link to `/portfolio`:
|
|
161
|
-
|
|
162
|
-
```jsx
|
|
163
|
-
import { useState, useEffect } from "react";
|
|
164
|
-
import { Link } from "react-router-dom";
|
|
165
|
-
import { queryCollections } from "@/rest/wix-portfolio";
|
|
166
|
-
import CollectionGrid from "@/components/CollectionGrid";
|
|
167
|
-
|
|
168
|
-
// Responsive header: choose ONE branch with a state flag — do NOT render a desktop nav AND a mobile
|
|
169
|
-
// nav toggled by `hidden md:flex` / `md:hidden`. These navs are inline-styled, and an inline
|
|
170
|
-
// `display` beats a Tailwind class, so `hidden` never applies — BOTH branches render. One branch.
|
|
171
|
-
export function Header() {
|
|
172
|
-
const [mobile, setMobile] = useState(() => window.innerWidth < 768);
|
|
173
|
-
useEffect(() => {
|
|
174
|
-
const onResize = () => setMobile(window.innerWidth < 768);
|
|
175
|
-
window.addEventListener("resize", onResize); // keep it reactive to viewport changes
|
|
176
|
-
return () => window.removeEventListener("resize", onResize);
|
|
177
|
-
}, []);
|
|
178
|
-
return (
|
|
179
|
-
<nav style={{ display: "flex", alignItems: "center", justifyContent: "space-between" }}>
|
|
180
|
-
{/* brand/logo */}
|
|
181
|
-
{mobile
|
|
182
|
-
? <YourMenu /> // your hamburger + a link to /portfolio
|
|
183
|
-
: <div style={{ display: "flex", gap: 24 }}><Link to="/portfolio">Work</Link></div>}
|
|
184
|
-
</nav>
|
|
185
|
-
);
|
|
186
|
-
}
|
|
187
|
-
export function Featured() { // on your home page
|
|
188
|
-
const [collections, setCollections] = useState([]);
|
|
189
|
-
// NB: queryCollections returns { collections, nextCursor } — destructure the array.
|
|
190
|
-
useEffect(() => { queryCollections({ limit: 6 }).then(({ collections }) => setCollections(collections)); }, []);
|
|
191
|
-
return <CollectionGrid collections={collections} empty="Collections coming soon." />;
|
|
192
|
-
}
|
|
193
|
-
```
|
|
194
|
-
Everything reads base44's design tokens (`index.css`), so your home/nav match the shipped pages automatically.
|
|
195
|
-
|
|
196
|
-
**Editing a component and the change doesn't show? It's the preview, not your code.** The dev preview
|
|
197
|
-
can serve a stale module after a write. Before diagnosing a visual bug you just "fixed", do a fresh
|
|
198
|
-
full navigate/reload of the preview and re-check — don't keep rewriting correct code against a stale
|
|
199
|
-
render.
|
|
200
|
-
|
|
201
|
-
## Using the client from your own UI (hand-built lists, images)
|
|
202
|
-
|
|
203
|
-
**Every list helper returns an OBJECT, not a bare array** — destructure the named key first, or
|
|
204
|
-
`.map`/`.filter` on the result throws `… is not a function` (the #1 portfolio-listing bug):
|
|
205
|
-
|
|
206
|
-
```jsx
|
|
207
|
-
// listings — destructure the named array + the cursor:
|
|
208
|
-
const { collections, nextCursor } = await queryCollections({ limit: 24 }); // visible, dashboard order
|
|
209
|
-
const { projects } = await queryProjects({ limit: 24 }); // all work, newest-first
|
|
210
|
-
const { projects: inCollection } = await queryProjectsByCollection(collectionId, { limit: 24 });
|
|
211
|
-
const { items, total } = await listProjectItems(projectId); // gallery — iterate `items`
|
|
212
|
-
|
|
213
|
-
// single fetches return the object or null (render a not-found/empty state, never invent one):
|
|
214
|
-
const collection = await getCollectionBySlug(slug);
|
|
215
|
-
const project = await getProjectBySlug(slug); // or getProject(id) when you hold a GUID
|
|
216
|
-
const n = await countCollections(); // number → 0 means the empty state
|
|
217
|
-
|
|
218
|
-
// media item branches on item.type ("IMAGE" | "VIDEO" | "UNDEFINED") — the shipped ProjectMedia
|
|
219
|
-
// already does this: IMAGE → item.image.imageInfo.url; VIDEO → item.video.videoInfo.resolutions[0].url
|
|
220
|
-
// (poster item.video.videoInfo.posters[0]). details[] rows: { label, text? } OR { label, link: { text, url, target } }.
|
|
221
|
-
|
|
222
|
-
// An image you render yourself (hero / custom card): make the url https + keep a token bg so a
|
|
223
|
-
// just-generated url that 404s for a second reads as a surface, not a blank block.
|
|
224
|
-
function BrandImage({ url, alt }) {
|
|
225
|
-
const src = url?.startsWith("//") ? `https:${url}` : url; // the shipped cards already do this
|
|
226
|
-
return <div className="bg-card"><img src={src} alt={alt} /></div>;
|
|
227
|
-
}
|
|
228
|
-
```
|
|
229
|
-
|
|
230
|
-
Cover images live at `collection.coverImage.imageInfo.url` and `project.coverImage.imageInfo.url`
|
|
231
|
-
(projects are a one-of: fall back to `coverVideo.videoInfo.posters[0].url` / `resolutions[0].url`).
|
|
232
|
-
|
|
233
|
-
Fallback only — when you hit an error or need something not shown here (collection SEO, portfolio
|
|
234
|
-
settings, a field these snippets don't have): read the relevant shipped file under `src/`, or look
|
|
235
|
-
it up via the documentation skill available in your environment / the Portfolio API reference. Each helper in `wix-portfolio.js`
|
|
236
|
-
links its own reference page inline; the whole area is here:
|
|
237
|
-
- Portfolio (collections, projects, project items): https://dev.wix.com/docs/api-reference/business-solutions/portfolio.md
|
|
238
|
-
|
|
239
|
-
## Hard rules
|
|
240
|
-
- Header/footer live in a `Layout` around `<Outlet/>` (STEP 3) — never edit the shipped
|
|
241
|
-
`Portfolio`/`CollectionPage`/`ProjectDetail` to add chrome.
|
|
242
|
-
- The Layout's fixed top region owns positioning: `<WixManageBanner/>` above `<Header/>`; your
|
|
243
|
-
`Header` is plain in-flow markup (not `position:fixed`).
|
|
244
|
-
- Route on `slug` (`getCollectionBySlug`/`getProjectBySlug`); use `getProject(id)` only when you hold a GUID.
|
|
245
|
-
- Render live Wix data or the shipped empty state — never mock projects, collections, or media, and
|
|
246
|
-
never hand-build Wix Media URLs or page permalinks (use the `url`/`imageInfo.url`/`resolutions[].url`
|
|
247
|
-
fields Wix returns). Hidden collections/projects are already filtered out — don't add them back.
|
|
248
|
-
|
|
249
|
-
## Point the user to their dashboard
|
|
250
|
-
Provide the deep link so the owner can edit content (substitute the site's `metaSiteId`):
|
|
251
|
-
- **Portfolio** — `https://manage.wix.com/dashboard/{metaSiteId}/wix-portfolio/projects`
|
|
252
|
-
(`Dashboard → Portfolio`). Projects and Collections are tabs on this one page: the **Projects** tab
|
|
253
|
-
adds projects and their media galleries; the **Collections** tab groups projects into collections.
|
|
254
|
-
|
|
255
|
-
## Seeding
|
|
256
|
-
Seed collections and projects per `seed/SEED.md` — separate from this client build; run in parallel.
|
|
257
|
-
|
|
258
|
-
## Verify (before declaring done)
|
|
259
|
-
- [ ] Client files copied into `src/`; `WIX_CLIENT_ID` set (not the placeholder).
|
|
260
|
-
- [ ] Opened the vertical's data route(s) (`/portfolio`, a collection, a project) — not just the home page — and confirmed the shipped components render themed (surface, text, brand) with images.
|
|
261
|
-
- [ ] `Layout` (fixed `<WixManageBanner/>` + `<Header/>` region, then `<Outlet/>` + Footer) wraps all
|
|
262
|
-
routes; shipped `Portfolio`/`CollectionPage`/`ProjectDetail` untouched; content clears the fixed chrome.
|
|
263
|
-
- [ ] Visitor token persists across reload (no re-mint storm; reads stay fast).
|
|
264
|
-
- [ ] Collections gallery renders live collections with cover images, in dashboard order.
|
|
265
|
-
- [ ] Clicking a collection lists its projects via `queryProjectsByCollection`.
|
|
266
|
-
- [ ] Project page renders the media gallery from `listProjectItems` (images AND videos) and the
|
|
267
|
-
`details[]` rows (text rows and link rows both).
|
|
268
|
-
- [ ] Slug routing works; an unknown slug shows the shipped not-found state (no invented content).
|
|
269
|
-
- [ ] Empty catalog shows the shipped empty state (`countCollections()` is 0); no mock content anywhere.
|
|
270
|
-
- [ ] Told the user they can continue setting up their portfolio in the dashboard, with the deep link.
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
// Collection tile → links to /collection/:slug. Styled with base44 design tokens (shadcn Tailwind
|
|
2
|
-
// classes) — re-skin via the app's design tokens (src/index.css :root/.dark), not this JSX. The
|
|
3
|
-
// `//`-protocol image fix and the coverImage.imageInfo.url field path are load-bearing.
|
|
4
|
-
import { Link } from "@/lib/nav";
|
|
5
|
-
|
|
6
|
-
function coverUrl(collection) {
|
|
7
|
-
const url = collection?.coverImage?.imageInfo?.url;
|
|
8
|
-
return url ? (url.startsWith("//") ? `https:${url}` : url) : null;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export default function CollectionCard({ collection }) {
|
|
12
|
-
const image = coverUrl(collection);
|
|
13
|
-
|
|
14
|
-
return (
|
|
15
|
-
<Link to={`/collection/${collection.slug}`}
|
|
16
|
-
className="flex flex-col no-underline text-foreground bg-card border border-border rounded-lg overflow-hidden shadow-sm">
|
|
17
|
-
<div className="aspect-[4/3] bg-background">
|
|
18
|
-
{image
|
|
19
|
-
? <img src={image} alt={collection.title} loading="lazy"
|
|
20
|
-
className="w-full h-full object-cover" />
|
|
21
|
-
: <div className="w-full h-full bg-muted flex items-center justify-center" aria-hidden="true"><svg viewBox="0 0 24 24" className="w-8 h-8 text-muted-foreground/40" fill="none" stroke="currentColor" strokeWidth="1.5"><rect x="3" y="3" width="18" height="18" rx="2" /><circle cx="8.5" cy="8.5" r="1.5" /><path d="m21 15-5-5L5 21" /></svg></div>}
|
|
22
|
-
</div>
|
|
23
|
-
<div className="p-3 flex flex-col gap-1">
|
|
24
|
-
<h3 className="m-0 font-display text-base font-semibold">{collection.title}</h3>
|
|
25
|
-
{collection.description && (
|
|
26
|
-
<p className="m-0 text-muted-foreground text-sm leading-normal">{collection.description}</p>
|
|
27
|
-
)}
|
|
28
|
-
</div>
|
|
29
|
-
</Link>
|
|
30
|
-
);
|
|
31
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
// Responsive collections grid + empty state. Styled with base44 design tokens (shadcn Tailwind classes).
|
|
2
|
-
import CollectionCard from "./CollectionCard";
|
|
3
|
-
|
|
4
|
-
export default function CollectionGrid({ collections, empty = "No collections yet." }) {
|
|
5
|
-
if (!collections?.length) {
|
|
6
|
-
return (
|
|
7
|
-
<p className="text-muted-foreground p-4 text-center">{empty}</p>
|
|
8
|
-
);
|
|
9
|
-
}
|
|
10
|
-
return (
|
|
11
|
-
<div className="grid gap-4 [grid-template-columns:repeat(auto-fill,minmax(280px,1fr))]">
|
|
12
|
-
{collections.map((c) => <CollectionCard key={c.id} collection={c} />)}
|
|
13
|
-
</div>
|
|
14
|
-
);
|
|
15
|
-
}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
// Project tile → links to /project/:slug. Styled with base44 design tokens (shadcn Tailwind classes)
|
|
2
|
-
// — re-skin via the app's design tokens (src/index.css :root/.dark), not this JSX. The cover is a
|
|
3
|
-
// one-of: image when present, else the video's poster / first resolution. The `//`-protocol fix and
|
|
4
|
-
// these field paths are load-bearing.
|
|
5
|
-
import { Link } from "@/lib/nav";
|
|
6
|
-
|
|
7
|
-
function https(url) {
|
|
8
|
-
return url ? (url.startsWith("//") ? `https:${url}` : url) : null;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
// coverImage.imageInfo is ONE-OF with coverVideo.videoInfo — fall back through the video.
|
|
12
|
-
function coverUrl(project) {
|
|
13
|
-
const image = project?.coverImage?.imageInfo?.url;
|
|
14
|
-
if (image) return https(image);
|
|
15
|
-
const vi = project?.coverVideo?.videoInfo;
|
|
16
|
-
return https(vi?.posters?.[0]?.url || vi?.resolutions?.[0]?.url || null);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export default function ProjectCard({ project }) {
|
|
20
|
-
const image = coverUrl(project);
|
|
21
|
-
|
|
22
|
-
return (
|
|
23
|
-
<Link to={`/project/${project.slug}`}
|
|
24
|
-
className="flex flex-col no-underline text-foreground bg-card border border-border rounded-lg overflow-hidden shadow-sm">
|
|
25
|
-
<div className="aspect-[4/3] bg-background">
|
|
26
|
-
{image
|
|
27
|
-
? <img src={image} alt={project.title} loading="lazy"
|
|
28
|
-
className="w-full h-full object-cover" />
|
|
29
|
-
: <div className="w-full h-full bg-muted flex items-center justify-center" aria-hidden="true"><svg viewBox="0 0 24 24" className="w-8 h-8 text-muted-foreground/40" fill="none" stroke="currentColor" strokeWidth="1.5"><rect x="3" y="3" width="18" height="18" rx="2" /><circle cx="8.5" cy="8.5" r="1.5" /><path d="m21 15-5-5L5 21" /></svg></div>}
|
|
30
|
-
</div>
|
|
31
|
-
<div className="p-3 flex flex-col gap-1">
|
|
32
|
-
<h3 className="m-0 font-display text-[15px] font-semibold">{project.title}</h3>
|
|
33
|
-
{project.description && (
|
|
34
|
-
<p className="m-0 text-muted-foreground text-sm leading-normal">{project.description}</p>
|
|
35
|
-
)}
|
|
36
|
-
</div>
|
|
37
|
-
</Link>
|
|
38
|
-
);
|
|
39
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
// Responsive projects grid + empty state. Styled with base44 design tokens (shadcn Tailwind classes).
|
|
2
|
-
import ProjectCard from "./ProjectCard";
|
|
3
|
-
|
|
4
|
-
export default function ProjectGrid({ projects, empty = "No projects yet." }) {
|
|
5
|
-
if (!projects?.length) {
|
|
6
|
-
return (
|
|
7
|
-
<p className="text-muted-foreground p-4 text-center">{empty}</p>
|
|
8
|
-
);
|
|
9
|
-
}
|
|
10
|
-
return (
|
|
11
|
-
<div className="grid gap-4 [grid-template-columns:repeat(auto-fill,minmax(240px,1fr))]">
|
|
12
|
-
{projects.map((p) => <ProjectCard key={p.id} project={p} />)}
|
|
13
|
-
</div>
|
|
14
|
-
);
|
|
15
|
-
}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
// One gallery media item. Branch on item.type ("IMAGE" | "VIDEO" | "UNDEFINED") — this branching
|
|
2
|
-
// and the field paths (image.imageInfo.url, video.videoInfo.resolutions[0].url) are load-bearing;
|
|
3
|
-
// re-skin via base44 design tokens (shadcn Tailwind classes), don't rewire the paths.
|
|
4
|
-
|
|
5
|
-
function https(url) {
|
|
6
|
-
return url ? (url.startsWith("//") ? `https:${url}` : url) : null;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export default function ProjectMedia({ item }) {
|
|
10
|
-
if (item.type === "IMAGE") {
|
|
11
|
-
const src = https(item.image?.imageInfo?.url);
|
|
12
|
-
return src ? (
|
|
13
|
-
<img src={src} alt={item.title || ""} loading="lazy"
|
|
14
|
-
className="block w-full h-auto rounded-sm" />
|
|
15
|
-
) : null;
|
|
16
|
-
}
|
|
17
|
-
if (item.type === "VIDEO") {
|
|
18
|
-
// resolutions[].url is the confirmed field; posters[0] is the poster (sub-shape not in the
|
|
19
|
-
// helper JSDoc — posters[0].url used here; confirm in documentation skill available in your environment if a brand needs more).
|
|
20
|
-
const vi = item.video?.videoInfo;
|
|
21
|
-
const src = https(vi?.resolutions?.[0]?.url);
|
|
22
|
-
const poster = https(vi?.posters?.[0]?.url);
|
|
23
|
-
return src ? (
|
|
24
|
-
<video src={src} poster={poster || undefined} controls playsInline
|
|
25
|
-
className="block w-full h-auto rounded-sm bg-card" />
|
|
26
|
-
) : null;
|
|
27
|
-
}
|
|
28
|
-
return null; // UNDEFINED — nothing renderable
|
|
29
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
// useCollectionProjects — one collection's header + its project grid, no markup. Resolve the
|
|
2
|
-
// collection by slug (null → not-found), then page its projects. getCollectionBySlug returns the
|
|
3
|
-
// object or null; queryProjectsByCollection returns { projects, nextCursor } (an OBJECT) — keep
|
|
4
|
-
// the destructuring, or `.map` on the result throws.
|
|
5
|
-
import { useState, useEffect } from "react";
|
|
6
|
-
import { getCollectionBySlug, queryProjectsByCollection } from "@/rest/wix-portfolio";
|
|
7
|
-
|
|
8
|
-
export function useCollectionProjects(slug, { limit = 24 } = {}) {
|
|
9
|
-
const [collection, setCollection] = useState(null);
|
|
10
|
-
const [notFound, setNotFound] = useState(false);
|
|
11
|
-
const [projects, setProjects] = useState(null); // null = loading
|
|
12
|
-
const [cursor, setCursor] = useState(null);
|
|
13
|
-
|
|
14
|
-
useEffect(() => {
|
|
15
|
-
setNotFound(false);
|
|
16
|
-
setProjects(null);
|
|
17
|
-
getCollectionBySlug(slug).then((c) => {
|
|
18
|
-
if (!c) return setNotFound(true);
|
|
19
|
-
setCollection(c);
|
|
20
|
-
queryProjectsByCollection(c.id, { limit }).then(({ projects, nextCursor }) => {
|
|
21
|
-
setProjects(projects);
|
|
22
|
-
setCursor(nextCursor);
|
|
23
|
-
});
|
|
24
|
-
});
|
|
25
|
-
}, [slug, limit]);
|
|
26
|
-
|
|
27
|
-
const loadMore = () =>
|
|
28
|
-
collection &&
|
|
29
|
-
queryProjectsByCollection(collection.id, { limit, cursor }).then(({ projects: more, nextCursor }) => {
|
|
30
|
-
setProjects((p) => [...(p ?? []), ...more]);
|
|
31
|
-
setCursor(nextCursor);
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
return { collection, notFound, projects, cursor, loadMore };
|
|
35
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
// usePortfolioGallery — collections-gallery data, no markup: first page + count for the empty
|
|
2
|
-
// state + cursor paging. queryCollections returns { collections, nextCursor } (an OBJECT, not an
|
|
3
|
-
// array) and countCollections returns a number — those shapes are the bug-prone part; keep them.
|
|
4
|
-
import { useState, useEffect } from "react";
|
|
5
|
-
import { queryCollections, countCollections } from "@/rest/wix-portfolio";
|
|
6
|
-
|
|
7
|
-
export function usePortfolioGallery({ limit = 24 } = {}) {
|
|
8
|
-
const [collections, setCollections] = useState(null); // null = loading
|
|
9
|
-
const [cursor, setCursor] = useState(null);
|
|
10
|
-
const [total, setTotal] = useState(null); // 0 → empty state
|
|
11
|
-
|
|
12
|
-
useEffect(() => {
|
|
13
|
-
countCollections().then(setTotal);
|
|
14
|
-
queryCollections({ limit }).then(({ collections, nextCursor }) => {
|
|
15
|
-
setCollections(collections);
|
|
16
|
-
setCursor(nextCursor);
|
|
17
|
-
});
|
|
18
|
-
}, [limit]);
|
|
19
|
-
|
|
20
|
-
const loadMore = () =>
|
|
21
|
-
queryCollections({ limit, cursor }).then(({ collections: more, nextCursor }) => {
|
|
22
|
-
setCollections((c) => [...(c ?? []), ...more]);
|
|
23
|
-
setCursor(nextCursor);
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
return { collections, total, cursor, loadMore };
|
|
27
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
// useProjectDetail — project-detail data, no markup: load a project by slug (null → not-found),
|
|
2
|
-
// then load its media gallery. listProjectItems returns { items, total } (an OBJECT, not a bare
|
|
3
|
-
// array) — iterate `items`; that shape is the bug-prone part. The PDP page only renders what this
|
|
4
|
-
// returns. details[] rows come through untouched: [{ label, text? OR link: { text, url, target } }].
|
|
5
|
-
import { useState, useEffect } from "react";
|
|
6
|
-
import { getProjectBySlug, listProjectItems } from "@/rest/wix-portfolio";
|
|
7
|
-
|
|
8
|
-
export function useProjectDetail(slug) {
|
|
9
|
-
const [project, setProject] = useState(null);
|
|
10
|
-
const [notFound, setNotFound] = useState(false);
|
|
11
|
-
const [items, setItems] = useState([]);
|
|
12
|
-
|
|
13
|
-
useEffect(() => {
|
|
14
|
-
setNotFound(false);
|
|
15
|
-
setProject(null);
|
|
16
|
-
setItems([]);
|
|
17
|
-
getProjectBySlug(slug).then((p) => {
|
|
18
|
-
if (!p) return setNotFound(true);
|
|
19
|
-
setProject(p);
|
|
20
|
-
listProjectItems(p.id).then(({ items }) => setItems(items));
|
|
21
|
-
});
|
|
22
|
-
}, [slug]);
|
|
23
|
-
|
|
24
|
-
return { project, notFound, items };
|
|
25
|
-
}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
// Collection page — collection header + its project grid (paged). Thin view over
|
|
2
|
-
// useCollectionProjects (all data logic lives in the hook). Styled with base44 design tokens (shadcn Tailwind classes).
|
|
3
|
-
import { useParams } from "@/lib/nav";
|
|
4
|
-
import { useCollectionProjects } from "@/hooks/useCollectionProjects";
|
|
5
|
-
import ProjectGrid from "@/components/ProjectGrid";
|
|
6
|
-
|
|
7
|
-
export default function CollectionPage() {
|
|
8
|
-
const { slug } = useParams();
|
|
9
|
-
const { collection, notFound, projects, cursor, loadMore } = useCollectionProjects(slug, { limit: 24 });
|
|
10
|
-
|
|
11
|
-
if (notFound) return <Centered>Collection not found.</Centered>;
|
|
12
|
-
if (!collection) return <Centered>Loading…</Centered>;
|
|
13
|
-
|
|
14
|
-
return (
|
|
15
|
-
<main className="max-w-[1200px] mx-auto p-4">
|
|
16
|
-
<header className="mb-6">
|
|
17
|
-
<h1 className="font-display m-0 mb-2">{collection.title}</h1>
|
|
18
|
-
{collection.description && (
|
|
19
|
-
<p className="text-muted-foreground leading-relaxed m-0">{collection.description}</p>
|
|
20
|
-
)}
|
|
21
|
-
</header>
|
|
22
|
-
{projects === null
|
|
23
|
-
? <p className="text-muted-foreground">Loading…</p>
|
|
24
|
-
: <ProjectGrid projects={projects} empty="No projects in this collection yet." />}
|
|
25
|
-
{cursor && (
|
|
26
|
-
<div className="flex justify-center mt-6">
|
|
27
|
-
<button onClick={loadMore}
|
|
28
|
-
className="px-6 py-2.5 cursor-pointer bg-primary text-primary-foreground border-none rounded-sm text-[15px] font-semibold">
|
|
29
|
-
Load more
|
|
30
|
-
</button>
|
|
31
|
-
</div>
|
|
32
|
-
)}
|
|
33
|
-
</main>
|
|
34
|
-
);
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
function Centered({ children }) {
|
|
38
|
-
return <div className="p-12 text-center text-muted-foreground">{children}</div>;
|
|
39
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
// Portfolio page — collections gallery (grid + empty state + paging). Thin view over
|
|
2
|
-
// usePortfolioGallery (all data logic lives in the hook). Styled with base44 design tokens (shadcn Tailwind classes).
|
|
3
|
-
import { usePortfolioGallery } from "@/hooks/usePortfolioGallery";
|
|
4
|
-
import CollectionGrid from "@/components/CollectionGrid";
|
|
5
|
-
|
|
6
|
-
export default function Portfolio() {
|
|
7
|
-
const { collections, total, cursor, loadMore } = usePortfolioGallery({ limit: 24 });
|
|
8
|
-
|
|
9
|
-
return (
|
|
10
|
-
<main className="max-w-[1200px] mx-auto p-4">
|
|
11
|
-
<h1 className="font-display mb-4">Work</h1>
|
|
12
|
-
{collections === null
|
|
13
|
-
? <p className="text-muted-foreground">Loading…</p>
|
|
14
|
-
: <CollectionGrid
|
|
15
|
-
collections={collections}
|
|
16
|
-
empty={total === 0 ? "No collections yet — add them from your Wix dashboard." : "No collections to show."} />}
|
|
17
|
-
{cursor && (
|
|
18
|
-
<div className="flex justify-center mt-6">
|
|
19
|
-
<button onClick={loadMore}
|
|
20
|
-
className="px-6 py-2.5 cursor-pointer bg-primary text-primary-foreground border-none rounded-sm text-[15px] font-semibold">
|
|
21
|
-
Load more
|
|
22
|
-
</button>
|
|
23
|
-
</div>
|
|
24
|
-
)}
|
|
25
|
-
</main>
|
|
26
|
-
);
|
|
27
|
-
}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
// Project detail — thin view over useProjectDetail (all data logic lives in the hook). Renders the
|
|
2
|
-
// header, the details[] rows (text OR link), and the media gallery (each item via ProjectMedia,
|
|
3
|
-
// which branches on item.type). Styled with base44 design tokens (shadcn Tailwind classes).
|
|
4
|
-
import { useParams } from "@/lib/nav";
|
|
5
|
-
import { useProjectDetail } from "@/hooks/useProjectDetail";
|
|
6
|
-
import ProjectMedia from "@/components/ProjectMedia";
|
|
7
|
-
|
|
8
|
-
export default function ProjectDetail() {
|
|
9
|
-
const { slug } = useParams();
|
|
10
|
-
const { project, notFound, items } = useProjectDetail(slug);
|
|
11
|
-
|
|
12
|
-
if (notFound) return <Centered>Project not found.</Centered>;
|
|
13
|
-
if (!project) return <Centered>Loading…</Centered>;
|
|
14
|
-
|
|
15
|
-
const details = project.details || [];
|
|
16
|
-
return (
|
|
17
|
-
<main className="max-w-[1200px] mx-auto p-4">
|
|
18
|
-
<header className="mb-6">
|
|
19
|
-
<h1 className="font-display m-0 mb-2">{project.title}</h1>
|
|
20
|
-
{project.description && (
|
|
21
|
-
<p className="text-muted-foreground leading-relaxed m-0">{project.description}</p>
|
|
22
|
-
)}
|
|
23
|
-
</header>
|
|
24
|
-
|
|
25
|
-
{/* details[] row: { label, text? } OR { label, link: { text, url, target } } */}
|
|
26
|
-
{details.length > 0 && (
|
|
27
|
-
<dl className="grid [grid-template-columns:auto_1fr] gap-x-6 gap-y-2 m-0 mb-8 items-baseline">
|
|
28
|
-
{details.map((d, i) => (
|
|
29
|
-
<div key={i} className="contents">
|
|
30
|
-
<dt className="text-muted-foreground text-sm">{d.label}</dt>
|
|
31
|
-
<dd className="m-0">
|
|
32
|
-
{d.link
|
|
33
|
-
? <a href={d.link.url} target={d.link.target} rel="noopener"
|
|
34
|
-
className="text-primary">{d.link.text}</a>
|
|
35
|
-
: d.text}
|
|
36
|
-
</dd>
|
|
37
|
-
</div>
|
|
38
|
-
))}
|
|
39
|
-
</dl>
|
|
40
|
-
)}
|
|
41
|
-
|
|
42
|
-
<div className="flex flex-col gap-4">
|
|
43
|
-
{items.map((item) => (
|
|
44
|
-
<figure key={item.id} className="m-0">
|
|
45
|
-
{item.link
|
|
46
|
-
? <a href={item.link.url} target={item.link.target} rel="noopener"><ProjectMedia item={item} /></a>
|
|
47
|
-
: <ProjectMedia item={item} />}
|
|
48
|
-
{item.title && (
|
|
49
|
-
<figcaption className="text-muted-foreground text-sm mt-1.5">{item.title}</figcaption>
|
|
50
|
-
)}
|
|
51
|
-
</figure>
|
|
52
|
-
))}
|
|
53
|
-
</div>
|
|
54
|
-
</main>
|
|
55
|
-
);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
function Centered({ children }) {
|
|
59
|
-
return <div className="p-12 text-center text-muted-foreground">{children}</div>;
|
|
60
|
-
}
|