@wix/agent-skills 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +111 -0
  3. package/package.json +29 -0
  4. package/skills/wix-app/SKILL.md +344 -0
  5. package/skills/wix-app/references/APP_IDENTIFIERS.md +35 -0
  6. package/skills/wix-app/references/APP_MARKET_REVIEW.md +311 -0
  7. package/skills/wix-app/references/APP_VALIDATION.md +171 -0
  8. package/skills/wix-app/references/BACKEND_API.md +233 -0
  9. package/skills/wix-app/references/BACKEND_EVENT.md +116 -0
  10. package/skills/wix-app/references/CODE_QUALITY.md +33 -0
  11. package/skills/wix-app/references/CUSTOM_ELEMENT_WIDGET.md +587 -0
  12. package/skills/wix-app/references/DASHBOARD_MENU_PLUGIN.md +157 -0
  13. package/skills/wix-app/references/DASHBOARD_MODAL.md +283 -0
  14. package/skills/wix-app/references/DASHBOARD_PAGE.md +403 -0
  15. package/skills/wix-app/references/DASHBOARD_PLUGIN.md +205 -0
  16. package/skills/wix-app/references/DATA_COLLECTION.md +451 -0
  17. package/skills/wix-app/references/DOCUMENTATION.md +42 -0
  18. package/skills/wix-app/references/EDITOR_REACT_COMPONENT.md +65 -0
  19. package/skills/wix-app/references/EMBEDDED_SCRIPT.md +468 -0
  20. package/skills/wix-app/references/EXTENSION_REGISTRATION.md +96 -0
  21. package/skills/wix-app/references/SERVICE_PLUGIN.md +235 -0
  22. package/skills/wix-app/references/SITE_PLUGIN.md +436 -0
  23. package/skills/wix-app/references/STORES_VERSIONING.md +334 -0
  24. package/skills/wix-app/references/backend-event/COMMON-EVENTS.md +84 -0
  25. package/skills/wix-app/references/custom-element-widget/SETTINGS_PANEL.md +345 -0
  26. package/skills/wix-app/references/dashboard-menu-plugin/blog-slots.md +71 -0
  27. package/skills/wix-app/references/dashboard-menu-plugin/bookings-slots.md +58 -0
  28. package/skills/wix-app/references/dashboard-menu-plugin/crm-slots.md +8 -0
  29. package/skills/wix-app/references/dashboard-menu-plugin/ecommerce-slots.md +17 -0
  30. package/skills/wix-app/references/dashboard-menu-plugin/events-slots.md +29 -0
  31. package/skills/wix-app/references/dashboard-menu-plugin/restaurants-slots.md +27 -0
  32. package/skills/wix-app/references/dashboard-menu-plugin/stores-slots.md +35 -0
  33. package/skills/wix-app/references/dashboard-page/API_SPEC.md +138 -0
  34. package/skills/wix-app/references/dashboard-page/DASHBOARD_API.md +573 -0
  35. package/skills/wix-app/references/dashboard-page/DYNAMIC_PARAMETERS.md +269 -0
  36. package/skills/wix-app/references/dashboard-page/ECOM_NAVIGATION.md +164 -0
  37. package/skills/wix-app/references/dashboard-plugin/SLOTS.md +294 -0
  38. package/skills/wix-app/references/data-collection/WIX_DATA.md +270 -0
  39. package/skills/wix-app/references/data-collection/extension-template.ts +107 -0
  40. package/skills/wix-app/references/editor-react-component/ACCESSIBILITY.md +138 -0
  41. package/skills/wix-app/references/editor-react-component/COMPONENT-API.md +454 -0
  42. package/skills/wix-app/references/editor-react-component/COMPONENT-CONFIGURATION.md +165 -0
  43. package/skills/wix-app/references/editor-react-component/CSS-GUIDELINES.md +576 -0
  44. package/skills/wix-app/references/editor-react-component/DIRECTIONALITY.md +170 -0
  45. package/skills/wix-app/references/editor-react-component/EDIT-FLOW.md +6 -0
  46. package/skills/wix-app/references/editor-react-component/PARTS.md +25 -0
  47. package/skills/wix-app/references/editor-react-component/PROPS-VS-CSS.md +203 -0
  48. package/skills/wix-app/references/editor-react-component/REACT-GUIDELINES.md +167 -0
  49. package/skills/wix-app/references/editor-react-component/REACT-PATTERNS.md +137 -0
  50. package/skills/wix-app/references/service-plugin/ADDITIONAL-FEES.md +112 -0
  51. package/skills/wix-app/references/service-plugin/BOOKINGS-STAFF-SORTING.md +118 -0
  52. package/skills/wix-app/references/service-plugin/DISCOUNT-TRIGGERS.md +87 -0
  53. package/skills/wix-app/references/service-plugin/GIFT-CARDS.md +86 -0
  54. package/skills/wix-app/references/service-plugin/PAYMENT-SETTINGS.md +135 -0
  55. package/skills/wix-app/references/service-plugin/SHIPPING-RATES.md +79 -0
  56. package/skills/wix-app/references/service-plugin/VALIDATIONS.md +68 -0
  57. package/skills/wix-app/references/site-plugin/EXAMPLES.md +311 -0
  58. package/skills/wix-app/references/site-plugin/SLOTS.md +263 -0
  59. package/skills/wix-design-system/SKILL.md +129 -0
  60. package/skills/wix-design-system/references/file-structure.md +56 -0
  61. package/skills/wix-design-system/scripts/wds.cjs +531 -0
  62. package/skills/wix-headless/SKILL.md +418 -0
  63. package/skills/wix-headless/references/DISCOVERY.md +332 -0
  64. package/skills/wix-headless/references/ORCHESTRATION.md +269 -0
  65. package/skills/wix-headless/references/SETUP.md +154 -0
  66. package/skills/wix-headless/references/blog/BLOG_CONTENT.md +152 -0
  67. package/skills/wix-headless/references/blog/BLOG_PAGES.md +299 -0
  68. package/skills/wix-headless/references/blog/BLOG_SETUP.md +218 -0
  69. package/skills/wix-headless/references/blog/INSTRUCTIONS.md +32 -0
  70. package/skills/wix-headless/references/cms/CMS_FOUNDATIONS.md +373 -0
  71. package/skills/wix-headless/references/cms/FAQ_KNOWLEDGE_BASE.md +229 -0
  72. package/skills/wix-headless/references/cms/INSTRUCTIONS.md +40 -0
  73. package/skills/wix-headless/references/cms/PORTFOLIO.md +454 -0
  74. package/skills/wix-headless/references/cms/RESOURCE_LIBRARY.md +356 -0
  75. package/skills/wix-headless/references/cms/TEAM_DIRECTORY.md +299 -0
  76. package/skills/wix-headless/references/commands/install-app.md +42 -0
  77. package/skills/wix-headless/references/commands/known-apps.json +5 -0
  78. package/skills/wix-headless/references/commands/mcp-bootstrap.md +28 -0
  79. package/skills/wix-headless/references/designer/INSTRUCTIONS.md +828 -0
  80. package/skills/wix-headless/references/ecom/CART_PAGES.md +120 -0
  81. package/skills/wix-headless/references/ecom/CART_WIRING.md +103 -0
  82. package/skills/wix-headless/references/ecom/COMPONENTS_CSS.md +132 -0
  83. package/skills/wix-headless/references/ecom/INSTRUCTIONS.md +59 -0
  84. package/skills/wix-headless/references/forms/CONTACT_FORM.md +477 -0
  85. package/skills/wix-headless/references/forms/INSTRUCTIONS.md +43 -0
  86. package/skills/wix-headless/references/gift-cards/COMPONENTS.md +119 -0
  87. package/skills/wix-headless/references/gift-cards/INSTRUCTIONS.md +51 -0
  88. package/skills/wix-headless/references/gift-cards/PAGES.md +129 -0
  89. package/skills/wix-headless/references/images/INSTRUCTIONS.md +359 -0
  90. package/skills/wix-headless/references/shared/BUILD_NOISE.md +8 -0
  91. package/skills/wix-headless/references/shared/IMAGE_GENERATION.md +185 -0
  92. package/skills/wix-headless/references/shared/IMPLEMENTER.md +155 -0
  93. package/skills/wix-headless/references/shared/MCP_PREFIX.md +105 -0
  94. package/skills/wix-headless/references/shared/PRODUCTION_SHARP_EDGES.md +97 -0
  95. package/skills/wix-headless/references/shared/RETURN_CONTRACT.md +423 -0
  96. package/skills/wix-headless/references/shared/STYLING.md +117 -0
  97. package/skills/wix-headless/references/stores/BACK_IN_STOCK.md +178 -0
  98. package/skills/wix-headless/references/stores/CATEGORY_PAGES.md +86 -0
  99. package/skills/wix-headless/references/stores/COMPONENTS_CSS.md +129 -0
  100. package/skills/wix-headless/references/stores/HOME_AND_NAV.md +227 -0
  101. package/skills/wix-headless/references/stores/INSTRUCTIONS.md +96 -0
  102. package/skills/wix-headless/references/stores/PRODUCT_CATALOG_DATA.md +249 -0
  103. package/skills/wix-headless/references/stores/PRODUCT_PAGES.md +213 -0
  104. package/skills/wix-headless/references/stores/SHARED_WIRING.md +164 -0
  105. package/skills/wix-headless/references/verticals/_schema.json +160 -0
  106. package/skills/wix-headless/references/verticals/_schema.md +185 -0
  107. package/skills/wix-headless/references/verticals/blog.md +125 -0
  108. package/skills/wix-headless/references/verticals/cms.md +121 -0
  109. package/skills/wix-headless/references/verticals/ecom.md +96 -0
  110. package/skills/wix-headless/references/verticals/forms.md +106 -0
  111. package/skills/wix-headless/references/verticals/gift-cards.md +121 -0
  112. package/skills/wix-headless/references/verticals/stores.md +167 -0
  113. package/skills/wix-headless/scripts/check-manifest.mjs +198 -0
  114. package/skills/wix-headless/scripts/copy-utility-templates.mjs +153 -0
  115. package/skills/wix-headless/scripts/emit-design-tokens.mjs +77 -0
  116. package/skills/wix-headless/scripts/finalize-run-json.mjs +141 -0
  117. package/skills/wix-headless/scripts/init-site-json.mjs +63 -0
  118. package/skills/wix-headless/scripts/patch-decorative-slots.mjs +124 -0
  119. package/skills/wix-headless/scripts/plan-entity-image-waves.mjs +190 -0
  120. package/skills/wix-headless/scripts/preview.sh +45 -0
  121. package/skills/wix-headless/scripts/release.sh +73 -0
  122. package/skills/wix-headless/scripts/scaffold.sh +53 -0
  123. package/skills/wix-headless/scripts/seed-utilities.sh +55 -0
  124. package/skills/wix-headless/shared-utilities/analytics.ts +40 -0
  125. package/skills/wix-headless/shared-utilities/ricos.ts +179 -0
  126. package/skills/wix-headless/shared-utilities/wix-image.ts +72 -0
  127. package/skills/wix-headless/templates/ecom/CartBadge.tsx +84 -0
  128. package/skills/wix-headless/templates/ecom/CartView.tsx +543 -0
  129. package/skills/wix-headless/templates/ecom/cart.astro +13 -0
  130. package/skills/wix-headless/templates/ecom/components-ecom.css +215 -0
  131. package/skills/wix-headless/templates/ecom/discounts.ts +71 -0
  132. package/skills/wix-headless/templates/ecom/thank-you.astro +24 -0
  133. package/skills/wix-headless/templates/gift-cards/GiftCardPurchase.tsx +172 -0
  134. package/skills/wix-headless/templates/gift-cards/_home-teaser-snippet.astro +42 -0
  135. package/skills/wix-headless/templates/gift-cards/_nav-snippet.astro +11 -0
  136. package/skills/wix-headless/templates/gift-cards/components-gift-cards.css +219 -0
  137. package/skills/wix-headless/templates/gift-cards/gift-cards.astro +51 -0
  138. package/skills/wix-headless/templates/gift-cards/gift-cards.ts +75 -0
  139. package/skills/wix-headless/templates/stores/AddToCartButton.tsx +77 -0
  140. package/skills/wix-headless/templates/stores/BackInStockForm.tsx +176 -0
  141. package/skills/wix-headless/templates/stores/CategoryRail.astro +69 -0
  142. package/skills/wix-headless/templates/stores/ProductCard.astro +79 -0
  143. package/skills/wix-headless/templates/stores/ProductPurchase.tsx +397 -0
  144. package/skills/wix-headless/templates/stores/SeoTags.astro +21 -0
  145. package/skills/wix-headless/templates/stores/back-in-stock.ts +67 -0
  146. package/skills/wix-headless/templates/stores/categories.ts +155 -0
  147. package/skills/wix-headless/templates/stores/category/[slug].astro +130 -0
  148. package/skills/wix-headless/templates/stores/components-stores.css +295 -0
  149. package/skills/wix-headless/templates/stores/products/[slug].astro +128 -0
  150. package/skills/wix-headless/templates/stores/products/index.astro +101 -0
  151. package/skills/wix-manage/SKILL.md +280 -0
  152. package/skills/wix-manage/references/app-installation/install-wix-apps.md +155 -0
  153. package/skills/wix-manage/references/app-installation/list-installed-apps.md +124 -0
  154. package/skills/wix-manage/references/blog/how-to-create-blog-posts.md +226 -0
  155. package/skills/wix-manage/references/bookings/booking-service-policy-setup.md +95 -0
  156. package/skills/wix-manage/references/bookings/booking-system-integration-gaps.md +416 -0
  157. package/skills/wix-manage/references/bookings/bookings-staff-setup.md +255 -0
  158. package/skills/wix-manage/references/bookings/create-and-update-booking-services.md +462 -0
  159. package/skills/wix-manage/references/bookings/end-to-end-booking-flow.md +278 -0
  160. package/skills/wix-manage/references/bookings/external-calendar-integration.md +258 -0
  161. package/skills/wix-manage/references/bookings/multi-resource-service-creation.md +231 -0
  162. package/skills/wix-manage/references/calendar/configure-default-business-hours.md +226 -0
  163. package/skills/wix-manage/references/cms/cms-data-items-crud.md +422 -0
  164. package/skills/wix-manage/references/cms/cms-data-operations-extended.md +263 -0
  165. package/skills/wix-manage/references/cms/cms-ecommerce-catalog-integration.md +136 -0
  166. package/skills/wix-manage/references/cms/cms-references-and-relationships.md +160 -0
  167. package/skills/wix-manage/references/cms/cms-schema-management.md +143 -0
  168. package/skills/wix-manage/references/contacts/bulk-delete-contacts.md +73 -0
  169. package/skills/wix-manage/references/contacts/bulk-label-and-unlabel-contacts.md +67 -0
  170. package/skills/wix-manage/references/domains/domain-search-and-purchase.md +434 -0
  171. package/skills/wix-manage/references/ecommerce/api-recommendation-tracking.md +420 -0
  172. package/skills/wix-manage/references/ecommerce/flow-add-free-shipping.md +267 -0
  173. package/skills/wix-manage/references/ecommerce/flow-bundle-and-save.md +290 -0
  174. package/skills/wix-manage/references/ecommerce/flow-fix-coverage-gaps.md +300 -0
  175. package/skills/wix-manage/references/ecommerce/flow-optimize-shipping-rates.md +364 -0
  176. package/skills/wix-manage/references/ecommerce/flow-seasonal-promotion.md +315 -0
  177. package/skills/wix-manage/references/ecommerce/flow-stock-mover.md +308 -0
  178. package/skills/wix-manage/references/ecommerce/flow-upsell-boost.md +271 -0
  179. package/skills/wix-manage/references/ecommerce/goal-clear-inventory.md +118 -0
  180. package/skills/wix-manage/references/ecommerce/goal-drive-cross-sells.md +122 -0
  181. package/skills/wix-manage/references/ecommerce/goal-increase-aov.md +132 -0
  182. package/skills/wix-manage/references/ecommerce/goal-reduce-cart-abandonment.md +148 -0
  183. package/skills/wix-manage/references/ecommerce/goal-seasonal-revenue.md +146 -0
  184. package/skills/wix-manage/references/ecommerce/guardrail-discount-conflicts.md +118 -0
  185. package/skills/wix-manage/references/ecommerce/guardrail-margin-protection.md +88 -0
  186. package/skills/wix-manage/references/ecommerce/guardrail-rate-pricing-sanity.md +108 -0
  187. package/skills/wix-manage/references/ecommerce/guardrail-shipping-health.md +124 -0
  188. package/skills/wix-manage/references/ecommerce/recipe-apply-shipping-recommendations.md +299 -0
  189. package/skills/wix-manage/references/ecommerce/recommend-ecommerce-strategy.md +582 -0
  190. package/skills/wix-manage/references/ecommerce/setup-coupons.md +338 -0
  191. package/skills/wix-manage/references/ecommerce/setup-discount-rules.md +444 -0
  192. package/skills/wix-manage/references/ecommerce/setup-shipping-rates.md +86 -0
  193. package/skills/wix-manage/references/ecommerce/setup-shipping-regions.md +56 -0
  194. package/skills/wix-manage/references/ecommerce/setup-store-pickup-location.md +209 -0
  195. package/skills/wix-manage/references/ecommerce/skill-graph.md +139 -0
  196. package/skills/wix-manage/references/ecommerce/troubleshoot-checkout-delivery-dropoff.md +124 -0
  197. package/skills/wix-manage/references/ecommerce/troubleshoot-discount-not-applying.md +95 -0
  198. package/skills/wix-manage/references/events/list-events.md +203 -0
  199. package/skills/wix-manage/references/forms/create-form.md +260 -0
  200. package/skills/wix-manage/references/get-paid/create-payment-links.md +212 -0
  201. package/skills/wix-manage/references/get-paid/how-to-setup-wix-payments.md +57 -0
  202. package/skills/wix-manage/references/get-paid/payment-links-for-bookings.md +101 -0
  203. package/skills/wix-manage/references/media/upload-media-to-wix.md +216 -0
  204. package/skills/wix-manage/references/pricing-plans/create-and-update-pricing-plans.md +77 -0
  205. package/skills/wix-manage/references/pricing-plans/pricing-plans-bookings-integration.md +166 -0
  206. package/skills/wix-manage/references/restaurants/wix-restaurants-setup.md +336 -0
  207. package/skills/wix-manage/references/rich-content/ricos-converter-service.md +295 -0
  208. package/skills/wix-manage/references/site-properties/change-payment-currency-site-properties.md +59 -0
  209. package/skills/wix-manage/references/sites/create-site-from-template.md +183 -0
  210. package/skills/wix-manage/references/sites/query-sites.md +125 -0
  211. package/skills/wix-manage/references/stores/add-store-pages-to-site.md +57 -0
  212. package/skills/wix-manage/references/stores/bulk-create-products-with-options.md +1041 -0
  213. package/skills/wix-manage/references/stores/create-product-catalog-v1.md +125 -0
  214. package/skills/wix-manage/references/stores/create-product-from-image.md +824 -0
  215. package/skills/wix-manage/references/stores/create-product-with-options-catalog-v3.md +566 -0
  216. package/skills/wix-manage/references/stores/find-products-query-and-search-catalog-v3.md +194 -0
  217. package/skills/wix-manage/references/stores/query-products-catalog-v1.md +80 -0
  218. package/skills/wix-manage/references/stores/setup-online-store-catalog-v3.md +99 -0
  219. package/skills/wix-manage/references/stores/update-product-pre-order.md +213 -0
  220. package/skills/wix-manage/references/stores/update-product-with-options.md +318 -0
@@ -0,0 +1,269 @@
1
+ # Dynamic Parameters Management
2
+
3
+ Complete guide for managing dynamic parameters for embedded scripts in dashboard pages.
4
+
5
+ ## Description
6
+
7
+ This dashboard page manages dynamic parameters for an embedded script. The parameters are configurable values that site owners can set through this dashboard interface, and they will be passed to the embedded script as template variables.
8
+
9
+ **IMPORTANT:** Only implement UI for parameters that are relevant to your current use case. Ignore parameters that don't apply to the functionality you're building. It's perfectly fine to not use all parameters if they're not applicable.
10
+
11
+ ## Implementation Requirements
12
+
13
+ ### 1. Import embeddedScripts
14
+
15
+ - Import embeddedScripts directly from '@wix/app-management'
16
+ - Use embeddedScripts.getEmbeddedScript() to load parameters
17
+ - Use embeddedScripts.embedScript({ parameters }) to save parameters
18
+ - Example:
19
+ ```typescript
20
+ import { embeddedScripts } from '@wix/app-management';
21
+ ```
22
+
23
+ ### 2. Type Definition
24
+
25
+ - Create a TypeScript type/interface that includes all the dynamic parameters
26
+ - Example:
27
+ ```typescript
28
+ export type MyScriptOptions = {
29
+ headline: string;
30
+ text: string;
31
+ imageUrl: string;
32
+ activationMode: 'active' | 'timed' | 'disabled';
33
+ startDate?: string;
34
+ endDate?: string;
35
+ };
36
+ ```
37
+
38
+ ### 3. State Management
39
+
40
+ - Use React useState to manage the parameter values locally
41
+ - Initialize with default values for all parameters
42
+ - Add separate state for isLoading and isSaving
43
+ - Use useEffect to load parameters on mount
44
+ - **IMPORTANT:** Parameters are returned as strings from the API, so you must handle type conversions:
45
+ * BOOLEAN parameters: Convert from string 'true'/'false' to boolean
46
+ * NUMBER parameters: Convert from string to number using Number()
47
+ * Other types: Use as-is
48
+ - Example:
49
+ ```typescript
50
+ const [options, setOptions] = useState<MyScriptOptions>(defaultOptions);
51
+ const [isLoading, setIsLoading] = useState(true);
52
+ const [isSaving, setIsSaving] = useState(false);
53
+
54
+ useEffect(() => {
55
+ const loadSettings = async () => {
56
+ try {
57
+ const embeddedScript = await embeddedScripts.getEmbeddedScript();
58
+ const data = embeddedScript.parameters as Partial<Record<keyof MyScriptOptions, string>> || {};
59
+
60
+ setOptions((prev) => ({
61
+ ...prev,
62
+ textField: data?.textField || prev.textField,
63
+ booleanField: data?.booleanField === 'true' ? true : data?.booleanField === 'false' ? false : prev.booleanField,
64
+ numberField: Number(data?.numberField) || prev.numberField,
65
+ }));
66
+ } catch (error) {
67
+ console.error('Failed to load settings:', error);
68
+ } finally {
69
+ setIsLoading(false);
70
+ }
71
+ };
72
+
73
+ loadSettings();
74
+ }, []);
75
+ ```
76
+
77
+ ### 4. Loading State
78
+
79
+ - Show a Loader component while isLoading is true
80
+ - Example:
81
+ ```typescript
82
+ {isLoading ? (
83
+ <Box align="center" verticalAlign="middle" height="50vh">
84
+ <Loader text="Loading..." />
85
+ </Box>
86
+ ) : (
87
+ // ... form content
88
+ )}
89
+ ```
90
+
91
+ ### 5. Form Components
92
+
93
+ - **IMPORTANT:** Only create form fields for parameters relevant to your use case
94
+ - Skip parameters that don't apply to the functionality being built
95
+ - Create appropriate WDS form fields based on parameter types:
96
+ * TEXT → Input component with FormField
97
+ * NUMBER → Input component with type="number"
98
+ * BOOLEAN → Checkbox or ToggleSwitch
99
+ * IMAGE → Custom ImagePicker component (see components/image-picker.tsx)
100
+ * DATE → DatePicker component
101
+ * SELECT → Dropdown component with options
102
+ * URL → Input with URL validation
103
+ - Use FormField wrapper for labels and validation messages
104
+ - Set required validation based on parameter.required flag
105
+ - Show validation errors using FormField status and statusMessage props
106
+
107
+ ### 6. Save Functionality
108
+
109
+ - Add a Save button in the Page.Header actionsBar
110
+ - Make handleSave an async function
111
+ - **CRITICAL:** All parameters must be passed as STRING values because they are used as template variables in the embedded script
112
+ - Convert all values to strings before saving:
113
+ * BOOLEAN: Use String(value) or value.toString()
114
+ * NUMBER: Use String(value) or value.toString()
115
+ * Other types: Already strings, use as-is
116
+ - Disable the Save button if required fields are missing or while saving
117
+ - Add proper error handling
118
+
119
+ ### 7. Form Validation
120
+
121
+ - Implement validation for required fields
122
+ - Show error states on FormField components
123
+ - Display clear error messages
124
+
125
+ ### 8. Layout and Organization
126
+
127
+ - Use Card components to group related fields
128
+ - Use Box with direction="vertical" for form layout
129
+ - Add appropriate spacing with gap props
130
+ - Include helpful descriptions using Card subtitle or FormField infoContent
131
+ - Consider creating a separate settings component for complex forms
132
+
133
+ ### 9. Preview Component (Optional but Recommended)
134
+
135
+ - If applicable, create a preview component that shows how the configuration will look
136
+ - Display the preview alongside the settings form using Layout and Cell components
137
+ - The preview should react to parameter changes in real-time
138
+
139
+ ## Example Implementation
140
+
141
+ See the generated site-popup example for a complete reference implementation:
142
+ - src/extensions/dashboard/withProviders.tsx - Provider wrapper with WDS
143
+ - src/extensions/dashboard/pages/page.tsx - Dashboard page with parameter management (wrapped with withProviders)
144
+ - src/extensions/dashboard/components/site-popup-settings.tsx - Settings form component
145
+ - src/extensions/dashboard/types.ts - Type definitions
146
+
147
+ Key implementation patterns from the example:
148
+ 1. withProviders.tsx wraps the component with WixDesignSystemProvider
149
+ 2. page.tsx exports the component wrapped: export default withProviders(MyComponent)
150
+ 3. Parameters are saved as individual string fields, not as JSON
151
+ 4. Parameters are loaded with proper type conversion (string to boolean, string to number, etc.)
152
+ 5. Use embeddedScripts directly from '@wix/app-management'
153
+
154
+ ## File Generation Requirements
155
+
156
+ When dynamic parameters are present, you MUST generate these files:
157
+ 1. src/extensions/dashboard/withProviders.tsx - Provider wrapper (REQUIRED for WDS)
158
+ 2. src/extensions/dashboard/pages/page.tsx - The main dashboard page component
159
+ 3. src/extensions/dashboard/types.ts - Type definitions for the parameters (if needed)
160
+ 4. Any additional component files (settings forms, previews, etc.)
161
+
162
+ The withProviders.tsx is NOT optional - it must always be generated when there are dynamic parameters.
163
+
164
+ ## Provider Wrapper Implementation
165
+
166
+ You MUST generate the following file: src/extensions/dashboard/withProviders.tsx
167
+
168
+ This file is REQUIRED to wrap dashboard components with the Wix Design System provider.
169
+
170
+ ```typescript
171
+ import React from 'react';
172
+ import { WixDesignSystemProvider } from '@wix/design-system';
173
+ import { i18n } from '@wix/essentials';
174
+
175
+ export default function withProviders<P extends {} = {}>(Component: React.FC<P>) {
176
+ return function DashboardProviders(props: P) {
177
+ const locale = i18n.getLocale();
178
+ return (
179
+ <WixDesignSystemProvider locale={locale} features={{ newColorsBranding: true }}>
180
+ <Component {...props} />
181
+ </WixDesignSystemProvider>
182
+ );
183
+ };
184
+ }
185
+
186
+ // Also export as named export for backwards compatibility
187
+ export { withProviders };
188
+ ```
189
+
190
+ This file must be included in your generated files output.
191
+
192
+ ## Using Provider Wrapper
193
+
194
+ In your dashboard page component (page.tsx):
195
+ 1. Import the withProviders wrapper: `import withProviders from '../../withProviders';`
196
+ 2. Import embeddedScripts from '@wix/app-management'
197
+ 3. DO NOT wrap your component with WixDesignSystemProvider - the provider wrapper does this
198
+ 4. Export the component wrapped with withProviders: `export default withProviders(MyComponent);`
199
+ 5. Your component should only contain the Page component and its content, not providers
200
+
201
+ Example structure:
202
+ ```typescript
203
+ import { useEffect, useState, type FC } from 'react';
204
+ import { dashboard } from '@wix/dashboard';
205
+ import { embeddedScripts } from '@wix/app-management';
206
+ import { Page, Card, Button, ... } from '@wix/design-system';
207
+ import '@wix/design-system/styles.global.css';
208
+ import withProviders from '../../withProviders';
209
+
210
+ const MyDashboardPage: FC = () => {
211
+ const [options, setOptions] = useState<MyScriptOptions>(defaultOptions);
212
+ const [isLoading, setIsLoading] = useState(true);
213
+ const [isSaving, setIsSaving] = useState(false);
214
+
215
+ useEffect(() => {
216
+ const loadSettings = async () => {
217
+ try {
218
+ const embeddedScript = await embeddedScripts.getEmbeddedScript();
219
+ const data = embeddedScript.parameters || {};
220
+ // ... update options with data
221
+ } catch (error) {
222
+ console.error('Failed to load settings:', error);
223
+ } finally {
224
+ setIsLoading(false);
225
+ }
226
+ };
227
+ loadSettings();
228
+ }, []);
229
+
230
+ const handleSave = async () => {
231
+ setIsSaving(true);
232
+ try {
233
+ await embeddedScripts.embedScript({ parameters: { /* ... */ } });
234
+ dashboard.showToast({ message: 'Saved!', type: 'success' });
235
+ } catch (error) {
236
+ console.error('Failed to save:', error);
237
+ dashboard.showToast({ message: 'Failed to save', type: 'error' });
238
+ } finally {
239
+ setIsSaving(false);
240
+ }
241
+ };
242
+
243
+ return (
244
+ <Page height="100vh">
245
+ {/* Page content - NO WixDesignSystemProvider here */}
246
+ </Page>
247
+ );
248
+ };
249
+
250
+ export default withProviders(MyDashboardPage);
251
+ ```
252
+
253
+ ## Critical Notes
254
+
255
+ - Only implement UI for parameters that are relevant to your specific use case - ignore parameters that don't apply
256
+ - ALWAYS generate withProviders.tsx when there are dynamic parameters
257
+ - ALWAYS wrap the dashboard page export with withProviders()
258
+ - DO NOT use WixDesignSystemProvider directly in the dashboard page component - use withProviders instead
259
+ - ALWAYS use embeddedScripts directly from '@wix/app-management'
260
+ - ALWAYS convert parameter values to strings when saving (embeddedScripts.embedScript must receive all string values in the parameters object)
261
+ - ALWAYS convert string parameters back to proper types when loading (e.g., 'true' -> true for booleans, string to number for numbers)
262
+ - ALWAYS handle the loading state with isLoading state variable
263
+ - ALWAYS handle the saving state with isSaving state variable
264
+ - ALWAYS add try/catch blocks for async operations (loading and saving)
265
+ - ALWAYS use async/await for embeddedScripts operations
266
+ - ALWAYS merge parameter values correctly in useEffect with proper type conversions
267
+ - ALWAYS validate required fields and show appropriate error states
268
+ - The parameter keys MUST match exactly what is expected in the embedded script template variables
269
+ - Each parameter is saved as a separate field, NOT as a JSON string
@@ -0,0 +1,164 @@
1
+ # Ecom Navigation Reference
2
+
3
+ Ecom Extensions Dashboard Pages destination builders for navigating to ecom-related dashboard pages (use with @wix/dashboard navigate).
4
+
5
+ ## deliveryProfile()
6
+
7
+ Ecom Extensions Dashboard Pages 'deliveryProfile()' destination builder for navigating to the Delivery Profile dashboard page.
8
+
9
+ **Method parameters:**
10
+ - `options`: deliveryProfileOptions
11
+
12
+ **Delivery profile options:**
13
+ - `deliveryProfileId` (string): The ID of the delivery profile to open in the dashboard.
14
+
15
+ **Example:**
16
+ ```typescript
17
+ import { dashboard } from "@wix/dashboard";
18
+ import { pages } from "@wix/ecom/dashboard";
19
+
20
+ dashboard.navigate(
21
+ pages.deliveryProfile({
22
+ deliveryProfileId: "delivery-profile-id",
23
+ }),
24
+ );
25
+ ```
26
+
27
+ ## deliveryProfiles()
28
+
29
+ Ecom Extensions Dashboard Pages 'deliveryProfiles()' destination builder for navigating to the Delivery Profiles dashboard page.
30
+
31
+ **Request:**
32
+ This method does not take any parameters.
33
+
34
+ **Example:**
35
+ ```typescript
36
+ import { dashboard } from "@wix/dashboard";
37
+ import { pages } from "@wix/ecom/dashboard";
38
+
39
+ dashboard.navigate(
40
+ pages.deliveryProfiles(),
41
+ );
42
+ ```
43
+
44
+ ## editDraftOrder()
45
+
46
+ Ecom Extensions Dashboard Pages 'editDraftOrder()' destination builder for navigating to the Edit Draft Order dashboard page.
47
+
48
+ **Method parameters:**
49
+ - `options`: editDraftOrderOptions
50
+
51
+ **Edit draft order options:**
52
+ - `draftOrderId` (string): The ID of the draft order to open for editing in the dashboard.
53
+
54
+ **Example:**
55
+ ```typescript
56
+ import { dashboard } from "@wix/dashboard";
57
+ import { pages } from "@wix/ecom/dashboard";
58
+
59
+ dashboard.navigate(
60
+ pages.editDraftOrder({
61
+ draftOrderId: "draft-order-id",
62
+ }),
63
+ );
64
+ ```
65
+
66
+ ## editOrder()
67
+
68
+ Ecom Extensions Dashboard Pages 'editOrder()' destination builder for navigating to the Edit Order dashboard page.
69
+
70
+ **Method parameters:**
71
+ - `options`: editOrderOptions
72
+
73
+ **Edit order options:**
74
+ - `orderId` (string): The ID of the order to open for editing in the dashboard.
75
+
76
+ **Example:**
77
+ ```typescript
78
+ import { dashboard } from "@wix/dashboard";
79
+ import { pages } from "@wix/ecom/dashboard";
80
+
81
+ dashboard.navigate(
82
+ pages.editOrder({
83
+ orderId: "order-id",
84
+ }),
85
+ );
86
+ ```
87
+
88
+ ## newOrder()
89
+
90
+ Ecom Extensions Dashboard Pages 'newOrder()' destination builder for navigating to the New Order dashboard page.
91
+
92
+ **Request:**
93
+ This method does not take any parameters.
94
+
95
+ **Example:**
96
+ ```typescript
97
+ import { dashboard } from "@wix/dashboard";
98
+ import { pages } from "@wix/ecom/dashboard";
99
+
100
+ dashboard.navigate(
101
+ pages.newOrder(),
102
+ );
103
+ ```
104
+
105
+ ## orderDetails()
106
+
107
+ Ecom Extensions Dashboard Pages 'orderDetails()' destination builder for navigating to the Order Details dashboard page.
108
+
109
+ **Method parameters:**
110
+ - `options`: orderDetailsOptions
111
+
112
+ **Order details options:**
113
+ - `id` (string): The ID of the order whose details page to open in the dashboard.
114
+
115
+ **Example:**
116
+ ```typescript
117
+ import { dashboard } from "@wix/dashboard";
118
+ import { pages } from "@wix/ecom/dashboard";
119
+
120
+ dashboard.navigate(
121
+ pages.orderDetails({
122
+ id: "order-id",
123
+ }),
124
+ );
125
+ ```
126
+
127
+ ## orderList()
128
+
129
+ Ecom Extensions Dashboard Pages 'orderList()' destination builder for navigating to the Order List dashboard page.
130
+
131
+ **Request:**
132
+ This method does not take any parameters.
133
+
134
+ **Example:**
135
+ ```typescript
136
+ import { dashboard } from "@wix/dashboard";
137
+ import { pages } from "@wix/ecom/dashboard";
138
+
139
+ dashboard.navigate(
140
+ pages.orderList(),
141
+ );
142
+ ```
143
+
144
+ ## orderRefund()
145
+
146
+ Ecom Extensions Dashboard Pages 'orderRefund()' destination builder for navigating to the Order Refund dashboard page.
147
+
148
+ **Method parameters:**
149
+ - `options`: orderRefundOptions
150
+
151
+ **Order refund options:**
152
+ - `orderId` (string): The ID of the order to open the refund page for in the dashboard.
153
+
154
+ **Example:**
155
+ ```typescript
156
+ import { dashboard } from "@wix/dashboard";
157
+ import { pages } from "@wix/ecom/dashboard";
158
+
159
+ dashboard.navigate(
160
+ pages.orderRefund({
161
+ orderId: "order-id",
162
+ }),
163
+ );
164
+ ```