[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-medusa-building-admin-dashboard-customizations":3,"mdc-i48vjs-key":40,"related-org-medusa-building-admin-dashboard-customizations":5775,"related-repo-medusa-building-admin-dashboard-customizations":5928},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":24,"repoUrl":25,"updatedAt":26,"license":27,"forks":28,"topics":29,"repo":35,"sourceUrl":38,"mdContent":39},"building-admin-dashboard-customizations","customize Medusa Admin dashboard UI","Load automatically when planning, researching, or implementing Medusa Admin dashboard UI (widgets, custom pages, forms, tables, data loading, navigation). REQUIRED for all admin UI work in ALL modes (planning, implementation, exploration). Contains design patterns, component usage, and data loading patterns that MCP servers don't provide.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"medusa","Medusa","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fmedusa.jpg","medusajs",[13,15,18,21],{"name":9,"slug":8,"type":14},"tag",{"name":16,"slug":17,"type":14},"E-commerce","e-commerce",{"name":19,"slug":20,"type":14},"UI Components","ui-components",{"name":22,"slug":23,"type":14},"Frontend","frontend",197,"https:\u002F\u002Fgithub.com\u002Fmedusajs\u002Fmedusa-agent-skills","2026-04-06T18:29:57.203659",null,24,[30,31,32,33,34,8],"agentic-commerce","claude","claude-code","commerce","ecommerce",{"repoUrl":25,"stars":24,"forks":28,"topics":36,"description":37},[30,31,32,33,34,8],"Agent skills and commands for Medusa best practices and conventions.","https:\u002F\u002Fgithub.com\u002Fmedusajs\u002Fmedusa-agent-skills\u002Ftree\u002FHEAD\u002Fplugins\u002Fmedusa-dev\u002Fskills\u002Fbuilding-admin-dashboard-customizations","---\nname: building-admin-dashboard-customizations\ndescription: Load automatically when planning, researching, or implementing Medusa Admin dashboard UI (widgets, custom pages, forms, tables, data loading, navigation). REQUIRED for all admin UI work in ALL modes (planning, implementation, exploration). Contains design patterns, component usage, and data loading patterns that MCP servers don't provide.\n---\n\n# Medusa Admin Dashboard Customizations\n\nBuild custom UI extensions for the Medusa Admin dashboard using the Admin SDK and Medusa UI components.\n\n**Note:** \"UI Routes\" are custom admin pages, different from backend API routes (which use building-with-medusa skill).\n\n## When to Apply\n\n**Load this skill for ANY admin UI development task, including:**\n- Creating widgets for product\u002Forder\u002Fcustomer pages\n- Building custom admin pages\n- Implementing forms and modals\n- Displaying data with tables or lists\n- Adding navigation between pages\n\n**Also load these skills when:**\n- **building-with-medusa:** Building backend API routes that the admin UI calls\n- **building-storefronts:** If working on storefront instead of admin dashboard\n\n## CRITICAL: Load Reference Files When Needed\n\n**The quick reference below is NOT sufficient for implementation.** You MUST load relevant reference files before writing code for that component.\n\n**Load these references based on what you're implementing:**\n\n- **Creating widgets?** → MUST load `references\u002Fdata-loading.md` first\n- **Building forms\u002Fmodals?** → MUST load `references\u002Fforms.md` first\n- **Displaying data in tables\u002Flists?** → MUST load `references\u002Fdisplay-patterns.md` first\n- **Selecting from large datasets?** → MUST load `references\u002Ftable-selection.md` first\n- **Adding navigation?** → MUST load `references\u002Fnavigation.md` first\n- **Styling components?** → MUST load `references\u002Ftypography.md` first\n\n**Minimum requirement:** Load at least 1-2 reference files relevant to your specific task before implementing.\n\n## When to Use This Skill vs MedusaDocs MCP Server\n\n**⚠️ CRITICAL: This skill should be consulted FIRST for planning and implementation.**\n\n**Use this skill for (PRIMARY SOURCE):**\n- **Planning** - Understanding how to structure admin UI features\n- **Component patterns** - Widgets, pages, forms, tables, modals\n- **Design system** - Typography, colors, spacing, semantic classes\n- **Data loading** - Critical separate query pattern, cache invalidation\n- **Best practices** - Correct vs incorrect patterns (e.g., display queries on mount)\n- **Critical rules** - What NOT to do (common mistakes like conditional display queries)\n\n**Use MedusaDocs MCP server for (SECONDARY SOURCE):**\n- Specific component prop signatures after you know which component to use\n- Available widget zones list\n- JS SDK method details\n- Configuration options reference\n\n**Why skills come first:**\n- Skills contain critical patterns like separate display\u002Fmodal queries that MCP doesn't emphasize\n- Skills show correct vs incorrect patterns; MCP shows what's possible\n- Planning requires understanding patterns, not just API reference\n\n## Critical Setup Rules\n\n### SDK Client Configuration\n\n**CRITICAL:** Always use exact configuration - different values cause errors:\n\n```tsx\n\u002F\u002F src\u002Fadmin\u002Flib\u002Fclient.ts\nimport Medusa from \"@medusajs\u002Fjs-sdk\"\n\nexport const sdk = new Medusa({\n  baseUrl: import.meta.env.VITE_BACKEND_URL || \"\u002F\",\n  debug: import.meta.env.DEV,\n  auth: {\n    type: \"session\",\n  },\n})\n```\n\n### pnpm Users ONLY\n\n**CRITICAL:** Install peer dependencies BEFORE writing any code:\n\n```bash\n# Find exact version from dashboard\npnpm list @tanstack\u002Freact-query --depth=10 | grep @medusajs\u002Fdashboard\n# Install that exact version\npnpm add @tanstack\u002Freact-query@[exact-version]\n\n# If using navigation (Link component)\npnpm list react-router-dom --depth=10 | grep @medusajs\u002Fdashboard\npnpm add react-router-dom@[exact-version]\n```\n\n**npm\u002Fyarn users:** DO NOT install these packages - already available.\n\n## Rule Categories by Priority\n\n| Priority | Category | Impact | Prefix |\n|----------|----------|--------|--------|\n| 1 | Data Loading | CRITICAL | `data-` |\n| 2 | Design System | CRITICAL | `design-` |\n| 3 | Data Display | HIGH (includes CRITICAL price rule) | `display-` |\n| 4 | Typography | HIGH | `typo-` |\n| 5 | Forms & Modals | MEDIUM | `form-` |\n| 6 | Selection Patterns | MEDIUM | `select-` |\n\n## Quick Reference\n\n### 1. Data Loading (CRITICAL)\n\n- `data-sdk-always` - **ALWAYS use Medusa JS SDK for ALL API requests** - NEVER use regular fetch() (missing auth headers causes errors)\n- `data-sdk-method-choice` - Use existing SDK methods for built-in endpoints (`sdk.admin.product.list()`), use `sdk.client.fetch()` for custom routes\n- `data-display-on-mount` - Display queries MUST load on mount (no enabled condition based on UI state)\n- `data-separate-queries` - Separate display queries from modal\u002Fform queries\n- `data-invalidate-display` - Invalidate display queries after mutations, not just modal queries\n- `data-loading-states` - Always show loading states (Spinner), not empty states\n- `data-pnpm-install-first` - pnpm users MUST install @tanstack\u002Freact-query BEFORE coding\n\n### 2. Design System (CRITICAL)\n\n- `design-semantic-colors` - Always use semantic color classes (bg-ui-bg-base, text-ui-fg-subtle), never hardcoded\n- `design-spacing` - Use px-6 py-4 for section padding, gap-2 for lists, gap-3 for items\n- `design-button-size` - Always use size=\"small\" for buttons in widgets and tables\n- `design-medusa-components` - Always use Medusa UI components (Container, Button, Text), not raw HTML\n\n### 3. Data Display (HIGH)\n\n- `display-price-format` - **CRITICAL**: Prices from Medusa are stored as-is ($49.99 = 49.99, NOT in cents). Display them directly - NEVER divide by 100\n\n### 4. Typography (HIGH)\n\n- `typo-text-component` - Always use Text component from @medusajs\u002Fui, never plain span\u002Fp tags\n- `typo-labels` - Use `\u003CText size=\"small\" leading=\"compact\" weight=\"plus\">` for labels\u002Fheadings\n- `typo-descriptions` - Use `\u003CText size=\"small\" leading=\"compact\" className=\"text-ui-fg-subtle\">` for descriptions\n- `typo-no-heading-widgets` - Never use Heading for small sections in widgets (use Text instead)\n\n### 5. Forms & Modals (MEDIUM)\n\n- `form-focusmodal-create` - Use FocusModal for creating new entities\n- `form-drawer-edit` - Use Drawer for editing existing entities\n- `form-disable-pending` - Always disable actions during mutations (disabled={mutation.isPending})\n- `form-show-loading` - Show loading state on submit button (isLoading={mutation.isPending})\n\n### 6. Selection Patterns (MEDIUM)\n\n- `select-small-datasets` - Use Select component for 2-10 options (statuses, types, etc.)\n- `select-large-datasets` - Use DataTable with FocusModal for large datasets (products, categories, etc.)\n- `select-search-config` - Must pass search configuration to useDataTable to avoid \"search not enabled\" error\n\n## Critical Data Loading Pattern\n\n**ALWAYS follow this pattern - never load display data conditionally:**\n\n```tsx\n\u002F\u002F ✅ CORRECT - Separate queries with proper responsibilities\nconst RelatedProductsWidget = ({ data: product }) => {\n  const [modalOpen, setModalOpen] = useState(false)\n\n  \u002F\u002F Display query - loads on mount\n  const { data: displayProducts } = useQuery({\n    queryFn: () => fetchSelectedProducts(selectedIds),\n    queryKey: [\"related-products-display\", product.id],\n    \u002F\u002F No 'enabled' condition - loads immediately\n  })\n\n  \u002F\u002F Modal query - loads when needed\n  const { data: modalProducts } = useQuery({\n    queryFn: () => sdk.admin.product.list({ limit: 10, offset: 0 }),\n    queryKey: [\"products-selection\"],\n    enabled: modalOpen, \u002F\u002F OK for modal-only data\n  })\n\n  \u002F\u002F Mutation with proper invalidation\n  const updateProduct = useMutation({\n    mutationFn: updateFunction,\n    onSuccess: () => {\n      \u002F\u002F Invalidate display data query to refresh UI\n      queryClient.invalidateQueries({ queryKey: [\"related-products-display\", product.id] })\n      \u002F\u002F Also invalidate the entity query\n      queryClient.invalidateQueries({ queryKey: [\"product\", product.id] })\n      \u002F\u002F Note: No need to invalidate modal selection query\n    },\n  })\n\n  return (\n    \u003CContainer>\n      {\u002F* Display uses displayProducts *\u002F}\n      {displayProducts?.map(p => \u003Cdiv key={p.id}>{p.title}\u003C\u002Fdiv>)}\n\n      \u003CFocusModal open={modalOpen} onOpenChange={setModalOpen}>\n        {\u002F* Modal uses modalProducts *\u002F}\n      \u003C\u002FFocusModal>\n    \u003C\u002FContainer>\n  )\n}\n\n\u002F\u002F ❌ WRONG - Single query with conditional loading\nconst BrokenWidget = ({ data: product }) => {\n  const [modalOpen, setModalOpen] = useState(false)\n\n  const { data } = useQuery({\n    queryFn: () => sdk.admin.product.list(),\n    enabled: modalOpen, \u002F\u002F ❌ Display breaks on page refresh!\n  })\n\n  \u002F\u002F Trying to display from modal query\n  const displayItems = data?.filter(item => ids.includes(item.id)) \u002F\u002F No data until modal opens\n\n  return \u003Cdiv>{displayItems?.map(...)}\u003C\u002Fdiv> \u002F\u002F Empty on mount!\n}\n```\n\n**Why this matters:**\n- On page refresh, modal is closed, so conditional query doesn't run\n- User sees empty state instead of their data\n- Display depends on modal interaction (broken UX)\n\n## Common Mistakes Checklist\n\nBefore implementing, verify you're NOT doing these:\n\n**Data Loading:**\n- [ ] Using regular fetch() instead of Medusa JS SDK (causes missing auth header errors)\n- [ ] Not using existing SDK methods for built-in endpoints (e.g., using sdk.client.fetch(\"\u002Fadmin\u002Fproducts\") instead of sdk.admin.product.list())\n- [ ] Loading display data conditionally based on modal\u002FUI state\n- [ ] Using a single query for both display and modal\n- [ ] Forgetting to invalidate display queries after mutations\n- [ ] Not handling loading states (showing empty instead of spinner)\n- [ ] pnpm users: Not installing @tanstack\u002Freact-query before coding\n\n**Design System:**\n- [ ] Using hardcoded colors instead of semantic classes\n- [ ] Forgetting size=\"small\" on buttons in widgets\n- [ ] Not using px-6 py-4 for section padding\n- [ ] Using raw HTML elements instead of Medusa UI components\n\n**Data Display:**\n- [ ] **CRITICAL**: Dividing prices by 100 when displaying (prices are stored as-is: $49.99 = 49.99, NOT in cents)\n\n**Typography:**\n- [ ] Using plain span\u002Fp tags instead of Text component\n- [ ] Not using weight=\"plus\" for labels\n- [ ] Not using text-ui-fg-subtle for descriptions\n- [ ] Using Heading in small widget sections\n\n**Forms:**\n- [ ] Using Drawer for creating (should use FocusModal)\n- [ ] Using FocusModal for editing (should use Drawer)\n- [ ] Not disabling buttons during mutations\n- [ ] Not showing loading state on submit\n\n**Selection:**\n- [ ] Using DataTable for \u003C10 items (overkill)\n- [ ] Using Select for >10 items (poor UX)\n- [ ] Not configuring search in useDataTable (causes error)\n\n## Reference Files Available\n\nLoad these for detailed patterns:\n\n```\nreferences\u002Fdata-loading.md       - useQuery\u002FuseMutation patterns, cache invalidation\nreferences\u002Fforms.md              - FocusModal\u002FDrawer patterns, validation\nreferences\u002Ftable-selection.md    - Complete DataTable selection pattern\nreferences\u002Fdisplay-patterns.md   - Lists, tables, cards for entities\nreferences\u002Ftypography.md         - Text component patterns\nreferences\u002Fnavigation.md         - Link, useNavigate, useParams patterns\n```\n\nEach reference contains:\n- Step-by-step implementation guides\n- Correct vs incorrect code examples\n- Common mistakes and solutions\n- Complete working examples\n\n## Integration with Backend\n\n**⚠️ CRITICAL: ALWAYS use the Medusa JS SDK for ALL API requests - NEVER use regular fetch()**\n\nAdmin UI connects to backend API routes using the SDK:\n\n```tsx\nimport { sdk } from \"[LOCATE SDK INSTANCE IN PROJECT]\"\n\n\u002F\u002F ✅ CORRECT - Built-in endpoint: Use existing SDK method\nconst { data: product } = useQuery({\n  queryKey: [\"product\", productId],\n  queryFn: () => sdk.admin.product.retrieve(productId),\n})\n\n\u002F\u002F ✅ CORRECT - Custom endpoint: Use sdk.client.fetch()\nconst { data: reviews } = useQuery({\n  queryKey: [\"reviews\", product.id],\n  queryFn: () => sdk.client.fetch(`\u002Fadmin\u002Fproducts\u002F${product.id}\u002Freviews`),\n})\n\n\u002F\u002F ❌ WRONG - Using regular fetch\nconst { data } = useQuery({\n  queryKey: [\"reviews\", product.id],\n  queryFn: () => fetch(`http:\u002F\u002Flocalhost:9000\u002Fadmin\u002Fproducts\u002F${product.id}\u002Freviews`),\n  \u002F\u002F ❌ Error: Missing Authorization header!\n})\n\n\u002F\u002F Mutation to custom backend route\nconst createReview = useMutation({\n  mutationFn: (data) => sdk.client.fetch(\"\u002Fadmin\u002Freviews\", {\n    method: \"POST\",\n    body: data\n  }),\n  onSuccess: () => {\n    queryClient.invalidateQueries({ queryKey: [\"reviews\", product.id] })\n    toast.success(\"Review created\")\n  },\n})\n```\n\n**Why the SDK is required:**\n- Admin routes need `Authorization` and session cookie headers\n- Store routes need `x-publishable-api-key` header\n- SDK handles all required headers automatically\n- Regular fetch() without headers → authentication\u002Fauthorization errors\n- Using existing SDK methods provides better type safety\n\n**When to use what:**\n- **Built-in endpoints**: Use existing SDK methods (`sdk.admin.product.list()`, `sdk.store.product.list()`)\n- **Custom endpoints**: Use `sdk.client.fetch()` for your custom API routes\n\n**For implementing backend API routes**, load the `building-with-medusa` skill.\n\n## Widget vs UI Route\n\n**Widgets** extend existing admin pages:\n\n```tsx\n\u002F\u002F src\u002Fadmin\u002Fwidgets\u002Fcustom-widget.tsx\nimport { defineWidgetConfig } from \"@medusajs\u002Fadmin-sdk\"\nimport { DetailWidgetProps } from \"@medusajs\u002Fframework\u002Ftypes\"\n\nconst MyWidget = ({ data }: DetailWidgetProps\u003CHttpTypes.AdminProduct>) => {\n  return \u003CContainer>Widget content\u003C\u002FContainer>\n}\n\nexport const config = defineWidgetConfig({\n  zone: \"product.details.after\",\n})\n\nexport default MyWidget\n```\n\n**UI Routes** create new admin pages:\n\n```tsx\n\u002F\u002F src\u002Fadmin\u002Froutes\u002Fcustom-page\u002Fpage.tsx\nimport { defineRouteConfig } from \"@medusajs\u002Fadmin-sdk\"\n\nconst CustomPage = () => {\n  return \u003Cdiv>Page content\u003C\u002Fdiv>\n}\n\nexport const config = defineRouteConfig({\n  label: \"Custom Page\",\n})\n\nexport default CustomPage\n```\n\n## Common Issues & Solutions\n\n**\"Cannot find module\" errors (pnpm users):**\n- Install peer dependencies BEFORE coding\n- Use exact versions from dashboard\n\n**\"No QueryClient set\" error:**\n- pnpm: Install @tanstack\u002Freact-query\n- npm\u002Fyarn: Remove incorrectly installed package\n\n**\"DataTable.Search not enabled\":**\n- Must pass search configuration to useDataTable\n\n**Widget not refreshing:**\n- Invalidate display queries, not just modal queries\n- Include all dependencies in query keys\n\n**Display empty on refresh:**\n- Display query has conditional `enabled` based on UI state\n- Remove condition - display data must load on mount\n\n## Next Steps - Testing Your Implementation\n\n**After successfully implementing a feature, always provide these next steps to the user:**\n\n### 1. Start the Development Server\n\nIf the server isn't already running, start it:\n\n```bash\nnpm run dev      # or pnpm dev \u002F yarn dev\n```\n\n### 2. Access the Admin Dashboard\n\nOpen your browser and navigate to:\n- **Admin Dashboard:** http:\u002F\u002Flocalhost:9000\u002Fapp\n\nLog in with your admin credentials.\n\n### 3. Navigate to Your Custom UI\n\n**For Widgets:**\nNavigate to the page where your widget is displayed. Common widget zones:\n- **Product widgets:** Go to Products → Select a product → Your widget appears in the zone you configured (e.g., `product.details.after`)\n- **Order widgets:** Go to Orders → Select an order → Your widget appears in the configured zone\n- **Customer widgets:** Go to Customers → Select a customer → Your widget appears in the configured zone\n\n**For UI Routes (Custom Pages):**\n- Look for your custom page in the admin sidebar\u002Fnavigation (based on the `label` you configured)\n- Or navigate directly to: `http:\u002F\u002Flocalhost:9000\u002Fapp\u002F[your-route-path]`\n\n### 4. Test Functionality\n\nDepending on what was implemented, test:\n- **Forms:** Try creating\u002Fediting entities, verify validation and error messages\n- **Tables:** Test pagination, search, sorting, and row selection\n- **Data display:** Verify data loads correctly and refreshes after mutations\n- **Modals:** Open FocusModal\u002FDrawer, test form submission, verify data updates\n- **Navigation:** Click links and verify routing works correctly\n\n### Format for Presenting Next Steps\n\nAlways present next steps in a clear, actionable format after implementation:\n\n```markdown\n## Implementation Complete\n\nThe [feature name] has been successfully implemented. Here's how to see it:\n\n### Start the Development Server\n[command based on package manager]\n\n### Access the Admin Dashboard\nOpen http:\u002F\u002Flocalhost:9000\u002Fapp in your browser and log in.\n\n### View Your Custom UI\n\n**For Widgets:**\n1. Navigate to [specific admin page, e.g., \"Products\"]\n2. Select [an entity, e.g., \"any product\"]\n3. Scroll to [zone location, e.g., \"the bottom of the page\"]\n4. You'll see your \"[widget name]\" widget\n\n**For UI Routes:**\n1. Look for \"[page label]\" in the admin navigation\n2. Or navigate directly to http:\u002F\u002Flocalhost:9000\u002Fapp\u002F[route-path]\n\n### What to Test\n1. [Specific test case 1]\n2. [Specific test case 2]\n3. [Specific test case 3]\n```\n",{"data":41,"body":42},{"name":4,"description":6},{"type":43,"children":44},"root",[45,54,60,71,78,86,116,124,147,153,163,171,273,283,289,297,305,368,376,399,407,425,431,438,448,754,760,769,913,923,929,1127,1133,1139,1242,1248,1295,1301,1320,1326,1388,1394,1441,1447,1483,1489,1497,3064,3072,3090,3096,3101,3109,3180,3188,3228,3236,3255,3263,3303,3311,3351,3359,3390,3396,3401,3411,3416,3439,3445,3453,3458,4408,4416,4460,4468,4512,4530,4536,4546,4854,4864,5094,5100,5108,5121,5129,5142,5150,5158,5166,5179,5187,5208,5214,5222,5228,5233,5263,5269,5274,5294,5299,5305,5315,5354,5362,5389,5395,5400,5452,5458,5463,5769],{"type":46,"tag":47,"props":48,"children":50},"element","h1",{"id":49},"medusa-admin-dashboard-customizations",[51],{"type":52,"value":53},"text","Medusa Admin Dashboard Customizations",{"type":46,"tag":55,"props":56,"children":57},"p",{},[58],{"type":52,"value":59},"Build custom UI extensions for the Medusa Admin dashboard using the Admin SDK and Medusa UI components.",{"type":46,"tag":55,"props":61,"children":62},{},[63,69],{"type":46,"tag":64,"props":65,"children":66},"strong",{},[67],{"type":52,"value":68},"Note:",{"type":52,"value":70}," \"UI Routes\" are custom admin pages, different from backend API routes (which use building-with-medusa skill).",{"type":46,"tag":72,"props":73,"children":75},"h2",{"id":74},"when-to-apply",[76],{"type":52,"value":77},"When to Apply",{"type":46,"tag":55,"props":79,"children":80},{},[81],{"type":46,"tag":64,"props":82,"children":83},{},[84],{"type":52,"value":85},"Load this skill for ANY admin UI development task, including:",{"type":46,"tag":87,"props":88,"children":89},"ul",{},[90,96,101,106,111],{"type":46,"tag":91,"props":92,"children":93},"li",{},[94],{"type":52,"value":95},"Creating widgets for product\u002Forder\u002Fcustomer pages",{"type":46,"tag":91,"props":97,"children":98},{},[99],{"type":52,"value":100},"Building custom admin pages",{"type":46,"tag":91,"props":102,"children":103},{},[104],{"type":52,"value":105},"Implementing forms and modals",{"type":46,"tag":91,"props":107,"children":108},{},[109],{"type":52,"value":110},"Displaying data with tables or lists",{"type":46,"tag":91,"props":112,"children":113},{},[114],{"type":52,"value":115},"Adding navigation between pages",{"type":46,"tag":55,"props":117,"children":118},{},[119],{"type":46,"tag":64,"props":120,"children":121},{},[122],{"type":52,"value":123},"Also load these skills when:",{"type":46,"tag":87,"props":125,"children":126},{},[127,137],{"type":46,"tag":91,"props":128,"children":129},{},[130,135],{"type":46,"tag":64,"props":131,"children":132},{},[133],{"type":52,"value":134},"building-with-medusa:",{"type":52,"value":136}," Building backend API routes that the admin UI calls",{"type":46,"tag":91,"props":138,"children":139},{},[140,145],{"type":46,"tag":64,"props":141,"children":142},{},[143],{"type":52,"value":144},"building-storefronts:",{"type":52,"value":146}," If working on storefront instead of admin dashboard",{"type":46,"tag":72,"props":148,"children":150},{"id":149},"critical-load-reference-files-when-needed",[151],{"type":52,"value":152},"CRITICAL: Load Reference Files When Needed",{"type":46,"tag":55,"props":154,"children":155},{},[156,161],{"type":46,"tag":64,"props":157,"children":158},{},[159],{"type":52,"value":160},"The quick reference below is NOT sufficient for implementation.",{"type":52,"value":162}," You MUST load relevant reference files before writing code for that component.",{"type":46,"tag":55,"props":164,"children":165},{},[166],{"type":46,"tag":64,"props":167,"children":168},{},[169],{"type":52,"value":170},"Load these references based on what you're implementing:",{"type":46,"tag":87,"props":172,"children":173},{},[174,193,209,225,241,257],{"type":46,"tag":91,"props":175,"children":176},{},[177,182,184,191],{"type":46,"tag":64,"props":178,"children":179},{},[180],{"type":52,"value":181},"Creating widgets?",{"type":52,"value":183}," → MUST load ",{"type":46,"tag":185,"props":186,"children":188},"code",{"className":187},[],[189],{"type":52,"value":190},"references\u002Fdata-loading.md",{"type":52,"value":192}," first",{"type":46,"tag":91,"props":194,"children":195},{},[196,201,202,208],{"type":46,"tag":64,"props":197,"children":198},{},[199],{"type":52,"value":200},"Building forms\u002Fmodals?",{"type":52,"value":183},{"type":46,"tag":185,"props":203,"children":205},{"className":204},[],[206],{"type":52,"value":207},"references\u002Fforms.md",{"type":52,"value":192},{"type":46,"tag":91,"props":210,"children":211},{},[212,217,218,224],{"type":46,"tag":64,"props":213,"children":214},{},[215],{"type":52,"value":216},"Displaying data in tables\u002Flists?",{"type":52,"value":183},{"type":46,"tag":185,"props":219,"children":221},{"className":220},[],[222],{"type":52,"value":223},"references\u002Fdisplay-patterns.md",{"type":52,"value":192},{"type":46,"tag":91,"props":226,"children":227},{},[228,233,234,240],{"type":46,"tag":64,"props":229,"children":230},{},[231],{"type":52,"value":232},"Selecting from large datasets?",{"type":52,"value":183},{"type":46,"tag":185,"props":235,"children":237},{"className":236},[],[238],{"type":52,"value":239},"references\u002Ftable-selection.md",{"type":52,"value":192},{"type":46,"tag":91,"props":242,"children":243},{},[244,249,250,256],{"type":46,"tag":64,"props":245,"children":246},{},[247],{"type":52,"value":248},"Adding navigation?",{"type":52,"value":183},{"type":46,"tag":185,"props":251,"children":253},{"className":252},[],[254],{"type":52,"value":255},"references\u002Fnavigation.md",{"type":52,"value":192},{"type":46,"tag":91,"props":258,"children":259},{},[260,265,266,272],{"type":46,"tag":64,"props":261,"children":262},{},[263],{"type":52,"value":264},"Styling components?",{"type":52,"value":183},{"type":46,"tag":185,"props":267,"children":269},{"className":268},[],[270],{"type":52,"value":271},"references\u002Ftypography.md",{"type":52,"value":192},{"type":46,"tag":55,"props":274,"children":275},{},[276,281],{"type":46,"tag":64,"props":277,"children":278},{},[279],{"type":52,"value":280},"Minimum requirement:",{"type":52,"value":282}," Load at least 1-2 reference files relevant to your specific task before implementing.",{"type":46,"tag":72,"props":284,"children":286},{"id":285},"when-to-use-this-skill-vs-medusadocs-mcp-server",[287],{"type":52,"value":288},"When to Use This Skill vs MedusaDocs MCP Server",{"type":46,"tag":55,"props":290,"children":291},{},[292],{"type":46,"tag":64,"props":293,"children":294},{},[295],{"type":52,"value":296},"⚠️ CRITICAL: This skill should be consulted FIRST for planning and implementation.",{"type":46,"tag":55,"props":298,"children":299},{},[300],{"type":46,"tag":64,"props":301,"children":302},{},[303],{"type":52,"value":304},"Use this skill for (PRIMARY SOURCE):",{"type":46,"tag":87,"props":306,"children":307},{},[308,318,328,338,348,358],{"type":46,"tag":91,"props":309,"children":310},{},[311,316],{"type":46,"tag":64,"props":312,"children":313},{},[314],{"type":52,"value":315},"Planning",{"type":52,"value":317}," - Understanding how to structure admin UI features",{"type":46,"tag":91,"props":319,"children":320},{},[321,326],{"type":46,"tag":64,"props":322,"children":323},{},[324],{"type":52,"value":325},"Component patterns",{"type":52,"value":327}," - Widgets, pages, forms, tables, modals",{"type":46,"tag":91,"props":329,"children":330},{},[331,336],{"type":46,"tag":64,"props":332,"children":333},{},[334],{"type":52,"value":335},"Design system",{"type":52,"value":337}," - Typography, colors, spacing, semantic classes",{"type":46,"tag":91,"props":339,"children":340},{},[341,346],{"type":46,"tag":64,"props":342,"children":343},{},[344],{"type":52,"value":345},"Data loading",{"type":52,"value":347}," - Critical separate query pattern, cache invalidation",{"type":46,"tag":91,"props":349,"children":350},{},[351,356],{"type":46,"tag":64,"props":352,"children":353},{},[354],{"type":52,"value":355},"Best practices",{"type":52,"value":357}," - Correct vs incorrect patterns (e.g., display queries on mount)",{"type":46,"tag":91,"props":359,"children":360},{},[361,366],{"type":46,"tag":64,"props":362,"children":363},{},[364],{"type":52,"value":365},"Critical rules",{"type":52,"value":367}," - What NOT to do (common mistakes like conditional display queries)",{"type":46,"tag":55,"props":369,"children":370},{},[371],{"type":46,"tag":64,"props":372,"children":373},{},[374],{"type":52,"value":375},"Use MedusaDocs MCP server for (SECONDARY SOURCE):",{"type":46,"tag":87,"props":377,"children":378},{},[379,384,389,394],{"type":46,"tag":91,"props":380,"children":381},{},[382],{"type":52,"value":383},"Specific component prop signatures after you know which component to use",{"type":46,"tag":91,"props":385,"children":386},{},[387],{"type":52,"value":388},"Available widget zones list",{"type":46,"tag":91,"props":390,"children":391},{},[392],{"type":52,"value":393},"JS SDK method details",{"type":46,"tag":91,"props":395,"children":396},{},[397],{"type":52,"value":398},"Configuration options reference",{"type":46,"tag":55,"props":400,"children":401},{},[402],{"type":46,"tag":64,"props":403,"children":404},{},[405],{"type":52,"value":406},"Why skills come first:",{"type":46,"tag":87,"props":408,"children":409},{},[410,415,420],{"type":46,"tag":91,"props":411,"children":412},{},[413],{"type":52,"value":414},"Skills contain critical patterns like separate display\u002Fmodal queries that MCP doesn't emphasize",{"type":46,"tag":91,"props":416,"children":417},{},[418],{"type":52,"value":419},"Skills show correct vs incorrect patterns; MCP shows what's possible",{"type":46,"tag":91,"props":421,"children":422},{},[423],{"type":52,"value":424},"Planning requires understanding patterns, not just API reference",{"type":46,"tag":72,"props":426,"children":428},{"id":427},"critical-setup-rules",[429],{"type":52,"value":430},"Critical Setup Rules",{"type":46,"tag":432,"props":433,"children":435},"h3",{"id":434},"sdk-client-configuration",[436],{"type":52,"value":437},"SDK Client Configuration",{"type":46,"tag":55,"props":439,"children":440},{},[441,446],{"type":46,"tag":64,"props":442,"children":443},{},[444],{"type":52,"value":445},"CRITICAL:",{"type":52,"value":447}," Always use exact configuration - different values cause errors:",{"type":46,"tag":449,"props":450,"children":455},"pre",{"className":451,"code":452,"language":453,"meta":454,"style":454},"language-tsx shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F src\u002Fadmin\u002Flib\u002Fclient.ts\nimport Medusa from \"@medusajs\u002Fjs-sdk\"\n\nexport const sdk = new Medusa({\n  baseUrl: import.meta.env.VITE_BACKEND_URL || \"\u002F\",\n  debug: import.meta.env.DEV,\n  auth: {\n    type: \"session\",\n  },\n})\n","tsx","",[456],{"type":46,"tag":185,"props":457,"children":458},{"__ignoreMap":454},[459,471,509,519,565,637,683,701,731,740],{"type":46,"tag":460,"props":461,"children":464},"span",{"class":462,"line":463},"line",1,[465],{"type":46,"tag":460,"props":466,"children":468},{"style":467},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[469],{"type":52,"value":470},"\u002F\u002F src\u002Fadmin\u002Flib\u002Fclient.ts\n",{"type":46,"tag":460,"props":472,"children":474},{"class":462,"line":473},2,[475,481,487,492,498,504],{"type":46,"tag":460,"props":476,"children":478},{"style":477},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[479],{"type":52,"value":480},"import",{"type":46,"tag":460,"props":482,"children":484},{"style":483},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[485],{"type":52,"value":486}," Medusa ",{"type":46,"tag":460,"props":488,"children":489},{"style":477},[490],{"type":52,"value":491},"from",{"type":46,"tag":460,"props":493,"children":495},{"style":494},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[496],{"type":52,"value":497}," \"",{"type":46,"tag":460,"props":499,"children":501},{"style":500},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[502],{"type":52,"value":503},"@medusajs\u002Fjs-sdk",{"type":46,"tag":460,"props":505,"children":506},{"style":494},[507],{"type":52,"value":508},"\"\n",{"type":46,"tag":460,"props":510,"children":512},{"class":462,"line":511},3,[513],{"type":46,"tag":460,"props":514,"children":516},{"emptyLinePlaceholder":515},true,[517],{"type":52,"value":518},"\n",{"type":46,"tag":460,"props":520,"children":522},{"class":462,"line":521},4,[523,528,534,539,544,549,555,560],{"type":46,"tag":460,"props":524,"children":525},{"style":477},[526],{"type":52,"value":527},"export",{"type":46,"tag":460,"props":529,"children":531},{"style":530},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[532],{"type":52,"value":533}," const",{"type":46,"tag":460,"props":535,"children":536},{"style":483},[537],{"type":52,"value":538}," sdk ",{"type":46,"tag":460,"props":540,"children":541},{"style":494},[542],{"type":52,"value":543},"=",{"type":46,"tag":460,"props":545,"children":546},{"style":494},[547],{"type":52,"value":548}," new",{"type":46,"tag":460,"props":550,"children":552},{"style":551},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[553],{"type":52,"value":554}," Medusa",{"type":46,"tag":460,"props":556,"children":557},{"style":483},[558],{"type":52,"value":559},"(",{"type":46,"tag":460,"props":561,"children":562},{"style":494},[563],{"type":52,"value":564},"{\n",{"type":46,"tag":460,"props":566,"children":568},{"class":462,"line":567},5,[569,575,580,585,590,595,599,604,608,613,618,622,627,632],{"type":46,"tag":460,"props":570,"children":572},{"style":571},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[573],{"type":52,"value":574},"  baseUrl",{"type":46,"tag":460,"props":576,"children":577},{"style":494},[578],{"type":52,"value":579},":",{"type":46,"tag":460,"props":581,"children":582},{"style":477},[583],{"type":52,"value":584}," import",{"type":46,"tag":460,"props":586,"children":587},{"style":494},[588],{"type":52,"value":589},".",{"type":46,"tag":460,"props":591,"children":592},{"style":483},[593],{"type":52,"value":594},"meta",{"type":46,"tag":460,"props":596,"children":597},{"style":494},[598],{"type":52,"value":589},{"type":46,"tag":460,"props":600,"children":601},{"style":483},[602],{"type":52,"value":603},"env",{"type":46,"tag":460,"props":605,"children":606},{"style":494},[607],{"type":52,"value":589},{"type":46,"tag":460,"props":609,"children":610},{"style":483},[611],{"type":52,"value":612},"VITE_BACKEND_URL ",{"type":46,"tag":460,"props":614,"children":615},{"style":494},[616],{"type":52,"value":617},"||",{"type":46,"tag":460,"props":619,"children":620},{"style":494},[621],{"type":52,"value":497},{"type":46,"tag":460,"props":623,"children":624},{"style":500},[625],{"type":52,"value":626},"\u002F",{"type":46,"tag":460,"props":628,"children":629},{"style":494},[630],{"type":52,"value":631},"\"",{"type":46,"tag":460,"props":633,"children":634},{"style":494},[635],{"type":52,"value":636},",\n",{"type":46,"tag":460,"props":638,"children":640},{"class":462,"line":639},6,[641,646,650,654,658,662,666,670,674,679],{"type":46,"tag":460,"props":642,"children":643},{"style":571},[644],{"type":52,"value":645},"  debug",{"type":46,"tag":460,"props":647,"children":648},{"style":494},[649],{"type":52,"value":579},{"type":46,"tag":460,"props":651,"children":652},{"style":477},[653],{"type":52,"value":584},{"type":46,"tag":460,"props":655,"children":656},{"style":494},[657],{"type":52,"value":589},{"type":46,"tag":460,"props":659,"children":660},{"style":483},[661],{"type":52,"value":594},{"type":46,"tag":460,"props":663,"children":664},{"style":494},[665],{"type":52,"value":589},{"type":46,"tag":460,"props":667,"children":668},{"style":483},[669],{"type":52,"value":603},{"type":46,"tag":460,"props":671,"children":672},{"style":494},[673],{"type":52,"value":589},{"type":46,"tag":460,"props":675,"children":676},{"style":483},[677],{"type":52,"value":678},"DEV",{"type":46,"tag":460,"props":680,"children":681},{"style":494},[682],{"type":52,"value":636},{"type":46,"tag":460,"props":684,"children":686},{"class":462,"line":685},7,[687,692,696],{"type":46,"tag":460,"props":688,"children":689},{"style":571},[690],{"type":52,"value":691},"  auth",{"type":46,"tag":460,"props":693,"children":694},{"style":494},[695],{"type":52,"value":579},{"type":46,"tag":460,"props":697,"children":698},{"style":494},[699],{"type":52,"value":700}," {\n",{"type":46,"tag":460,"props":702,"children":704},{"class":462,"line":703},8,[705,710,714,718,723,727],{"type":46,"tag":460,"props":706,"children":707},{"style":571},[708],{"type":52,"value":709},"    type",{"type":46,"tag":460,"props":711,"children":712},{"style":494},[713],{"type":52,"value":579},{"type":46,"tag":460,"props":715,"children":716},{"style":494},[717],{"type":52,"value":497},{"type":46,"tag":460,"props":719,"children":720},{"style":500},[721],{"type":52,"value":722},"session",{"type":46,"tag":460,"props":724,"children":725},{"style":494},[726],{"type":52,"value":631},{"type":46,"tag":460,"props":728,"children":729},{"style":494},[730],{"type":52,"value":636},{"type":46,"tag":460,"props":732,"children":734},{"class":462,"line":733},9,[735],{"type":46,"tag":460,"props":736,"children":737},{"style":494},[738],{"type":52,"value":739},"  },\n",{"type":46,"tag":460,"props":741,"children":743},{"class":462,"line":742},10,[744,749],{"type":46,"tag":460,"props":745,"children":746},{"style":494},[747],{"type":52,"value":748},"}",{"type":46,"tag":460,"props":750,"children":751},{"style":483},[752],{"type":52,"value":753},")\n",{"type":46,"tag":432,"props":755,"children":757},{"id":756},"pnpm-users-only",[758],{"type":52,"value":759},"pnpm Users ONLY",{"type":46,"tag":55,"props":761,"children":762},{},[763,767],{"type":46,"tag":64,"props":764,"children":765},{},[766],{"type":52,"value":445},{"type":52,"value":768}," Install peer dependencies BEFORE writing any code:",{"type":46,"tag":449,"props":770,"children":774},{"className":771,"code":772,"language":773,"meta":454,"style":454},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Find exact version from dashboard\npnpm list @tanstack\u002Freact-query --depth=10 | grep @medusajs\u002Fdashboard\n# Install that exact version\npnpm add @tanstack\u002Freact-query@[exact-version]\n\n# If using navigation (Link component)\npnpm list react-router-dom --depth=10 | grep @medusajs\u002Fdashboard\npnpm add react-router-dom@[exact-version]\n","bash",[775],{"type":46,"tag":185,"props":776,"children":777},{"__ignoreMap":454},[778,786,825,833,850,857,865,897],{"type":46,"tag":460,"props":779,"children":780},{"class":462,"line":463},[781],{"type":46,"tag":460,"props":782,"children":783},{"style":467},[784],{"type":52,"value":785},"# Find exact version from dashboard\n",{"type":46,"tag":460,"props":787,"children":788},{"class":462,"line":473},[789,795,800,805,810,815,820],{"type":46,"tag":460,"props":790,"children":792},{"style":791},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[793],{"type":52,"value":794},"pnpm",{"type":46,"tag":460,"props":796,"children":797},{"style":500},[798],{"type":52,"value":799}," list",{"type":46,"tag":460,"props":801,"children":802},{"style":500},[803],{"type":52,"value":804}," @tanstack\u002Freact-query",{"type":46,"tag":460,"props":806,"children":807},{"style":500},[808],{"type":52,"value":809}," --depth=10",{"type":46,"tag":460,"props":811,"children":812},{"style":494},[813],{"type":52,"value":814}," |",{"type":46,"tag":460,"props":816,"children":817},{"style":791},[818],{"type":52,"value":819}," grep",{"type":46,"tag":460,"props":821,"children":822},{"style":500},[823],{"type":52,"value":824}," @medusajs\u002Fdashboard\n",{"type":46,"tag":460,"props":826,"children":827},{"class":462,"line":511},[828],{"type":46,"tag":460,"props":829,"children":830},{"style":467},[831],{"type":52,"value":832},"# Install that exact version\n",{"type":46,"tag":460,"props":834,"children":835},{"class":462,"line":521},[836,840,845],{"type":46,"tag":460,"props":837,"children":838},{"style":791},[839],{"type":52,"value":794},{"type":46,"tag":460,"props":841,"children":842},{"style":500},[843],{"type":52,"value":844}," add",{"type":46,"tag":460,"props":846,"children":847},{"style":500},[848],{"type":52,"value":849}," @tanstack\u002Freact-query@[exact-version]\n",{"type":46,"tag":460,"props":851,"children":852},{"class":462,"line":567},[853],{"type":46,"tag":460,"props":854,"children":855},{"emptyLinePlaceholder":515},[856],{"type":52,"value":518},{"type":46,"tag":460,"props":858,"children":859},{"class":462,"line":639},[860],{"type":46,"tag":460,"props":861,"children":862},{"style":467},[863],{"type":52,"value":864},"# If using navigation (Link component)\n",{"type":46,"tag":460,"props":866,"children":867},{"class":462,"line":685},[868,872,876,881,885,889,893],{"type":46,"tag":460,"props":869,"children":870},{"style":791},[871],{"type":52,"value":794},{"type":46,"tag":460,"props":873,"children":874},{"style":500},[875],{"type":52,"value":799},{"type":46,"tag":460,"props":877,"children":878},{"style":500},[879],{"type":52,"value":880}," react-router-dom",{"type":46,"tag":460,"props":882,"children":883},{"style":500},[884],{"type":52,"value":809},{"type":46,"tag":460,"props":886,"children":887},{"style":494},[888],{"type":52,"value":814},{"type":46,"tag":460,"props":890,"children":891},{"style":791},[892],{"type":52,"value":819},{"type":46,"tag":460,"props":894,"children":895},{"style":500},[896],{"type":52,"value":824},{"type":46,"tag":460,"props":898,"children":899},{"class":462,"line":703},[900,904,908],{"type":46,"tag":460,"props":901,"children":902},{"style":791},[903],{"type":52,"value":794},{"type":46,"tag":460,"props":905,"children":906},{"style":500},[907],{"type":52,"value":844},{"type":46,"tag":460,"props":909,"children":910},{"style":500},[911],{"type":52,"value":912}," react-router-dom@[exact-version]\n",{"type":46,"tag":55,"props":914,"children":915},{},[916,921],{"type":46,"tag":64,"props":917,"children":918},{},[919],{"type":52,"value":920},"npm\u002Fyarn users:",{"type":52,"value":922}," DO NOT install these packages - already available.",{"type":46,"tag":72,"props":924,"children":926},{"id":925},"rule-categories-by-priority",[927],{"type":52,"value":928},"Rule Categories by Priority",{"type":46,"tag":930,"props":931,"children":932},"table",{},[933,962],{"type":46,"tag":934,"props":935,"children":936},"thead",{},[937],{"type":46,"tag":938,"props":939,"children":940},"tr",{},[941,947,952,957],{"type":46,"tag":942,"props":943,"children":944},"th",{},[945],{"type":52,"value":946},"Priority",{"type":46,"tag":942,"props":948,"children":949},{},[950],{"type":52,"value":951},"Category",{"type":46,"tag":942,"props":953,"children":954},{},[955],{"type":52,"value":956},"Impact",{"type":46,"tag":942,"props":958,"children":959},{},[960],{"type":52,"value":961},"Prefix",{"type":46,"tag":963,"props":964,"children":965},"tbody",{},[966,994,1020,1047,1074,1101],{"type":46,"tag":938,"props":967,"children":968},{},[969,975,980,985],{"type":46,"tag":970,"props":971,"children":972},"td",{},[973],{"type":52,"value":974},"1",{"type":46,"tag":970,"props":976,"children":977},{},[978],{"type":52,"value":979},"Data Loading",{"type":46,"tag":970,"props":981,"children":982},{},[983],{"type":52,"value":984},"CRITICAL",{"type":46,"tag":970,"props":986,"children":987},{},[988],{"type":46,"tag":185,"props":989,"children":991},{"className":990},[],[992],{"type":52,"value":993},"data-",{"type":46,"tag":938,"props":995,"children":996},{},[997,1002,1007,1011],{"type":46,"tag":970,"props":998,"children":999},{},[1000],{"type":52,"value":1001},"2",{"type":46,"tag":970,"props":1003,"children":1004},{},[1005],{"type":52,"value":1006},"Design System",{"type":46,"tag":970,"props":1008,"children":1009},{},[1010],{"type":52,"value":984},{"type":46,"tag":970,"props":1012,"children":1013},{},[1014],{"type":46,"tag":185,"props":1015,"children":1017},{"className":1016},[],[1018],{"type":52,"value":1019},"design-",{"type":46,"tag":938,"props":1021,"children":1022},{},[1023,1028,1033,1038],{"type":46,"tag":970,"props":1024,"children":1025},{},[1026],{"type":52,"value":1027},"3",{"type":46,"tag":970,"props":1029,"children":1030},{},[1031],{"type":52,"value":1032},"Data Display",{"type":46,"tag":970,"props":1034,"children":1035},{},[1036],{"type":52,"value":1037},"HIGH (includes CRITICAL price rule)",{"type":46,"tag":970,"props":1039,"children":1040},{},[1041],{"type":46,"tag":185,"props":1042,"children":1044},{"className":1043},[],[1045],{"type":52,"value":1046},"display-",{"type":46,"tag":938,"props":1048,"children":1049},{},[1050,1055,1060,1065],{"type":46,"tag":970,"props":1051,"children":1052},{},[1053],{"type":52,"value":1054},"4",{"type":46,"tag":970,"props":1056,"children":1057},{},[1058],{"type":52,"value":1059},"Typography",{"type":46,"tag":970,"props":1061,"children":1062},{},[1063],{"type":52,"value":1064},"HIGH",{"type":46,"tag":970,"props":1066,"children":1067},{},[1068],{"type":46,"tag":185,"props":1069,"children":1071},{"className":1070},[],[1072],{"type":52,"value":1073},"typo-",{"type":46,"tag":938,"props":1075,"children":1076},{},[1077,1082,1087,1092],{"type":46,"tag":970,"props":1078,"children":1079},{},[1080],{"type":52,"value":1081},"5",{"type":46,"tag":970,"props":1083,"children":1084},{},[1085],{"type":52,"value":1086},"Forms & Modals",{"type":46,"tag":970,"props":1088,"children":1089},{},[1090],{"type":52,"value":1091},"MEDIUM",{"type":46,"tag":970,"props":1093,"children":1094},{},[1095],{"type":46,"tag":185,"props":1096,"children":1098},{"className":1097},[],[1099],{"type":52,"value":1100},"form-",{"type":46,"tag":938,"props":1102,"children":1103},{},[1104,1109,1114,1118],{"type":46,"tag":970,"props":1105,"children":1106},{},[1107],{"type":52,"value":1108},"6",{"type":46,"tag":970,"props":1110,"children":1111},{},[1112],{"type":52,"value":1113},"Selection Patterns",{"type":46,"tag":970,"props":1115,"children":1116},{},[1117],{"type":52,"value":1091},{"type":46,"tag":970,"props":1119,"children":1120},{},[1121],{"type":46,"tag":185,"props":1122,"children":1124},{"className":1123},[],[1125],{"type":52,"value":1126},"select-",{"type":46,"tag":72,"props":1128,"children":1130},{"id":1129},"quick-reference",[1131],{"type":52,"value":1132},"Quick Reference",{"type":46,"tag":432,"props":1134,"children":1136},{"id":1135},"_1-data-loading-critical",[1137],{"type":52,"value":1138},"1. Data Loading (CRITICAL)",{"type":46,"tag":87,"props":1140,"children":1141},{},[1142,1160,1187,1198,1209,1220,1231],{"type":46,"tag":91,"props":1143,"children":1144},{},[1145,1151,1153,1158],{"type":46,"tag":185,"props":1146,"children":1148},{"className":1147},[],[1149],{"type":52,"value":1150},"data-sdk-always",{"type":52,"value":1152}," - ",{"type":46,"tag":64,"props":1154,"children":1155},{},[1156],{"type":52,"value":1157},"ALWAYS use Medusa JS SDK for ALL API requests",{"type":52,"value":1159}," - NEVER use regular fetch() (missing auth headers causes errors)",{"type":46,"tag":91,"props":1161,"children":1162},{},[1163,1169,1171,1177,1179,1185],{"type":46,"tag":185,"props":1164,"children":1166},{"className":1165},[],[1167],{"type":52,"value":1168},"data-sdk-method-choice",{"type":52,"value":1170}," - Use existing SDK methods for built-in endpoints (",{"type":46,"tag":185,"props":1172,"children":1174},{"className":1173},[],[1175],{"type":52,"value":1176},"sdk.admin.product.list()",{"type":52,"value":1178},"), use ",{"type":46,"tag":185,"props":1180,"children":1182},{"className":1181},[],[1183],{"type":52,"value":1184},"sdk.client.fetch()",{"type":52,"value":1186}," for custom routes",{"type":46,"tag":91,"props":1188,"children":1189},{},[1190,1196],{"type":46,"tag":185,"props":1191,"children":1193},{"className":1192},[],[1194],{"type":52,"value":1195},"data-display-on-mount",{"type":52,"value":1197}," - Display queries MUST load on mount (no enabled condition based on UI state)",{"type":46,"tag":91,"props":1199,"children":1200},{},[1201,1207],{"type":46,"tag":185,"props":1202,"children":1204},{"className":1203},[],[1205],{"type":52,"value":1206},"data-separate-queries",{"type":52,"value":1208}," - Separate display queries from modal\u002Fform queries",{"type":46,"tag":91,"props":1210,"children":1211},{},[1212,1218],{"type":46,"tag":185,"props":1213,"children":1215},{"className":1214},[],[1216],{"type":52,"value":1217},"data-invalidate-display",{"type":52,"value":1219}," - Invalidate display queries after mutations, not just modal queries",{"type":46,"tag":91,"props":1221,"children":1222},{},[1223,1229],{"type":46,"tag":185,"props":1224,"children":1226},{"className":1225},[],[1227],{"type":52,"value":1228},"data-loading-states",{"type":52,"value":1230}," - Always show loading states (Spinner), not empty states",{"type":46,"tag":91,"props":1232,"children":1233},{},[1234,1240],{"type":46,"tag":185,"props":1235,"children":1237},{"className":1236},[],[1238],{"type":52,"value":1239},"data-pnpm-install-first",{"type":52,"value":1241}," - pnpm users MUST install @tanstack\u002Freact-query BEFORE coding",{"type":46,"tag":432,"props":1243,"children":1245},{"id":1244},"_2-design-system-critical",[1246],{"type":52,"value":1247},"2. Design System (CRITICAL)",{"type":46,"tag":87,"props":1249,"children":1250},{},[1251,1262,1273,1284],{"type":46,"tag":91,"props":1252,"children":1253},{},[1254,1260],{"type":46,"tag":185,"props":1255,"children":1257},{"className":1256},[],[1258],{"type":52,"value":1259},"design-semantic-colors",{"type":52,"value":1261}," - Always use semantic color classes (bg-ui-bg-base, text-ui-fg-subtle), never hardcoded",{"type":46,"tag":91,"props":1263,"children":1264},{},[1265,1271],{"type":46,"tag":185,"props":1266,"children":1268},{"className":1267},[],[1269],{"type":52,"value":1270},"design-spacing",{"type":52,"value":1272}," - Use px-6 py-4 for section padding, gap-2 for lists, gap-3 for items",{"type":46,"tag":91,"props":1274,"children":1275},{},[1276,1282],{"type":46,"tag":185,"props":1277,"children":1279},{"className":1278},[],[1280],{"type":52,"value":1281},"design-button-size",{"type":52,"value":1283}," - Always use size=\"small\" for buttons in widgets and tables",{"type":46,"tag":91,"props":1285,"children":1286},{},[1287,1293],{"type":46,"tag":185,"props":1288,"children":1290},{"className":1289},[],[1291],{"type":52,"value":1292},"design-medusa-components",{"type":52,"value":1294}," - Always use Medusa UI components (Container, Button, Text), not raw HTML",{"type":46,"tag":432,"props":1296,"children":1298},{"id":1297},"_3-data-display-high",[1299],{"type":52,"value":1300},"3. Data Display (HIGH)",{"type":46,"tag":87,"props":1302,"children":1303},{},[1304],{"type":46,"tag":91,"props":1305,"children":1306},{},[1307,1313,1314,1318],{"type":46,"tag":185,"props":1308,"children":1310},{"className":1309},[],[1311],{"type":52,"value":1312},"display-price-format",{"type":52,"value":1152},{"type":46,"tag":64,"props":1315,"children":1316},{},[1317],{"type":52,"value":984},{"type":52,"value":1319},": Prices from Medusa are stored as-is ($49.99 = 49.99, NOT in cents). Display them directly - NEVER divide by 100",{"type":46,"tag":432,"props":1321,"children":1323},{"id":1322},"_4-typography-high",[1324],{"type":52,"value":1325},"4. Typography (HIGH)",{"type":46,"tag":87,"props":1327,"children":1328},{},[1329,1340,1359,1377],{"type":46,"tag":91,"props":1330,"children":1331},{},[1332,1338],{"type":46,"tag":185,"props":1333,"children":1335},{"className":1334},[],[1336],{"type":52,"value":1337},"typo-text-component",{"type":52,"value":1339}," - Always use Text component from @medusajs\u002Fui, never plain span\u002Fp tags",{"type":46,"tag":91,"props":1341,"children":1342},{},[1343,1349,1351,1357],{"type":46,"tag":185,"props":1344,"children":1346},{"className":1345},[],[1347],{"type":52,"value":1348},"typo-labels",{"type":52,"value":1350}," - Use ",{"type":46,"tag":185,"props":1352,"children":1354},{"className":1353},[],[1355],{"type":52,"value":1356},"\u003CText size=\"small\" leading=\"compact\" weight=\"plus\">",{"type":52,"value":1358}," for labels\u002Fheadings",{"type":46,"tag":91,"props":1360,"children":1361},{},[1362,1368,1369,1375],{"type":46,"tag":185,"props":1363,"children":1365},{"className":1364},[],[1366],{"type":52,"value":1367},"typo-descriptions",{"type":52,"value":1350},{"type":46,"tag":185,"props":1370,"children":1372},{"className":1371},[],[1373],{"type":52,"value":1374},"\u003CText size=\"small\" leading=\"compact\" className=\"text-ui-fg-subtle\">",{"type":52,"value":1376}," for descriptions",{"type":46,"tag":91,"props":1378,"children":1379},{},[1380,1386],{"type":46,"tag":185,"props":1381,"children":1383},{"className":1382},[],[1384],{"type":52,"value":1385},"typo-no-heading-widgets",{"type":52,"value":1387}," - Never use Heading for small sections in widgets (use Text instead)",{"type":46,"tag":432,"props":1389,"children":1391},{"id":1390},"_5-forms-modals-medium",[1392],{"type":52,"value":1393},"5. Forms & Modals (MEDIUM)",{"type":46,"tag":87,"props":1395,"children":1396},{},[1397,1408,1419,1430],{"type":46,"tag":91,"props":1398,"children":1399},{},[1400,1406],{"type":46,"tag":185,"props":1401,"children":1403},{"className":1402},[],[1404],{"type":52,"value":1405},"form-focusmodal-create",{"type":52,"value":1407}," - Use FocusModal for creating new entities",{"type":46,"tag":91,"props":1409,"children":1410},{},[1411,1417],{"type":46,"tag":185,"props":1412,"children":1414},{"className":1413},[],[1415],{"type":52,"value":1416},"form-drawer-edit",{"type":52,"value":1418}," - Use Drawer for editing existing entities",{"type":46,"tag":91,"props":1420,"children":1421},{},[1422,1428],{"type":46,"tag":185,"props":1423,"children":1425},{"className":1424},[],[1426],{"type":52,"value":1427},"form-disable-pending",{"type":52,"value":1429}," - Always disable actions during mutations (disabled={mutation.isPending})",{"type":46,"tag":91,"props":1431,"children":1432},{},[1433,1439],{"type":46,"tag":185,"props":1434,"children":1436},{"className":1435},[],[1437],{"type":52,"value":1438},"form-show-loading",{"type":52,"value":1440}," - Show loading state on submit button (isLoading={mutation.isPending})",{"type":46,"tag":432,"props":1442,"children":1444},{"id":1443},"_6-selection-patterns-medium",[1445],{"type":52,"value":1446},"6. Selection Patterns (MEDIUM)",{"type":46,"tag":87,"props":1448,"children":1449},{},[1450,1461,1472],{"type":46,"tag":91,"props":1451,"children":1452},{},[1453,1459],{"type":46,"tag":185,"props":1454,"children":1456},{"className":1455},[],[1457],{"type":52,"value":1458},"select-small-datasets",{"type":52,"value":1460}," - Use Select component for 2-10 options (statuses, types, etc.)",{"type":46,"tag":91,"props":1462,"children":1463},{},[1464,1470],{"type":46,"tag":185,"props":1465,"children":1467},{"className":1466},[],[1468],{"type":52,"value":1469},"select-large-datasets",{"type":52,"value":1471}," - Use DataTable with FocusModal for large datasets (products, categories, etc.)",{"type":46,"tag":91,"props":1473,"children":1474},{},[1475,1481],{"type":46,"tag":185,"props":1476,"children":1478},{"className":1477},[],[1479],{"type":52,"value":1480},"select-search-config",{"type":52,"value":1482}," - Must pass search configuration to useDataTable to avoid \"search not enabled\" error",{"type":46,"tag":72,"props":1484,"children":1486},{"id":1485},"critical-data-loading-pattern",[1487],{"type":52,"value":1488},"Critical Data Loading Pattern",{"type":46,"tag":55,"props":1490,"children":1491},{},[1492],{"type":46,"tag":64,"props":1493,"children":1494},{},[1495],{"type":52,"value":1496},"ALWAYS follow this pattern - never load display data conditionally:",{"type":46,"tag":449,"props":1498,"children":1500},{"className":451,"code":1499,"language":453,"meta":454,"style":454},"\u002F\u002F ✅ CORRECT - Separate queries with proper responsibilities\nconst RelatedProductsWidget = ({ data: product }) => {\n  const [modalOpen, setModalOpen] = useState(false)\n\n  \u002F\u002F Display query - loads on mount\n  const { data: displayProducts } = useQuery({\n    queryFn: () => fetchSelectedProducts(selectedIds),\n    queryKey: [\"related-products-display\", product.id],\n    \u002F\u002F No 'enabled' condition - loads immediately\n  })\n\n  \u002F\u002F Modal query - loads when needed\n  const { data: modalProducts } = useQuery({\n    queryFn: () => sdk.admin.product.list({ limit: 10, offset: 0 }),\n    queryKey: [\"products-selection\"],\n    enabled: modalOpen, \u002F\u002F OK for modal-only data\n  })\n\n  \u002F\u002F Mutation with proper invalidation\n  const updateProduct = useMutation({\n    mutationFn: updateFunction,\n    onSuccess: () => {\n      \u002F\u002F Invalidate display data query to refresh UI\n      queryClient.invalidateQueries({ queryKey: [\"related-products-display\", product.id] })\n      \u002F\u002F Also invalidate the entity query\n      queryClient.invalidateQueries({ queryKey: [\"product\", product.id] })\n      \u002F\u002F Note: No need to invalidate modal selection query\n    },\n  })\n\n  return (\n    \u003CContainer>\n      {\u002F* Display uses displayProducts *\u002F}\n      {displayProducts?.map(p => \u003Cdiv key={p.id}>{p.title}\u003C\u002Fdiv>)}\n\n      \u003CFocusModal open={modalOpen} onOpenChange={setModalOpen}>\n        {\u002F* Modal uses modalProducts *\u002F}\n      \u003C\u002FFocusModal>\n    \u003C\u002FContainer>\n  )\n}\n\n\u002F\u002F ❌ WRONG - Single query with conditional loading\nconst BrokenWidget = ({ data: product }) => {\n  const [modalOpen, setModalOpen] = useState(false)\n\n  const { data } = useQuery({\n    queryFn: () => sdk.admin.product.list(),\n    enabled: modalOpen, \u002F\u002F ❌ Display breaks on page refresh!\n  })\n\n  \u002F\u002F Trying to display from modal query\n  const displayItems = data?.filter(item => ids.includes(item.id)) \u002F\u002F No data until modal opens\n\n  return \u003Cdiv>{displayItems?.map(...)}\u003C\u002Fdiv> \u002F\u002F Empty on mount!\n}\n",[1501],{"type":46,"tag":185,"props":1502,"children":1503},{"__ignoreMap":454},[1504,1512,1563,1620,1627,1635,1682,1726,1780,1788,1800,1808,1817,1862,1968,2005,2032,2044,2052,2061,2091,2113,2138,2147,2226,2235,2311,2320,2329,2341,2349,2363,2382,2401,2508,2516,2567,2585,2602,2619,2628,2636,2644,2653,2698,2746,2754,2790,2847,2872,2884,2892,2901,2984,2992,3056],{"type":46,"tag":460,"props":1505,"children":1506},{"class":462,"line":463},[1507],{"type":46,"tag":460,"props":1508,"children":1509},{"style":467},[1510],{"type":52,"value":1511},"\u002F\u002F ✅ CORRECT - Separate queries with proper responsibilities\n",{"type":46,"tag":460,"props":1513,"children":1514},{"class":462,"line":473},[1515,1520,1525,1529,1534,1539,1543,1549,1554,1559],{"type":46,"tag":460,"props":1516,"children":1517},{"style":530},[1518],{"type":52,"value":1519},"const",{"type":46,"tag":460,"props":1521,"children":1522},{"style":483},[1523],{"type":52,"value":1524}," RelatedProductsWidget ",{"type":46,"tag":460,"props":1526,"children":1527},{"style":494},[1528],{"type":52,"value":543},{"type":46,"tag":460,"props":1530,"children":1531},{"style":494},[1532],{"type":52,"value":1533}," ({",{"type":46,"tag":460,"props":1535,"children":1536},{"style":571},[1537],{"type":52,"value":1538}," data",{"type":46,"tag":460,"props":1540,"children":1541},{"style":494},[1542],{"type":52,"value":579},{"type":46,"tag":460,"props":1544,"children":1546},{"style":1545},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic",[1547],{"type":52,"value":1548}," product",{"type":46,"tag":460,"props":1550,"children":1551},{"style":494},[1552],{"type":52,"value":1553}," })",{"type":46,"tag":460,"props":1555,"children":1556},{"style":530},[1557],{"type":52,"value":1558}," =>",{"type":46,"tag":460,"props":1560,"children":1561},{"style":494},[1562],{"type":52,"value":700},{"type":46,"tag":460,"props":1564,"children":1565},{"class":462,"line":511},[1566,1571,1576,1581,1586,1591,1596,1601,1606,1610,1616],{"type":46,"tag":460,"props":1567,"children":1568},{"style":530},[1569],{"type":52,"value":1570},"  const",{"type":46,"tag":460,"props":1572,"children":1573},{"style":494},[1574],{"type":52,"value":1575}," [",{"type":46,"tag":460,"props":1577,"children":1578},{"style":483},[1579],{"type":52,"value":1580},"modalOpen",{"type":46,"tag":460,"props":1582,"children":1583},{"style":494},[1584],{"type":52,"value":1585},",",{"type":46,"tag":460,"props":1587,"children":1588},{"style":483},[1589],{"type":52,"value":1590}," setModalOpen",{"type":46,"tag":460,"props":1592,"children":1593},{"style":494},[1594],{"type":52,"value":1595},"]",{"type":46,"tag":460,"props":1597,"children":1598},{"style":494},[1599],{"type":52,"value":1600}," =",{"type":46,"tag":460,"props":1602,"children":1603},{"style":551},[1604],{"type":52,"value":1605}," useState",{"type":46,"tag":460,"props":1607,"children":1608},{"style":571},[1609],{"type":52,"value":559},{"type":46,"tag":460,"props":1611,"children":1613},{"style":1612},"--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC",[1614],{"type":52,"value":1615},"false",{"type":46,"tag":460,"props":1617,"children":1618},{"style":571},[1619],{"type":52,"value":753},{"type":46,"tag":460,"props":1621,"children":1622},{"class":462,"line":521},[1623],{"type":46,"tag":460,"props":1624,"children":1625},{"emptyLinePlaceholder":515},[1626],{"type":52,"value":518},{"type":46,"tag":460,"props":1628,"children":1629},{"class":462,"line":567},[1630],{"type":46,"tag":460,"props":1631,"children":1632},{"style":467},[1633],{"type":52,"value":1634},"  \u002F\u002F Display query - loads on mount\n",{"type":46,"tag":460,"props":1636,"children":1637},{"class":462,"line":639},[1638,1642,1647,1651,1655,1660,1665,1669,1674,1678],{"type":46,"tag":460,"props":1639,"children":1640},{"style":530},[1641],{"type":52,"value":1570},{"type":46,"tag":460,"props":1643,"children":1644},{"style":494},[1645],{"type":52,"value":1646}," {",{"type":46,"tag":460,"props":1648,"children":1649},{"style":571},[1650],{"type":52,"value":1538},{"type":46,"tag":460,"props":1652,"children":1653},{"style":494},[1654],{"type":52,"value":579},{"type":46,"tag":460,"props":1656,"children":1657},{"style":483},[1658],{"type":52,"value":1659}," displayProducts",{"type":46,"tag":460,"props":1661,"children":1662},{"style":494},[1663],{"type":52,"value":1664}," }",{"type":46,"tag":460,"props":1666,"children":1667},{"style":494},[1668],{"type":52,"value":1600},{"type":46,"tag":460,"props":1670,"children":1671},{"style":551},[1672],{"type":52,"value":1673}," useQuery",{"type":46,"tag":460,"props":1675,"children":1676},{"style":571},[1677],{"type":52,"value":559},{"type":46,"tag":460,"props":1679,"children":1680},{"style":494},[1681],{"type":52,"value":564},{"type":46,"tag":460,"props":1683,"children":1684},{"class":462,"line":685},[1685,1690,1694,1699,1703,1708,1712,1717,1722],{"type":46,"tag":460,"props":1686,"children":1687},{"style":551},[1688],{"type":52,"value":1689},"    queryFn",{"type":46,"tag":460,"props":1691,"children":1692},{"style":494},[1693],{"type":52,"value":579},{"type":46,"tag":460,"props":1695,"children":1696},{"style":494},[1697],{"type":52,"value":1698}," ()",{"type":46,"tag":460,"props":1700,"children":1701},{"style":530},[1702],{"type":52,"value":1558},{"type":46,"tag":460,"props":1704,"children":1705},{"style":551},[1706],{"type":52,"value":1707}," fetchSelectedProducts",{"type":46,"tag":460,"props":1709,"children":1710},{"style":571},[1711],{"type":52,"value":559},{"type":46,"tag":460,"props":1713,"children":1714},{"style":483},[1715],{"type":52,"value":1716},"selectedIds",{"type":46,"tag":460,"props":1718,"children":1719},{"style":571},[1720],{"type":52,"value":1721},")",{"type":46,"tag":460,"props":1723,"children":1724},{"style":494},[1725],{"type":52,"value":636},{"type":46,"tag":460,"props":1727,"children":1728},{"class":462,"line":703},[1729,1734,1738,1742,1746,1751,1755,1759,1763,1767,1772,1776],{"type":46,"tag":460,"props":1730,"children":1731},{"style":571},[1732],{"type":52,"value":1733},"    queryKey",{"type":46,"tag":460,"props":1735,"children":1736},{"style":494},[1737],{"type":52,"value":579},{"type":46,"tag":460,"props":1739,"children":1740},{"style":571},[1741],{"type":52,"value":1575},{"type":46,"tag":460,"props":1743,"children":1744},{"style":494},[1745],{"type":52,"value":631},{"type":46,"tag":460,"props":1747,"children":1748},{"style":500},[1749],{"type":52,"value":1750},"related-products-display",{"type":46,"tag":460,"props":1752,"children":1753},{"style":494},[1754],{"type":52,"value":631},{"type":46,"tag":460,"props":1756,"children":1757},{"style":494},[1758],{"type":52,"value":1585},{"type":46,"tag":460,"props":1760,"children":1761},{"style":483},[1762],{"type":52,"value":1548},{"type":46,"tag":460,"props":1764,"children":1765},{"style":494},[1766],{"type":52,"value":589},{"type":46,"tag":460,"props":1768,"children":1769},{"style":483},[1770],{"type":52,"value":1771},"id",{"type":46,"tag":460,"props":1773,"children":1774},{"style":571},[1775],{"type":52,"value":1595},{"type":46,"tag":460,"props":1777,"children":1778},{"style":494},[1779],{"type":52,"value":636},{"type":46,"tag":460,"props":1781,"children":1782},{"class":462,"line":733},[1783],{"type":46,"tag":460,"props":1784,"children":1785},{"style":467},[1786],{"type":52,"value":1787},"    \u002F\u002F No 'enabled' condition - loads immediately\n",{"type":46,"tag":460,"props":1789,"children":1790},{"class":462,"line":742},[1791,1796],{"type":46,"tag":460,"props":1792,"children":1793},{"style":494},[1794],{"type":52,"value":1795},"  }",{"type":46,"tag":460,"props":1797,"children":1798},{"style":571},[1799],{"type":52,"value":753},{"type":46,"tag":460,"props":1801,"children":1803},{"class":462,"line":1802},11,[1804],{"type":46,"tag":460,"props":1805,"children":1806},{"emptyLinePlaceholder":515},[1807],{"type":52,"value":518},{"type":46,"tag":460,"props":1809,"children":1811},{"class":462,"line":1810},12,[1812],{"type":46,"tag":460,"props":1813,"children":1814},{"style":467},[1815],{"type":52,"value":1816},"  \u002F\u002F Modal query - loads when needed\n",{"type":46,"tag":460,"props":1818,"children":1820},{"class":462,"line":1819},13,[1821,1825,1829,1833,1837,1842,1846,1850,1854,1858],{"type":46,"tag":460,"props":1822,"children":1823},{"style":530},[1824],{"type":52,"value":1570},{"type":46,"tag":460,"props":1826,"children":1827},{"style":494},[1828],{"type":52,"value":1646},{"type":46,"tag":460,"props":1830,"children":1831},{"style":571},[1832],{"type":52,"value":1538},{"type":46,"tag":460,"props":1834,"children":1835},{"style":494},[1836],{"type":52,"value":579},{"type":46,"tag":460,"props":1838,"children":1839},{"style":483},[1840],{"type":52,"value":1841}," modalProducts",{"type":46,"tag":460,"props":1843,"children":1844},{"style":494},[1845],{"type":52,"value":1664},{"type":46,"tag":460,"props":1847,"children":1848},{"style":494},[1849],{"type":52,"value":1600},{"type":46,"tag":460,"props":1851,"children":1852},{"style":551},[1853],{"type":52,"value":1673},{"type":46,"tag":460,"props":1855,"children":1856},{"style":571},[1857],{"type":52,"value":559},{"type":46,"tag":460,"props":1859,"children":1860},{"style":494},[1861],{"type":52,"value":564},{"type":46,"tag":460,"props":1863,"children":1865},{"class":462,"line":1864},14,[1866,1870,1874,1878,1882,1887,1891,1896,1900,1905,1909,1914,1918,1923,1928,1932,1938,1942,1947,1951,1956,1960,1964],{"type":46,"tag":460,"props":1867,"children":1868},{"style":551},[1869],{"type":52,"value":1689},{"type":46,"tag":460,"props":1871,"children":1872},{"style":494},[1873],{"type":52,"value":579},{"type":46,"tag":460,"props":1875,"children":1876},{"style":494},[1877],{"type":52,"value":1698},{"type":46,"tag":460,"props":1879,"children":1880},{"style":530},[1881],{"type":52,"value":1558},{"type":46,"tag":460,"props":1883,"children":1884},{"style":483},[1885],{"type":52,"value":1886}," sdk",{"type":46,"tag":460,"props":1888,"children":1889},{"style":494},[1890],{"type":52,"value":589},{"type":46,"tag":460,"props":1892,"children":1893},{"style":483},[1894],{"type":52,"value":1895},"admin",{"type":46,"tag":460,"props":1897,"children":1898},{"style":494},[1899],{"type":52,"value":589},{"type":46,"tag":460,"props":1901,"children":1902},{"style":483},[1903],{"type":52,"value":1904},"product",{"type":46,"tag":460,"props":1906,"children":1907},{"style":494},[1908],{"type":52,"value":589},{"type":46,"tag":460,"props":1910,"children":1911},{"style":551},[1912],{"type":52,"value":1913},"list",{"type":46,"tag":460,"props":1915,"children":1916},{"style":571},[1917],{"type":52,"value":559},{"type":46,"tag":460,"props":1919,"children":1920},{"style":494},[1921],{"type":52,"value":1922},"{",{"type":46,"tag":460,"props":1924,"children":1925},{"style":571},[1926],{"type":52,"value":1927}," limit",{"type":46,"tag":460,"props":1929,"children":1930},{"style":494},[1931],{"type":52,"value":579},{"type":46,"tag":460,"props":1933,"children":1935},{"style":1934},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[1936],{"type":52,"value":1937}," 10",{"type":46,"tag":460,"props":1939,"children":1940},{"style":494},[1941],{"type":52,"value":1585},{"type":46,"tag":460,"props":1943,"children":1944},{"style":571},[1945],{"type":52,"value":1946}," offset",{"type":46,"tag":460,"props":1948,"children":1949},{"style":494},[1950],{"type":52,"value":579},{"type":46,"tag":460,"props":1952,"children":1953},{"style":1934},[1954],{"type":52,"value":1955}," 0",{"type":46,"tag":460,"props":1957,"children":1958},{"style":494},[1959],{"type":52,"value":1664},{"type":46,"tag":460,"props":1961,"children":1962},{"style":571},[1963],{"type":52,"value":1721},{"type":46,"tag":460,"props":1965,"children":1966},{"style":494},[1967],{"type":52,"value":636},{"type":46,"tag":460,"props":1969,"children":1971},{"class":462,"line":1970},15,[1972,1976,1980,1984,1988,1993,1997,2001],{"type":46,"tag":460,"props":1973,"children":1974},{"style":571},[1975],{"type":52,"value":1733},{"type":46,"tag":460,"props":1977,"children":1978},{"style":494},[1979],{"type":52,"value":579},{"type":46,"tag":460,"props":1981,"children":1982},{"style":571},[1983],{"type":52,"value":1575},{"type":46,"tag":460,"props":1985,"children":1986},{"style":494},[1987],{"type":52,"value":631},{"type":46,"tag":460,"props":1989,"children":1990},{"style":500},[1991],{"type":52,"value":1992},"products-selection",{"type":46,"tag":460,"props":1994,"children":1995},{"style":494},[1996],{"type":52,"value":631},{"type":46,"tag":460,"props":1998,"children":1999},{"style":571},[2000],{"type":52,"value":1595},{"type":46,"tag":460,"props":2002,"children":2003},{"style":494},[2004],{"type":52,"value":636},{"type":46,"tag":460,"props":2006,"children":2008},{"class":462,"line":2007},16,[2009,2014,2018,2023,2027],{"type":46,"tag":460,"props":2010,"children":2011},{"style":571},[2012],{"type":52,"value":2013},"    enabled",{"type":46,"tag":460,"props":2015,"children":2016},{"style":494},[2017],{"type":52,"value":579},{"type":46,"tag":460,"props":2019,"children":2020},{"style":483},[2021],{"type":52,"value":2022}," modalOpen",{"type":46,"tag":460,"props":2024,"children":2025},{"style":494},[2026],{"type":52,"value":1585},{"type":46,"tag":460,"props":2028,"children":2029},{"style":467},[2030],{"type":52,"value":2031}," \u002F\u002F OK for modal-only data\n",{"type":46,"tag":460,"props":2033,"children":2035},{"class":462,"line":2034},17,[2036,2040],{"type":46,"tag":460,"props":2037,"children":2038},{"style":494},[2039],{"type":52,"value":1795},{"type":46,"tag":460,"props":2041,"children":2042},{"style":571},[2043],{"type":52,"value":753},{"type":46,"tag":460,"props":2045,"children":2047},{"class":462,"line":2046},18,[2048],{"type":46,"tag":460,"props":2049,"children":2050},{"emptyLinePlaceholder":515},[2051],{"type":52,"value":518},{"type":46,"tag":460,"props":2053,"children":2055},{"class":462,"line":2054},19,[2056],{"type":46,"tag":460,"props":2057,"children":2058},{"style":467},[2059],{"type":52,"value":2060},"  \u002F\u002F Mutation with proper invalidation\n",{"type":46,"tag":460,"props":2062,"children":2064},{"class":462,"line":2063},20,[2065,2069,2074,2078,2083,2087],{"type":46,"tag":460,"props":2066,"children":2067},{"style":530},[2068],{"type":52,"value":1570},{"type":46,"tag":460,"props":2070,"children":2071},{"style":483},[2072],{"type":52,"value":2073}," updateProduct",{"type":46,"tag":460,"props":2075,"children":2076},{"style":494},[2077],{"type":52,"value":1600},{"type":46,"tag":460,"props":2079,"children":2080},{"style":551},[2081],{"type":52,"value":2082}," useMutation",{"type":46,"tag":460,"props":2084,"children":2085},{"style":571},[2086],{"type":52,"value":559},{"type":46,"tag":460,"props":2088,"children":2089},{"style":494},[2090],{"type":52,"value":564},{"type":46,"tag":460,"props":2092,"children":2094},{"class":462,"line":2093},21,[2095,2100,2104,2109],{"type":46,"tag":460,"props":2096,"children":2097},{"style":571},[2098],{"type":52,"value":2099},"    mutationFn",{"type":46,"tag":460,"props":2101,"children":2102},{"style":494},[2103],{"type":52,"value":579},{"type":46,"tag":460,"props":2105,"children":2106},{"style":483},[2107],{"type":52,"value":2108}," updateFunction",{"type":46,"tag":460,"props":2110,"children":2111},{"style":494},[2112],{"type":52,"value":636},{"type":46,"tag":460,"props":2114,"children":2116},{"class":462,"line":2115},22,[2117,2122,2126,2130,2134],{"type":46,"tag":460,"props":2118,"children":2119},{"style":551},[2120],{"type":52,"value":2121},"    onSuccess",{"type":46,"tag":460,"props":2123,"children":2124},{"style":494},[2125],{"type":52,"value":579},{"type":46,"tag":460,"props":2127,"children":2128},{"style":494},[2129],{"type":52,"value":1698},{"type":46,"tag":460,"props":2131,"children":2132},{"style":530},[2133],{"type":52,"value":1558},{"type":46,"tag":460,"props":2135,"children":2136},{"style":494},[2137],{"type":52,"value":700},{"type":46,"tag":460,"props":2139,"children":2141},{"class":462,"line":2140},23,[2142],{"type":46,"tag":460,"props":2143,"children":2144},{"style":467},[2145],{"type":52,"value":2146},"      \u002F\u002F Invalidate display data query to refresh UI\n",{"type":46,"tag":460,"props":2148,"children":2149},{"class":462,"line":28},[2150,2155,2159,2164,2168,2172,2177,2181,2185,2189,2193,2197,2201,2205,2209,2213,2218,2222],{"type":46,"tag":460,"props":2151,"children":2152},{"style":483},[2153],{"type":52,"value":2154},"      queryClient",{"type":46,"tag":460,"props":2156,"children":2157},{"style":494},[2158],{"type":52,"value":589},{"type":46,"tag":460,"props":2160,"children":2161},{"style":551},[2162],{"type":52,"value":2163},"invalidateQueries",{"type":46,"tag":460,"props":2165,"children":2166},{"style":571},[2167],{"type":52,"value":559},{"type":46,"tag":460,"props":2169,"children":2170},{"style":494},[2171],{"type":52,"value":1922},{"type":46,"tag":460,"props":2173,"children":2174},{"style":571},[2175],{"type":52,"value":2176}," queryKey",{"type":46,"tag":460,"props":2178,"children":2179},{"style":494},[2180],{"type":52,"value":579},{"type":46,"tag":460,"props":2182,"children":2183},{"style":571},[2184],{"type":52,"value":1575},{"type":46,"tag":460,"props":2186,"children":2187},{"style":494},[2188],{"type":52,"value":631},{"type":46,"tag":460,"props":2190,"children":2191},{"style":500},[2192],{"type":52,"value":1750},{"type":46,"tag":460,"props":2194,"children":2195},{"style":494},[2196],{"type":52,"value":631},{"type":46,"tag":460,"props":2198,"children":2199},{"style":494},[2200],{"type":52,"value":1585},{"type":46,"tag":460,"props":2202,"children":2203},{"style":483},[2204],{"type":52,"value":1548},{"type":46,"tag":460,"props":2206,"children":2207},{"style":494},[2208],{"type":52,"value":589},{"type":46,"tag":460,"props":2210,"children":2211},{"style":483},[2212],{"type":52,"value":1771},{"type":46,"tag":460,"props":2214,"children":2215},{"style":571},[2216],{"type":52,"value":2217},"] ",{"type":46,"tag":460,"props":2219,"children":2220},{"style":494},[2221],{"type":52,"value":748},{"type":46,"tag":460,"props":2223,"children":2224},{"style":571},[2225],{"type":52,"value":753},{"type":46,"tag":460,"props":2227,"children":2229},{"class":462,"line":2228},25,[2230],{"type":46,"tag":460,"props":2231,"children":2232},{"style":467},[2233],{"type":52,"value":2234},"      \u002F\u002F Also invalidate the entity query\n",{"type":46,"tag":460,"props":2236,"children":2238},{"class":462,"line":2237},26,[2239,2243,2247,2251,2255,2259,2263,2267,2271,2275,2279,2283,2287,2291,2295,2299,2303,2307],{"type":46,"tag":460,"props":2240,"children":2241},{"style":483},[2242],{"type":52,"value":2154},{"type":46,"tag":460,"props":2244,"children":2245},{"style":494},[2246],{"type":52,"value":589},{"type":46,"tag":460,"props":2248,"children":2249},{"style":551},[2250],{"type":52,"value":2163},{"type":46,"tag":460,"props":2252,"children":2253},{"style":571},[2254],{"type":52,"value":559},{"type":46,"tag":460,"props":2256,"children":2257},{"style":494},[2258],{"type":52,"value":1922},{"type":46,"tag":460,"props":2260,"children":2261},{"style":571},[2262],{"type":52,"value":2176},{"type":46,"tag":460,"props":2264,"children":2265},{"style":494},[2266],{"type":52,"value":579},{"type":46,"tag":460,"props":2268,"children":2269},{"style":571},[2270],{"type":52,"value":1575},{"type":46,"tag":460,"props":2272,"children":2273},{"style":494},[2274],{"type":52,"value":631},{"type":46,"tag":460,"props":2276,"children":2277},{"style":500},[2278],{"type":52,"value":1904},{"type":46,"tag":460,"props":2280,"children":2281},{"style":494},[2282],{"type":52,"value":631},{"type":46,"tag":460,"props":2284,"children":2285},{"style":494},[2286],{"type":52,"value":1585},{"type":46,"tag":460,"props":2288,"children":2289},{"style":483},[2290],{"type":52,"value":1548},{"type":46,"tag":460,"props":2292,"children":2293},{"style":494},[2294],{"type":52,"value":589},{"type":46,"tag":460,"props":2296,"children":2297},{"style":483},[2298],{"type":52,"value":1771},{"type":46,"tag":460,"props":2300,"children":2301},{"style":571},[2302],{"type":52,"value":2217},{"type":46,"tag":460,"props":2304,"children":2305},{"style":494},[2306],{"type":52,"value":748},{"type":46,"tag":460,"props":2308,"children":2309},{"style":571},[2310],{"type":52,"value":753},{"type":46,"tag":460,"props":2312,"children":2314},{"class":462,"line":2313},27,[2315],{"type":46,"tag":460,"props":2316,"children":2317},{"style":467},[2318],{"type":52,"value":2319},"      \u002F\u002F Note: No need to invalidate modal selection query\n",{"type":46,"tag":460,"props":2321,"children":2323},{"class":462,"line":2322},28,[2324],{"type":46,"tag":460,"props":2325,"children":2326},{"style":494},[2327],{"type":52,"value":2328},"    },\n",{"type":46,"tag":460,"props":2330,"children":2332},{"class":462,"line":2331},29,[2333,2337],{"type":46,"tag":460,"props":2334,"children":2335},{"style":494},[2336],{"type":52,"value":1795},{"type":46,"tag":460,"props":2338,"children":2339},{"style":571},[2340],{"type":52,"value":753},{"type":46,"tag":460,"props":2342,"children":2344},{"class":462,"line":2343},30,[2345],{"type":46,"tag":460,"props":2346,"children":2347},{"emptyLinePlaceholder":515},[2348],{"type":52,"value":518},{"type":46,"tag":460,"props":2350,"children":2352},{"class":462,"line":2351},31,[2353,2358],{"type":46,"tag":460,"props":2354,"children":2355},{"style":477},[2356],{"type":52,"value":2357},"  return",{"type":46,"tag":460,"props":2359,"children":2360},{"style":571},[2361],{"type":52,"value":2362}," (\n",{"type":46,"tag":460,"props":2364,"children":2366},{"class":462,"line":2365},32,[2367,2372,2377],{"type":46,"tag":460,"props":2368,"children":2369},{"style":494},[2370],{"type":52,"value":2371},"    \u003C",{"type":46,"tag":460,"props":2373,"children":2374},{"style":791},[2375],{"type":52,"value":2376},"Container",{"type":46,"tag":460,"props":2378,"children":2379},{"style":494},[2380],{"type":52,"value":2381},">\n",{"type":46,"tag":460,"props":2383,"children":2385},{"class":462,"line":2384},33,[2386,2391,2396],{"type":46,"tag":460,"props":2387,"children":2388},{"style":494},[2389],{"type":52,"value":2390},"      {",{"type":46,"tag":460,"props":2392,"children":2393},{"style":467},[2394],{"type":52,"value":2395},"\u002F* Display uses displayProducts *\u002F",{"type":46,"tag":460,"props":2397,"children":2398},{"style":494},[2399],{"type":52,"value":2400},"}\n",{"type":46,"tag":460,"props":2402,"children":2404},{"class":462,"line":2403},34,[2405,2409,2414,2419,2424,2428,2432,2436,2441,2446,2451,2456,2460,2464,2468,2473,2477,2481,2486,2491,2495,2500,2504],{"type":46,"tag":460,"props":2406,"children":2407},{"style":494},[2408],{"type":52,"value":2390},{"type":46,"tag":460,"props":2410,"children":2411},{"style":483},[2412],{"type":52,"value":2413},"displayProducts",{"type":46,"tag":460,"props":2415,"children":2416},{"style":494},[2417],{"type":52,"value":2418},"?.",{"type":46,"tag":460,"props":2420,"children":2421},{"style":551},[2422],{"type":52,"value":2423},"map",{"type":46,"tag":460,"props":2425,"children":2426},{"style":483},[2427],{"type":52,"value":559},{"type":46,"tag":460,"props":2429,"children":2430},{"style":1545},[2431],{"type":52,"value":55},{"type":46,"tag":460,"props":2433,"children":2434},{"style":530},[2435],{"type":52,"value":1558},{"type":46,"tag":460,"props":2437,"children":2438},{"style":494},[2439],{"type":52,"value":2440}," \u003C",{"type":46,"tag":460,"props":2442,"children":2443},{"style":571},[2444],{"type":52,"value":2445},"div",{"type":46,"tag":460,"props":2447,"children":2448},{"style":530},[2449],{"type":52,"value":2450}," key",{"type":46,"tag":460,"props":2452,"children":2453},{"style":494},[2454],{"type":52,"value":2455},"={",{"type":46,"tag":460,"props":2457,"children":2458},{"style":483},[2459],{"type":52,"value":55},{"type":46,"tag":460,"props":2461,"children":2462},{"style":494},[2463],{"type":52,"value":589},{"type":46,"tag":460,"props":2465,"children":2466},{"style":483},[2467],{"type":52,"value":1771},{"type":46,"tag":460,"props":2469,"children":2470},{"style":494},[2471],{"type":52,"value":2472},"}>{",{"type":46,"tag":460,"props":2474,"children":2475},{"style":483},[2476],{"type":52,"value":55},{"type":46,"tag":460,"props":2478,"children":2479},{"style":494},[2480],{"type":52,"value":589},{"type":46,"tag":460,"props":2482,"children":2483},{"style":483},[2484],{"type":52,"value":2485},"title",{"type":46,"tag":460,"props":2487,"children":2488},{"style":494},[2489],{"type":52,"value":2490},"}\u003C\u002F",{"type":46,"tag":460,"props":2492,"children":2493},{"style":571},[2494],{"type":52,"value":2445},{"type":46,"tag":460,"props":2496,"children":2497},{"style":494},[2498],{"type":52,"value":2499},">",{"type":46,"tag":460,"props":2501,"children":2502},{"style":483},[2503],{"type":52,"value":1721},{"type":46,"tag":460,"props":2505,"children":2506},{"style":494},[2507],{"type":52,"value":2400},{"type":46,"tag":460,"props":2509,"children":2511},{"class":462,"line":2510},35,[2512],{"type":46,"tag":460,"props":2513,"children":2514},{"emptyLinePlaceholder":515},[2515],{"type":52,"value":518},{"type":46,"tag":460,"props":2517,"children":2519},{"class":462,"line":2518},36,[2520,2525,2530,2535,2539,2543,2548,2553,2557,2562],{"type":46,"tag":460,"props":2521,"children":2522},{"style":494},[2523],{"type":52,"value":2524},"      \u003C",{"type":46,"tag":460,"props":2526,"children":2527},{"style":791},[2528],{"type":52,"value":2529},"FocusModal",{"type":46,"tag":460,"props":2531,"children":2532},{"style":530},[2533],{"type":52,"value":2534}," open",{"type":46,"tag":460,"props":2536,"children":2537},{"style":494},[2538],{"type":52,"value":2455},{"type":46,"tag":460,"props":2540,"children":2541},{"style":483},[2542],{"type":52,"value":1580},{"type":46,"tag":460,"props":2544,"children":2545},{"style":494},[2546],{"type":52,"value":2547},"} ",{"type":46,"tag":460,"props":2549,"children":2550},{"style":530},[2551],{"type":52,"value":2552},"onOpenChange",{"type":46,"tag":460,"props":2554,"children":2555},{"style":494},[2556],{"type":52,"value":2455},{"type":46,"tag":460,"props":2558,"children":2559},{"style":483},[2560],{"type":52,"value":2561},"setModalOpen",{"type":46,"tag":460,"props":2563,"children":2564},{"style":494},[2565],{"type":52,"value":2566},"}>\n",{"type":46,"tag":460,"props":2568,"children":2570},{"class":462,"line":2569},37,[2571,2576,2581],{"type":46,"tag":460,"props":2572,"children":2573},{"style":494},[2574],{"type":52,"value":2575},"        {",{"type":46,"tag":460,"props":2577,"children":2578},{"style":467},[2579],{"type":52,"value":2580},"\u002F* Modal uses modalProducts *\u002F",{"type":46,"tag":460,"props":2582,"children":2583},{"style":494},[2584],{"type":52,"value":2400},{"type":46,"tag":460,"props":2586,"children":2588},{"class":462,"line":2587},38,[2589,2594,2598],{"type":46,"tag":460,"props":2590,"children":2591},{"style":494},[2592],{"type":52,"value":2593},"      \u003C\u002F",{"type":46,"tag":460,"props":2595,"children":2596},{"style":791},[2597],{"type":52,"value":2529},{"type":46,"tag":460,"props":2599,"children":2600},{"style":494},[2601],{"type":52,"value":2381},{"type":46,"tag":460,"props":2603,"children":2605},{"class":462,"line":2604},39,[2606,2611,2615],{"type":46,"tag":460,"props":2607,"children":2608},{"style":494},[2609],{"type":52,"value":2610},"    \u003C\u002F",{"type":46,"tag":460,"props":2612,"children":2613},{"style":791},[2614],{"type":52,"value":2376},{"type":46,"tag":460,"props":2616,"children":2617},{"style":494},[2618],{"type":52,"value":2381},{"type":46,"tag":460,"props":2620,"children":2622},{"class":462,"line":2621},40,[2623],{"type":46,"tag":460,"props":2624,"children":2625},{"style":571},[2626],{"type":52,"value":2627},"  )\n",{"type":46,"tag":460,"props":2629,"children":2631},{"class":462,"line":2630},41,[2632],{"type":46,"tag":460,"props":2633,"children":2634},{"style":494},[2635],{"type":52,"value":2400},{"type":46,"tag":460,"props":2637,"children":2639},{"class":462,"line":2638},42,[2640],{"type":46,"tag":460,"props":2641,"children":2642},{"emptyLinePlaceholder":515},[2643],{"type":52,"value":518},{"type":46,"tag":460,"props":2645,"children":2647},{"class":462,"line":2646},43,[2648],{"type":46,"tag":460,"props":2649,"children":2650},{"style":467},[2651],{"type":52,"value":2652},"\u002F\u002F ❌ WRONG - Single query with conditional loading\n",{"type":46,"tag":460,"props":2654,"children":2656},{"class":462,"line":2655},44,[2657,2661,2666,2670,2674,2678,2682,2686,2690,2694],{"type":46,"tag":460,"props":2658,"children":2659},{"style":530},[2660],{"type":52,"value":1519},{"type":46,"tag":460,"props":2662,"children":2663},{"style":483},[2664],{"type":52,"value":2665}," BrokenWidget ",{"type":46,"tag":460,"props":2667,"children":2668},{"style":494},[2669],{"type":52,"value":543},{"type":46,"tag":460,"props":2671,"children":2672},{"style":494},[2673],{"type":52,"value":1533},{"type":46,"tag":460,"props":2675,"children":2676},{"style":571},[2677],{"type":52,"value":1538},{"type":46,"tag":460,"props":2679,"children":2680},{"style":494},[2681],{"type":52,"value":579},{"type":46,"tag":460,"props":2683,"children":2684},{"style":1545},[2685],{"type":52,"value":1548},{"type":46,"tag":460,"props":2687,"children":2688},{"style":494},[2689],{"type":52,"value":1553},{"type":46,"tag":460,"props":2691,"children":2692},{"style":530},[2693],{"type":52,"value":1558},{"type":46,"tag":460,"props":2695,"children":2696},{"style":494},[2697],{"type":52,"value":700},{"type":46,"tag":460,"props":2699,"children":2701},{"class":462,"line":2700},45,[2702,2706,2710,2714,2718,2722,2726,2730,2734,2738,2742],{"type":46,"tag":460,"props":2703,"children":2704},{"style":530},[2705],{"type":52,"value":1570},{"type":46,"tag":460,"props":2707,"children":2708},{"style":494},[2709],{"type":52,"value":1575},{"type":46,"tag":460,"props":2711,"children":2712},{"style":483},[2713],{"type":52,"value":1580},{"type":46,"tag":460,"props":2715,"children":2716},{"style":494},[2717],{"type":52,"value":1585},{"type":46,"tag":460,"props":2719,"children":2720},{"style":483},[2721],{"type":52,"value":1590},{"type":46,"tag":460,"props":2723,"children":2724},{"style":494},[2725],{"type":52,"value":1595},{"type":46,"tag":460,"props":2727,"children":2728},{"style":494},[2729],{"type":52,"value":1600},{"type":46,"tag":460,"props":2731,"children":2732},{"style":551},[2733],{"type":52,"value":1605},{"type":46,"tag":460,"props":2735,"children":2736},{"style":571},[2737],{"type":52,"value":559},{"type":46,"tag":460,"props":2739,"children":2740},{"style":1612},[2741],{"type":52,"value":1615},{"type":46,"tag":460,"props":2743,"children":2744},{"style":571},[2745],{"type":52,"value":753},{"type":46,"tag":460,"props":2747,"children":2749},{"class":462,"line":2748},46,[2750],{"type":46,"tag":460,"props":2751,"children":2752},{"emptyLinePlaceholder":515},[2753],{"type":52,"value":518},{"type":46,"tag":460,"props":2755,"children":2757},{"class":462,"line":2756},47,[2758,2762,2766,2770,2774,2778,2782,2786],{"type":46,"tag":460,"props":2759,"children":2760},{"style":530},[2761],{"type":52,"value":1570},{"type":46,"tag":460,"props":2763,"children":2764},{"style":494},[2765],{"type":52,"value":1646},{"type":46,"tag":460,"props":2767,"children":2768},{"style":483},[2769],{"type":52,"value":1538},{"type":46,"tag":460,"props":2771,"children":2772},{"style":494},[2773],{"type":52,"value":1664},{"type":46,"tag":460,"props":2775,"children":2776},{"style":494},[2777],{"type":52,"value":1600},{"type":46,"tag":460,"props":2779,"children":2780},{"style":551},[2781],{"type":52,"value":1673},{"type":46,"tag":460,"props":2783,"children":2784},{"style":571},[2785],{"type":52,"value":559},{"type":46,"tag":460,"props":2787,"children":2788},{"style":494},[2789],{"type":52,"value":564},{"type":46,"tag":460,"props":2791,"children":2793},{"class":462,"line":2792},48,[2794,2798,2802,2806,2810,2814,2818,2822,2826,2830,2834,2838,2843],{"type":46,"tag":460,"props":2795,"children":2796},{"style":551},[2797],{"type":52,"value":1689},{"type":46,"tag":460,"props":2799,"children":2800},{"style":494},[2801],{"type":52,"value":579},{"type":46,"tag":460,"props":2803,"children":2804},{"style":494},[2805],{"type":52,"value":1698},{"type":46,"tag":460,"props":2807,"children":2808},{"style":530},[2809],{"type":52,"value":1558},{"type":46,"tag":460,"props":2811,"children":2812},{"style":483},[2813],{"type":52,"value":1886},{"type":46,"tag":460,"props":2815,"children":2816},{"style":494},[2817],{"type":52,"value":589},{"type":46,"tag":460,"props":2819,"children":2820},{"style":483},[2821],{"type":52,"value":1895},{"type":46,"tag":460,"props":2823,"children":2824},{"style":494},[2825],{"type":52,"value":589},{"type":46,"tag":460,"props":2827,"children":2828},{"style":483},[2829],{"type":52,"value":1904},{"type":46,"tag":460,"props":2831,"children":2832},{"style":494},[2833],{"type":52,"value":589},{"type":46,"tag":460,"props":2835,"children":2836},{"style":551},[2837],{"type":52,"value":1913},{"type":46,"tag":460,"props":2839,"children":2840},{"style":571},[2841],{"type":52,"value":2842},"()",{"type":46,"tag":460,"props":2844,"children":2845},{"style":494},[2846],{"type":52,"value":636},{"type":46,"tag":460,"props":2848,"children":2850},{"class":462,"line":2849},49,[2851,2855,2859,2863,2867],{"type":46,"tag":460,"props":2852,"children":2853},{"style":571},[2854],{"type":52,"value":2013},{"type":46,"tag":460,"props":2856,"children":2857},{"style":494},[2858],{"type":52,"value":579},{"type":46,"tag":460,"props":2860,"children":2861},{"style":483},[2862],{"type":52,"value":2022},{"type":46,"tag":460,"props":2864,"children":2865},{"style":494},[2866],{"type":52,"value":1585},{"type":46,"tag":460,"props":2868,"children":2869},{"style":467},[2870],{"type":52,"value":2871}," \u002F\u002F ❌ Display breaks on page refresh!\n",{"type":46,"tag":460,"props":2873,"children":2875},{"class":462,"line":2874},50,[2876,2880],{"type":46,"tag":460,"props":2877,"children":2878},{"style":494},[2879],{"type":52,"value":1795},{"type":46,"tag":460,"props":2881,"children":2882},{"style":571},[2883],{"type":52,"value":753},{"type":46,"tag":460,"props":2885,"children":2887},{"class":462,"line":2886},51,[2888],{"type":46,"tag":460,"props":2889,"children":2890},{"emptyLinePlaceholder":515},[2891],{"type":52,"value":518},{"type":46,"tag":460,"props":2893,"children":2895},{"class":462,"line":2894},52,[2896],{"type":46,"tag":460,"props":2897,"children":2898},{"style":467},[2899],{"type":52,"value":2900},"  \u002F\u002F Trying to display from modal query\n",{"type":46,"tag":460,"props":2902,"children":2904},{"class":462,"line":2903},53,[2905,2909,2914,2918,2922,2926,2931,2935,2940,2944,2949,2953,2958,2962,2966,2970,2974,2979],{"type":46,"tag":460,"props":2906,"children":2907},{"style":530},[2908],{"type":52,"value":1570},{"type":46,"tag":460,"props":2910,"children":2911},{"style":483},[2912],{"type":52,"value":2913}," displayItems",{"type":46,"tag":460,"props":2915,"children":2916},{"style":494},[2917],{"type":52,"value":1600},{"type":46,"tag":460,"props":2919,"children":2920},{"style":483},[2921],{"type":52,"value":1538},{"type":46,"tag":460,"props":2923,"children":2924},{"style":494},[2925],{"type":52,"value":2418},{"type":46,"tag":460,"props":2927,"children":2928},{"style":551},[2929],{"type":52,"value":2930},"filter",{"type":46,"tag":460,"props":2932,"children":2933},{"style":571},[2934],{"type":52,"value":559},{"type":46,"tag":460,"props":2936,"children":2937},{"style":1545},[2938],{"type":52,"value":2939},"item",{"type":46,"tag":460,"props":2941,"children":2942},{"style":530},[2943],{"type":52,"value":1558},{"type":46,"tag":460,"props":2945,"children":2946},{"style":483},[2947],{"type":52,"value":2948}," ids",{"type":46,"tag":460,"props":2950,"children":2951},{"style":494},[2952],{"type":52,"value":589},{"type":46,"tag":460,"props":2954,"children":2955},{"style":551},[2956],{"type":52,"value":2957},"includes",{"type":46,"tag":460,"props":2959,"children":2960},{"style":571},[2961],{"type":52,"value":559},{"type":46,"tag":460,"props":2963,"children":2964},{"style":483},[2965],{"type":52,"value":2939},{"type":46,"tag":460,"props":2967,"children":2968},{"style":494},[2969],{"type":52,"value":589},{"type":46,"tag":460,"props":2971,"children":2972},{"style":483},[2973],{"type":52,"value":1771},{"type":46,"tag":460,"props":2975,"children":2976},{"style":571},[2977],{"type":52,"value":2978},")) ",{"type":46,"tag":460,"props":2980,"children":2981},{"style":467},[2982],{"type":52,"value":2983},"\u002F\u002F No data until modal opens\n",{"type":46,"tag":460,"props":2985,"children":2987},{"class":462,"line":2986},54,[2988],{"type":46,"tag":460,"props":2989,"children":2990},{"emptyLinePlaceholder":515},[2991],{"type":52,"value":518},{"type":46,"tag":460,"props":2993,"children":2995},{"class":462,"line":2994},55,[2996,3000,3004,3008,3013,3018,3022,3026,3030,3035,3039,3043,3047,3051],{"type":46,"tag":460,"props":2997,"children":2998},{"style":477},[2999],{"type":52,"value":2357},{"type":46,"tag":460,"props":3001,"children":3002},{"style":494},[3003],{"type":52,"value":2440},{"type":46,"tag":460,"props":3005,"children":3006},{"style":571},[3007],{"type":52,"value":2445},{"type":46,"tag":460,"props":3009,"children":3010},{"style":494},[3011],{"type":52,"value":3012},">{",{"type":46,"tag":460,"props":3014,"children":3015},{"style":483},[3016],{"type":52,"value":3017},"displayItems",{"type":46,"tag":460,"props":3019,"children":3020},{"style":494},[3021],{"type":52,"value":2418},{"type":46,"tag":460,"props":3023,"children":3024},{"style":551},[3025],{"type":52,"value":2423},{"type":46,"tag":460,"props":3027,"children":3028},{"style":483},[3029],{"type":52,"value":559},{"type":46,"tag":460,"props":3031,"children":3032},{"style":494},[3033],{"type":52,"value":3034},"...",{"type":46,"tag":460,"props":3036,"children":3037},{"style":483},[3038],{"type":52,"value":1721},{"type":46,"tag":460,"props":3040,"children":3041},{"style":494},[3042],{"type":52,"value":2490},{"type":46,"tag":460,"props":3044,"children":3045},{"style":571},[3046],{"type":52,"value":2445},{"type":46,"tag":460,"props":3048,"children":3049},{"style":494},[3050],{"type":52,"value":2499},{"type":46,"tag":460,"props":3052,"children":3053},{"style":467},[3054],{"type":52,"value":3055}," \u002F\u002F Empty on mount!\n",{"type":46,"tag":460,"props":3057,"children":3059},{"class":462,"line":3058},56,[3060],{"type":46,"tag":460,"props":3061,"children":3062},{"style":494},[3063],{"type":52,"value":2400},{"type":46,"tag":55,"props":3065,"children":3066},{},[3067],{"type":46,"tag":64,"props":3068,"children":3069},{},[3070],{"type":52,"value":3071},"Why this matters:",{"type":46,"tag":87,"props":3073,"children":3074},{},[3075,3080,3085],{"type":46,"tag":91,"props":3076,"children":3077},{},[3078],{"type":52,"value":3079},"On page refresh, modal is closed, so conditional query doesn't run",{"type":46,"tag":91,"props":3081,"children":3082},{},[3083],{"type":52,"value":3084},"User sees empty state instead of their data",{"type":46,"tag":91,"props":3086,"children":3087},{},[3088],{"type":52,"value":3089},"Display depends on modal interaction (broken UX)",{"type":46,"tag":72,"props":3091,"children":3093},{"id":3092},"common-mistakes-checklist",[3094],{"type":52,"value":3095},"Common Mistakes Checklist",{"type":46,"tag":55,"props":3097,"children":3098},{},[3099],{"type":52,"value":3100},"Before implementing, verify you're NOT doing these:",{"type":46,"tag":55,"props":3102,"children":3103},{},[3104],{"type":46,"tag":64,"props":3105,"children":3106},{},[3107],{"type":52,"value":3108},"Data Loading:",{"type":46,"tag":87,"props":3110,"children":3113},{"className":3111},[3112],"contains-task-list",[3114,3126,3135,3144,3153,3162,3171],{"type":46,"tag":91,"props":3115,"children":3118},{"className":3116},[3117],"task-list-item",[3119,3124],{"type":46,"tag":3120,"props":3121,"children":3123},"input",{"disabled":515,"type":3122},"checkbox",[],{"type":52,"value":3125}," Using regular fetch() instead of Medusa JS SDK (causes missing auth header errors)",{"type":46,"tag":91,"props":3127,"children":3129},{"className":3128},[3117],[3130,3133],{"type":46,"tag":3120,"props":3131,"children":3132},{"disabled":515,"type":3122},[],{"type":52,"value":3134}," Not using existing SDK methods for built-in endpoints (e.g., using sdk.client.fetch(\"\u002Fadmin\u002Fproducts\") instead of sdk.admin.product.list())",{"type":46,"tag":91,"props":3136,"children":3138},{"className":3137},[3117],[3139,3142],{"type":46,"tag":3120,"props":3140,"children":3141},{"disabled":515,"type":3122},[],{"type":52,"value":3143}," Loading display data conditionally based on modal\u002FUI state",{"type":46,"tag":91,"props":3145,"children":3147},{"className":3146},[3117],[3148,3151],{"type":46,"tag":3120,"props":3149,"children":3150},{"disabled":515,"type":3122},[],{"type":52,"value":3152}," Using a single query for both display and modal",{"type":46,"tag":91,"props":3154,"children":3156},{"className":3155},[3117],[3157,3160],{"type":46,"tag":3120,"props":3158,"children":3159},{"disabled":515,"type":3122},[],{"type":52,"value":3161}," Forgetting to invalidate display queries after mutations",{"type":46,"tag":91,"props":3163,"children":3165},{"className":3164},[3117],[3166,3169],{"type":46,"tag":3120,"props":3167,"children":3168},{"disabled":515,"type":3122},[],{"type":52,"value":3170}," Not handling loading states (showing empty instead of spinner)",{"type":46,"tag":91,"props":3172,"children":3174},{"className":3173},[3117],[3175,3178],{"type":46,"tag":3120,"props":3176,"children":3177},{"disabled":515,"type":3122},[],{"type":52,"value":3179}," pnpm users: Not installing @tanstack\u002Freact-query before coding",{"type":46,"tag":55,"props":3181,"children":3182},{},[3183],{"type":46,"tag":64,"props":3184,"children":3185},{},[3186],{"type":52,"value":3187},"Design System:",{"type":46,"tag":87,"props":3189,"children":3191},{"className":3190},[3112],[3192,3201,3210,3219],{"type":46,"tag":91,"props":3193,"children":3195},{"className":3194},[3117],[3196,3199],{"type":46,"tag":3120,"props":3197,"children":3198},{"disabled":515,"type":3122},[],{"type":52,"value":3200}," Using hardcoded colors instead of semantic classes",{"type":46,"tag":91,"props":3202,"children":3204},{"className":3203},[3117],[3205,3208],{"type":46,"tag":3120,"props":3206,"children":3207},{"disabled":515,"type":3122},[],{"type":52,"value":3209}," Forgetting size=\"small\" on buttons in widgets",{"type":46,"tag":91,"props":3211,"children":3213},{"className":3212},[3117],[3214,3217],{"type":46,"tag":3120,"props":3215,"children":3216},{"disabled":515,"type":3122},[],{"type":52,"value":3218}," Not using px-6 py-4 for section padding",{"type":46,"tag":91,"props":3220,"children":3222},{"className":3221},[3117],[3223,3226],{"type":46,"tag":3120,"props":3224,"children":3225},{"disabled":515,"type":3122},[],{"type":52,"value":3227}," Using raw HTML elements instead of Medusa UI components",{"type":46,"tag":55,"props":3229,"children":3230},{},[3231],{"type":46,"tag":64,"props":3232,"children":3233},{},[3234],{"type":52,"value":3235},"Data Display:",{"type":46,"tag":87,"props":3237,"children":3239},{"className":3238},[3112],[3240],{"type":46,"tag":91,"props":3241,"children":3243},{"className":3242},[3117],[3244,3247,3249,3253],{"type":46,"tag":3120,"props":3245,"children":3246},{"disabled":515,"type":3122},[],{"type":52,"value":3248}," ",{"type":46,"tag":64,"props":3250,"children":3251},{},[3252],{"type":52,"value":984},{"type":52,"value":3254},": Dividing prices by 100 when displaying (prices are stored as-is: $49.99 = 49.99, NOT in cents)",{"type":46,"tag":55,"props":3256,"children":3257},{},[3258],{"type":46,"tag":64,"props":3259,"children":3260},{},[3261],{"type":52,"value":3262},"Typography:",{"type":46,"tag":87,"props":3264,"children":3266},{"className":3265},[3112],[3267,3276,3285,3294],{"type":46,"tag":91,"props":3268,"children":3270},{"className":3269},[3117],[3271,3274],{"type":46,"tag":3120,"props":3272,"children":3273},{"disabled":515,"type":3122},[],{"type":52,"value":3275}," Using plain span\u002Fp tags instead of Text component",{"type":46,"tag":91,"props":3277,"children":3279},{"className":3278},[3117],[3280,3283],{"type":46,"tag":3120,"props":3281,"children":3282},{"disabled":515,"type":3122},[],{"type":52,"value":3284}," Not using weight=\"plus\" for labels",{"type":46,"tag":91,"props":3286,"children":3288},{"className":3287},[3117],[3289,3292],{"type":46,"tag":3120,"props":3290,"children":3291},{"disabled":515,"type":3122},[],{"type":52,"value":3293}," Not using text-ui-fg-subtle for descriptions",{"type":46,"tag":91,"props":3295,"children":3297},{"className":3296},[3117],[3298,3301],{"type":46,"tag":3120,"props":3299,"children":3300},{"disabled":515,"type":3122},[],{"type":52,"value":3302}," Using Heading in small widget sections",{"type":46,"tag":55,"props":3304,"children":3305},{},[3306],{"type":46,"tag":64,"props":3307,"children":3308},{},[3309],{"type":52,"value":3310},"Forms:",{"type":46,"tag":87,"props":3312,"children":3314},{"className":3313},[3112],[3315,3324,3333,3342],{"type":46,"tag":91,"props":3316,"children":3318},{"className":3317},[3117],[3319,3322],{"type":46,"tag":3120,"props":3320,"children":3321},{"disabled":515,"type":3122},[],{"type":52,"value":3323}," Using Drawer for creating (should use FocusModal)",{"type":46,"tag":91,"props":3325,"children":3327},{"className":3326},[3117],[3328,3331],{"type":46,"tag":3120,"props":3329,"children":3330},{"disabled":515,"type":3122},[],{"type":52,"value":3332}," Using FocusModal for editing (should use Drawer)",{"type":46,"tag":91,"props":3334,"children":3336},{"className":3335},[3117],[3337,3340],{"type":46,"tag":3120,"props":3338,"children":3339},{"disabled":515,"type":3122},[],{"type":52,"value":3341}," Not disabling buttons during mutations",{"type":46,"tag":91,"props":3343,"children":3345},{"className":3344},[3117],[3346,3349],{"type":46,"tag":3120,"props":3347,"children":3348},{"disabled":515,"type":3122},[],{"type":52,"value":3350}," Not showing loading state on submit",{"type":46,"tag":55,"props":3352,"children":3353},{},[3354],{"type":46,"tag":64,"props":3355,"children":3356},{},[3357],{"type":52,"value":3358},"Selection:",{"type":46,"tag":87,"props":3360,"children":3362},{"className":3361},[3112],[3363,3372,3381],{"type":46,"tag":91,"props":3364,"children":3366},{"className":3365},[3117],[3367,3370],{"type":46,"tag":3120,"props":3368,"children":3369},{"disabled":515,"type":3122},[],{"type":52,"value":3371}," Using DataTable for \u003C10 items (overkill)",{"type":46,"tag":91,"props":3373,"children":3375},{"className":3374},[3117],[3376,3379],{"type":46,"tag":3120,"props":3377,"children":3378},{"disabled":515,"type":3122},[],{"type":52,"value":3380}," Using Select for >10 items (poor UX)",{"type":46,"tag":91,"props":3382,"children":3384},{"className":3383},[3117],[3385,3388],{"type":46,"tag":3120,"props":3386,"children":3387},{"disabled":515,"type":3122},[],{"type":52,"value":3389}," Not configuring search in useDataTable (causes error)",{"type":46,"tag":72,"props":3391,"children":3393},{"id":3392},"reference-files-available",[3394],{"type":52,"value":3395},"Reference Files Available",{"type":46,"tag":55,"props":3397,"children":3398},{},[3399],{"type":52,"value":3400},"Load these for detailed patterns:",{"type":46,"tag":449,"props":3402,"children":3406},{"className":3403,"code":3405,"language":52},[3404],"language-text","references\u002Fdata-loading.md       - useQuery\u002FuseMutation patterns, cache invalidation\nreferences\u002Fforms.md              - FocusModal\u002FDrawer patterns, validation\nreferences\u002Ftable-selection.md    - Complete DataTable selection pattern\nreferences\u002Fdisplay-patterns.md   - Lists, tables, cards for entities\nreferences\u002Ftypography.md         - Text component patterns\nreferences\u002Fnavigation.md         - Link, useNavigate, useParams patterns\n",[3407],{"type":46,"tag":185,"props":3408,"children":3409},{"__ignoreMap":454},[3410],{"type":52,"value":3405},{"type":46,"tag":55,"props":3412,"children":3413},{},[3414],{"type":52,"value":3415},"Each reference contains:",{"type":46,"tag":87,"props":3417,"children":3418},{},[3419,3424,3429,3434],{"type":46,"tag":91,"props":3420,"children":3421},{},[3422],{"type":52,"value":3423},"Step-by-step implementation guides",{"type":46,"tag":91,"props":3425,"children":3426},{},[3427],{"type":52,"value":3428},"Correct vs incorrect code examples",{"type":46,"tag":91,"props":3430,"children":3431},{},[3432],{"type":52,"value":3433},"Common mistakes and solutions",{"type":46,"tag":91,"props":3435,"children":3436},{},[3437],{"type":52,"value":3438},"Complete working examples",{"type":46,"tag":72,"props":3440,"children":3442},{"id":3441},"integration-with-backend",[3443],{"type":52,"value":3444},"Integration with Backend",{"type":46,"tag":55,"props":3446,"children":3447},{},[3448],{"type":46,"tag":64,"props":3449,"children":3450},{},[3451],{"type":52,"value":3452},"⚠️ CRITICAL: ALWAYS use the Medusa JS SDK for ALL API requests - NEVER use regular fetch()",{"type":46,"tag":55,"props":3454,"children":3455},{},[3456],{"type":52,"value":3457},"Admin UI connects to backend API routes using the SDK:",{"type":46,"tag":449,"props":3459,"children":3461},{"className":451,"code":3460,"language":453,"meta":454,"style":454},"import { sdk } from \"[LOCATE SDK INSTANCE IN PROJECT]\"\n\n\u002F\u002F ✅ CORRECT - Built-in endpoint: Use existing SDK method\nconst { data: product } = useQuery({\n  queryKey: [\"product\", productId],\n  queryFn: () => sdk.admin.product.retrieve(productId),\n})\n\n\u002F\u002F ✅ CORRECT - Custom endpoint: Use sdk.client.fetch()\nconst { data: reviews } = useQuery({\n  queryKey: [\"reviews\", product.id],\n  queryFn: () => sdk.client.fetch(`\u002Fadmin\u002Fproducts\u002F${product.id}\u002Freviews`),\n})\n\n\u002F\u002F ❌ WRONG - Using regular fetch\nconst { data } = useQuery({\n  queryKey: [\"reviews\", product.id],\n  queryFn: () => fetch(`http:\u002F\u002Flocalhost:9000\u002Fadmin\u002Fproducts\u002F${product.id}\u002Freviews`),\n  \u002F\u002F ❌ Error: Missing Authorization header!\n})\n\n\u002F\u002F Mutation to custom backend route\nconst createReview = useMutation({\n  mutationFn: (data) => sdk.client.fetch(\"\u002Fadmin\u002Freviews\", {\n    method: \"POST\",\n    body: data\n  }),\n  onSuccess: () => {\n    queryClient.invalidateQueries({ queryKey: [\"reviews\", product.id] })\n    toast.success(\"Review created\")\n  },\n})\n",[3462],{"type":46,"tag":185,"props":3463,"children":3464},{"__ignoreMap":454},[3465,3502,3509,3517,3561,3602,3660,3671,3678,3686,3730,3779,3872,3883,3890,3898,3934,3981,4054,4062,4073,4080,4088,4116,4191,4220,4237,4252,4276,4352,4390,4397],{"type":46,"tag":460,"props":3466,"children":3467},{"class":462,"line":463},[3468,3472,3476,3480,3484,3489,3493,3498],{"type":46,"tag":460,"props":3469,"children":3470},{"style":477},[3471],{"type":52,"value":480},{"type":46,"tag":460,"props":3473,"children":3474},{"style":494},[3475],{"type":52,"value":1646},{"type":46,"tag":460,"props":3477,"children":3478},{"style":483},[3479],{"type":52,"value":1886},{"type":46,"tag":460,"props":3481,"children":3482},{"style":494},[3483],{"type":52,"value":1664},{"type":46,"tag":460,"props":3485,"children":3486},{"style":477},[3487],{"type":52,"value":3488}," from",{"type":46,"tag":460,"props":3490,"children":3491},{"style":494},[3492],{"type":52,"value":497},{"type":46,"tag":460,"props":3494,"children":3495},{"style":500},[3496],{"type":52,"value":3497},"[LOCATE SDK INSTANCE IN PROJECT]",{"type":46,"tag":460,"props":3499,"children":3500},{"style":494},[3501],{"type":52,"value":508},{"type":46,"tag":460,"props":3503,"children":3504},{"class":462,"line":473},[3505],{"type":46,"tag":460,"props":3506,"children":3507},{"emptyLinePlaceholder":515},[3508],{"type":52,"value":518},{"type":46,"tag":460,"props":3510,"children":3511},{"class":462,"line":511},[3512],{"type":46,"tag":460,"props":3513,"children":3514},{"style":467},[3515],{"type":52,"value":3516},"\u002F\u002F ✅ CORRECT - Built-in endpoint: Use existing SDK method\n",{"type":46,"tag":460,"props":3518,"children":3519},{"class":462,"line":521},[3520,3524,3528,3532,3536,3541,3545,3549,3553,3557],{"type":46,"tag":460,"props":3521,"children":3522},{"style":530},[3523],{"type":52,"value":1519},{"type":46,"tag":460,"props":3525,"children":3526},{"style":494},[3527],{"type":52,"value":1646},{"type":46,"tag":460,"props":3529,"children":3530},{"style":571},[3531],{"type":52,"value":1538},{"type":46,"tag":460,"props":3533,"children":3534},{"style":494},[3535],{"type":52,"value":579},{"type":46,"tag":460,"props":3537,"children":3538},{"style":483},[3539],{"type":52,"value":3540}," product ",{"type":46,"tag":460,"props":3542,"children":3543},{"style":494},[3544],{"type":52,"value":748},{"type":46,"tag":460,"props":3546,"children":3547},{"style":494},[3548],{"type":52,"value":1600},{"type":46,"tag":460,"props":3550,"children":3551},{"style":551},[3552],{"type":52,"value":1673},{"type":46,"tag":460,"props":3554,"children":3555},{"style":483},[3556],{"type":52,"value":559},{"type":46,"tag":460,"props":3558,"children":3559},{"style":494},[3560],{"type":52,"value":564},{"type":46,"tag":460,"props":3562,"children":3563},{"class":462,"line":567},[3564,3569,3573,3577,3581,3585,3589,3593,3598],{"type":46,"tag":460,"props":3565,"children":3566},{"style":571},[3567],{"type":52,"value":3568},"  queryKey",{"type":46,"tag":460,"props":3570,"children":3571},{"style":494},[3572],{"type":52,"value":579},{"type":46,"tag":460,"props":3574,"children":3575},{"style":483},[3576],{"type":52,"value":1575},{"type":46,"tag":460,"props":3578,"children":3579},{"style":494},[3580],{"type":52,"value":631},{"type":46,"tag":460,"props":3582,"children":3583},{"style":500},[3584],{"type":52,"value":1904},{"type":46,"tag":460,"props":3586,"children":3587},{"style":494},[3588],{"type":52,"value":631},{"type":46,"tag":460,"props":3590,"children":3591},{"style":494},[3592],{"type":52,"value":1585},{"type":46,"tag":460,"props":3594,"children":3595},{"style":483},[3596],{"type":52,"value":3597}," productId]",{"type":46,"tag":460,"props":3599,"children":3600},{"style":494},[3601],{"type":52,"value":636},{"type":46,"tag":460,"props":3603,"children":3604},{"class":462,"line":639},[3605,3610,3614,3618,3622,3626,3630,3634,3638,3642,3646,3651,3656],{"type":46,"tag":460,"props":3606,"children":3607},{"style":551},[3608],{"type":52,"value":3609},"  queryFn",{"type":46,"tag":460,"props":3611,"children":3612},{"style":494},[3613],{"type":52,"value":579},{"type":46,"tag":460,"props":3615,"children":3616},{"style":494},[3617],{"type":52,"value":1698},{"type":46,"tag":460,"props":3619,"children":3620},{"style":530},[3621],{"type":52,"value":1558},{"type":46,"tag":460,"props":3623,"children":3624},{"style":483},[3625],{"type":52,"value":1886},{"type":46,"tag":460,"props":3627,"children":3628},{"style":494},[3629],{"type":52,"value":589},{"type":46,"tag":460,"props":3631,"children":3632},{"style":483},[3633],{"type":52,"value":1895},{"type":46,"tag":460,"props":3635,"children":3636},{"style":494},[3637],{"type":52,"value":589},{"type":46,"tag":460,"props":3639,"children":3640},{"style":483},[3641],{"type":52,"value":1904},{"type":46,"tag":460,"props":3643,"children":3644},{"style":494},[3645],{"type":52,"value":589},{"type":46,"tag":460,"props":3647,"children":3648},{"style":551},[3649],{"type":52,"value":3650},"retrieve",{"type":46,"tag":460,"props":3652,"children":3653},{"style":483},[3654],{"type":52,"value":3655},"(productId)",{"type":46,"tag":460,"props":3657,"children":3658},{"style":494},[3659],{"type":52,"value":636},{"type":46,"tag":460,"props":3661,"children":3662},{"class":462,"line":685},[3663,3667],{"type":46,"tag":460,"props":3664,"children":3665},{"style":494},[3666],{"type":52,"value":748},{"type":46,"tag":460,"props":3668,"children":3669},{"style":483},[3670],{"type":52,"value":753},{"type":46,"tag":460,"props":3672,"children":3673},{"class":462,"line":703},[3674],{"type":46,"tag":460,"props":3675,"children":3676},{"emptyLinePlaceholder":515},[3677],{"type":52,"value":518},{"type":46,"tag":460,"props":3679,"children":3680},{"class":462,"line":733},[3681],{"type":46,"tag":460,"props":3682,"children":3683},{"style":467},[3684],{"type":52,"value":3685},"\u002F\u002F ✅ CORRECT - Custom endpoint: Use sdk.client.fetch()\n",{"type":46,"tag":460,"props":3687,"children":3688},{"class":462,"line":742},[3689,3693,3697,3701,3705,3710,3714,3718,3722,3726],{"type":46,"tag":460,"props":3690,"children":3691},{"style":530},[3692],{"type":52,"value":1519},{"type":46,"tag":460,"props":3694,"children":3695},{"style":494},[3696],{"type":52,"value":1646},{"type":46,"tag":460,"props":3698,"children":3699},{"style":571},[3700],{"type":52,"value":1538},{"type":46,"tag":460,"props":3702,"children":3703},{"style":494},[3704],{"type":52,"value":579},{"type":46,"tag":460,"props":3706,"children":3707},{"style":483},[3708],{"type":52,"value":3709}," reviews ",{"type":46,"tag":460,"props":3711,"children":3712},{"style":494},[3713],{"type":52,"value":748},{"type":46,"tag":460,"props":3715,"children":3716},{"style":494},[3717],{"type":52,"value":1600},{"type":46,"tag":460,"props":3719,"children":3720},{"style":551},[3721],{"type":52,"value":1673},{"type":46,"tag":460,"props":3723,"children":3724},{"style":483},[3725],{"type":52,"value":559},{"type":46,"tag":460,"props":3727,"children":3728},{"style":494},[3729],{"type":52,"value":564},{"type":46,"tag":460,"props":3731,"children":3732},{"class":462,"line":1802},[3733,3737,3741,3745,3749,3754,3758,3762,3766,3770,3775],{"type":46,"tag":460,"props":3734,"children":3735},{"style":571},[3736],{"type":52,"value":3568},{"type":46,"tag":460,"props":3738,"children":3739},{"style":494},[3740],{"type":52,"value":579},{"type":46,"tag":460,"props":3742,"children":3743},{"style":483},[3744],{"type":52,"value":1575},{"type":46,"tag":460,"props":3746,"children":3747},{"style":494},[3748],{"type":52,"value":631},{"type":46,"tag":460,"props":3750,"children":3751},{"style":500},[3752],{"type":52,"value":3753},"reviews",{"type":46,"tag":460,"props":3755,"children":3756},{"style":494},[3757],{"type":52,"value":631},{"type":46,"tag":460,"props":3759,"children":3760},{"style":494},[3761],{"type":52,"value":1585},{"type":46,"tag":460,"props":3763,"children":3764},{"style":483},[3765],{"type":52,"value":1548},{"type":46,"tag":460,"props":3767,"children":3768},{"style":494},[3769],{"type":52,"value":589},{"type":46,"tag":460,"props":3771,"children":3772},{"style":483},[3773],{"type":52,"value":3774},"id]",{"type":46,"tag":460,"props":3776,"children":3777},{"style":494},[3778],{"type":52,"value":636},{"type":46,"tag":460,"props":3780,"children":3781},{"class":462,"line":1810},[3782,3786,3790,3794,3798,3802,3806,3811,3815,3820,3824,3829,3834,3839,3843,3847,3851,3855,3860,3864,3868],{"type":46,"tag":460,"props":3783,"children":3784},{"style":551},[3785],{"type":52,"value":3609},{"type":46,"tag":460,"props":3787,"children":3788},{"style":494},[3789],{"type":52,"value":579},{"type":46,"tag":460,"props":3791,"children":3792},{"style":494},[3793],{"type":52,"value":1698},{"type":46,"tag":460,"props":3795,"children":3796},{"style":530},[3797],{"type":52,"value":1558},{"type":46,"tag":460,"props":3799,"children":3800},{"style":483},[3801],{"type":52,"value":1886},{"type":46,"tag":460,"props":3803,"children":3804},{"style":494},[3805],{"type":52,"value":589},{"type":46,"tag":460,"props":3807,"children":3808},{"style":483},[3809],{"type":52,"value":3810},"client",{"type":46,"tag":460,"props":3812,"children":3813},{"style":494},[3814],{"type":52,"value":589},{"type":46,"tag":460,"props":3816,"children":3817},{"style":551},[3818],{"type":52,"value":3819},"fetch",{"type":46,"tag":460,"props":3821,"children":3822},{"style":483},[3823],{"type":52,"value":559},{"type":46,"tag":460,"props":3825,"children":3826},{"style":494},[3827],{"type":52,"value":3828},"`",{"type":46,"tag":460,"props":3830,"children":3831},{"style":500},[3832],{"type":52,"value":3833},"\u002Fadmin\u002Fproducts\u002F",{"type":46,"tag":460,"props":3835,"children":3836},{"style":494},[3837],{"type":52,"value":3838},"${",{"type":46,"tag":460,"props":3840,"children":3841},{"style":483},[3842],{"type":52,"value":1904},{"type":46,"tag":460,"props":3844,"children":3845},{"style":494},[3846],{"type":52,"value":589},{"type":46,"tag":460,"props":3848,"children":3849},{"style":483},[3850],{"type":52,"value":1771},{"type":46,"tag":460,"props":3852,"children":3853},{"style":494},[3854],{"type":52,"value":748},{"type":46,"tag":460,"props":3856,"children":3857},{"style":500},[3858],{"type":52,"value":3859},"\u002Freviews",{"type":46,"tag":460,"props":3861,"children":3862},{"style":494},[3863],{"type":52,"value":3828},{"type":46,"tag":460,"props":3865,"children":3866},{"style":483},[3867],{"type":52,"value":1721},{"type":46,"tag":460,"props":3869,"children":3870},{"style":494},[3871],{"type":52,"value":636},{"type":46,"tag":460,"props":3873,"children":3874},{"class":462,"line":1819},[3875,3879],{"type":46,"tag":460,"props":3876,"children":3877},{"style":494},[3878],{"type":52,"value":748},{"type":46,"tag":460,"props":3880,"children":3881},{"style":483},[3882],{"type":52,"value":753},{"type":46,"tag":460,"props":3884,"children":3885},{"class":462,"line":1864},[3886],{"type":46,"tag":460,"props":3887,"children":3888},{"emptyLinePlaceholder":515},[3889],{"type":52,"value":518},{"type":46,"tag":460,"props":3891,"children":3892},{"class":462,"line":1970},[3893],{"type":46,"tag":460,"props":3894,"children":3895},{"style":467},[3896],{"type":52,"value":3897},"\u002F\u002F ❌ WRONG - Using regular fetch\n",{"type":46,"tag":460,"props":3899,"children":3900},{"class":462,"line":2007},[3901,3905,3909,3914,3918,3922,3926,3930],{"type":46,"tag":460,"props":3902,"children":3903},{"style":530},[3904],{"type":52,"value":1519},{"type":46,"tag":460,"props":3906,"children":3907},{"style":494},[3908],{"type":52,"value":1646},{"type":46,"tag":460,"props":3910,"children":3911},{"style":483},[3912],{"type":52,"value":3913}," data ",{"type":46,"tag":460,"props":3915,"children":3916},{"style":494},[3917],{"type":52,"value":748},{"type":46,"tag":460,"props":3919,"children":3920},{"style":494},[3921],{"type":52,"value":1600},{"type":46,"tag":460,"props":3923,"children":3924},{"style":551},[3925],{"type":52,"value":1673},{"type":46,"tag":460,"props":3927,"children":3928},{"style":483},[3929],{"type":52,"value":559},{"type":46,"tag":460,"props":3931,"children":3932},{"style":494},[3933],{"type":52,"value":564},{"type":46,"tag":460,"props":3935,"children":3936},{"class":462,"line":2034},[3937,3941,3945,3949,3953,3957,3961,3965,3969,3973,3977],{"type":46,"tag":460,"props":3938,"children":3939},{"style":571},[3940],{"type":52,"value":3568},{"type":46,"tag":460,"props":3942,"children":3943},{"style":494},[3944],{"type":52,"value":579},{"type":46,"tag":460,"props":3946,"children":3947},{"style":483},[3948],{"type":52,"value":1575},{"type":46,"tag":460,"props":3950,"children":3951},{"style":494},[3952],{"type":52,"value":631},{"type":46,"tag":460,"props":3954,"children":3955},{"style":500},[3956],{"type":52,"value":3753},{"type":46,"tag":460,"props":3958,"children":3959},{"style":494},[3960],{"type":52,"value":631},{"type":46,"tag":460,"props":3962,"children":3963},{"style":494},[3964],{"type":52,"value":1585},{"type":46,"tag":460,"props":3966,"children":3967},{"style":483},[3968],{"type":52,"value":1548},{"type":46,"tag":460,"props":3970,"children":3971},{"style":494},[3972],{"type":52,"value":589},{"type":46,"tag":460,"props":3974,"children":3975},{"style":483},[3976],{"type":52,"value":3774},{"type":46,"tag":460,"props":3978,"children":3979},{"style":494},[3980],{"type":52,"value":636},{"type":46,"tag":460,"props":3982,"children":3983},{"class":462,"line":2046},[3984,3988,3992,3996,4000,4005,4009,4013,4018,4022,4026,4030,4034,4038,4042,4046,4050],{"type":46,"tag":460,"props":3985,"children":3986},{"style":551},[3987],{"type":52,"value":3609},{"type":46,"tag":460,"props":3989,"children":3990},{"style":494},[3991],{"type":52,"value":579},{"type":46,"tag":460,"props":3993,"children":3994},{"style":494},[3995],{"type":52,"value":1698},{"type":46,"tag":460,"props":3997,"children":3998},{"style":530},[3999],{"type":52,"value":1558},{"type":46,"tag":460,"props":4001,"children":4002},{"style":551},[4003],{"type":52,"value":4004}," fetch",{"type":46,"tag":460,"props":4006,"children":4007},{"style":483},[4008],{"type":52,"value":559},{"type":46,"tag":460,"props":4010,"children":4011},{"style":494},[4012],{"type":52,"value":3828},{"type":46,"tag":460,"props":4014,"children":4015},{"style":500},[4016],{"type":52,"value":4017},"http:\u002F\u002Flocalhost:9000\u002Fadmin\u002Fproducts\u002F",{"type":46,"tag":460,"props":4019,"children":4020},{"style":494},[4021],{"type":52,"value":3838},{"type":46,"tag":460,"props":4023,"children":4024},{"style":483},[4025],{"type":52,"value":1904},{"type":46,"tag":460,"props":4027,"children":4028},{"style":494},[4029],{"type":52,"value":589},{"type":46,"tag":460,"props":4031,"children":4032},{"style":483},[4033],{"type":52,"value":1771},{"type":46,"tag":460,"props":4035,"children":4036},{"style":494},[4037],{"type":52,"value":748},{"type":46,"tag":460,"props":4039,"children":4040},{"style":500},[4041],{"type":52,"value":3859},{"type":46,"tag":460,"props":4043,"children":4044},{"style":494},[4045],{"type":52,"value":3828},{"type":46,"tag":460,"props":4047,"children":4048},{"style":483},[4049],{"type":52,"value":1721},{"type":46,"tag":460,"props":4051,"children":4052},{"style":494},[4053],{"type":52,"value":636},{"type":46,"tag":460,"props":4055,"children":4056},{"class":462,"line":2054},[4057],{"type":46,"tag":460,"props":4058,"children":4059},{"style":467},[4060],{"type":52,"value":4061},"  \u002F\u002F ❌ Error: Missing Authorization header!\n",{"type":46,"tag":460,"props":4063,"children":4064},{"class":462,"line":2063},[4065,4069],{"type":46,"tag":460,"props":4066,"children":4067},{"style":494},[4068],{"type":52,"value":748},{"type":46,"tag":460,"props":4070,"children":4071},{"style":483},[4072],{"type":52,"value":753},{"type":46,"tag":460,"props":4074,"children":4075},{"class":462,"line":2093},[4076],{"type":46,"tag":460,"props":4077,"children":4078},{"emptyLinePlaceholder":515},[4079],{"type":52,"value":518},{"type":46,"tag":460,"props":4081,"children":4082},{"class":462,"line":2115},[4083],{"type":46,"tag":460,"props":4084,"children":4085},{"style":467},[4086],{"type":52,"value":4087},"\u002F\u002F Mutation to custom backend route\n",{"type":46,"tag":460,"props":4089,"children":4090},{"class":462,"line":2140},[4091,4095,4100,4104,4108,4112],{"type":46,"tag":460,"props":4092,"children":4093},{"style":530},[4094],{"type":52,"value":1519},{"type":46,"tag":460,"props":4096,"children":4097},{"style":483},[4098],{"type":52,"value":4099}," createReview ",{"type":46,"tag":460,"props":4101,"children":4102},{"style":494},[4103],{"type":52,"value":543},{"type":46,"tag":460,"props":4105,"children":4106},{"style":551},[4107],{"type":52,"value":2082},{"type":46,"tag":460,"props":4109,"children":4110},{"style":483},[4111],{"type":52,"value":559},{"type":46,"tag":460,"props":4113,"children":4114},{"style":494},[4115],{"type":52,"value":564},{"type":46,"tag":460,"props":4117,"children":4118},{"class":462,"line":28},[4119,4124,4128,4133,4138,4142,4146,4150,4154,4158,4162,4166,4170,4174,4179,4183,4187],{"type":46,"tag":460,"props":4120,"children":4121},{"style":551},[4122],{"type":52,"value":4123},"  mutationFn",{"type":46,"tag":460,"props":4125,"children":4126},{"style":494},[4127],{"type":52,"value":579},{"type":46,"tag":460,"props":4129,"children":4130},{"style":494},[4131],{"type":52,"value":4132}," (",{"type":46,"tag":460,"props":4134,"children":4135},{"style":1545},[4136],{"type":52,"value":4137},"data",{"type":46,"tag":460,"props":4139,"children":4140},{"style":494},[4141],{"type":52,"value":1721},{"type":46,"tag":460,"props":4143,"children":4144},{"style":530},[4145],{"type":52,"value":1558},{"type":46,"tag":460,"props":4147,"children":4148},{"style":483},[4149],{"type":52,"value":1886},{"type":46,"tag":460,"props":4151,"children":4152},{"style":494},[4153],{"type":52,"value":589},{"type":46,"tag":460,"props":4155,"children":4156},{"style":483},[4157],{"type":52,"value":3810},{"type":46,"tag":460,"props":4159,"children":4160},{"style":494},[4161],{"type":52,"value":589},{"type":46,"tag":460,"props":4163,"children":4164},{"style":551},[4165],{"type":52,"value":3819},{"type":46,"tag":460,"props":4167,"children":4168},{"style":483},[4169],{"type":52,"value":559},{"type":46,"tag":460,"props":4171,"children":4172},{"style":494},[4173],{"type":52,"value":631},{"type":46,"tag":460,"props":4175,"children":4176},{"style":500},[4177],{"type":52,"value":4178},"\u002Fadmin\u002Freviews",{"type":46,"tag":460,"props":4180,"children":4181},{"style":494},[4182],{"type":52,"value":631},{"type":46,"tag":460,"props":4184,"children":4185},{"style":494},[4186],{"type":52,"value":1585},{"type":46,"tag":460,"props":4188,"children":4189},{"style":494},[4190],{"type":52,"value":700},{"type":46,"tag":460,"props":4192,"children":4193},{"class":462,"line":2228},[4194,4199,4203,4207,4212,4216],{"type":46,"tag":460,"props":4195,"children":4196},{"style":571},[4197],{"type":52,"value":4198},"    method",{"type":46,"tag":460,"props":4200,"children":4201},{"style":494},[4202],{"type":52,"value":579},{"type":46,"tag":460,"props":4204,"children":4205},{"style":494},[4206],{"type":52,"value":497},{"type":46,"tag":460,"props":4208,"children":4209},{"style":500},[4210],{"type":52,"value":4211},"POST",{"type":46,"tag":460,"props":4213,"children":4214},{"style":494},[4215],{"type":52,"value":631},{"type":46,"tag":460,"props":4217,"children":4218},{"style":494},[4219],{"type":52,"value":636},{"type":46,"tag":460,"props":4221,"children":4222},{"class":462,"line":2237},[4223,4228,4232],{"type":46,"tag":460,"props":4224,"children":4225},{"style":571},[4226],{"type":52,"value":4227},"    body",{"type":46,"tag":460,"props":4229,"children":4230},{"style":494},[4231],{"type":52,"value":579},{"type":46,"tag":460,"props":4233,"children":4234},{"style":483},[4235],{"type":52,"value":4236}," data\n",{"type":46,"tag":460,"props":4238,"children":4239},{"class":462,"line":2313},[4240,4244,4248],{"type":46,"tag":460,"props":4241,"children":4242},{"style":494},[4243],{"type":52,"value":1795},{"type":46,"tag":460,"props":4245,"children":4246},{"style":483},[4247],{"type":52,"value":1721},{"type":46,"tag":460,"props":4249,"children":4250},{"style":494},[4251],{"type":52,"value":636},{"type":46,"tag":460,"props":4253,"children":4254},{"class":462,"line":2322},[4255,4260,4264,4268,4272],{"type":46,"tag":460,"props":4256,"children":4257},{"style":551},[4258],{"type":52,"value":4259},"  onSuccess",{"type":46,"tag":460,"props":4261,"children":4262},{"style":494},[4263],{"type":52,"value":579},{"type":46,"tag":460,"props":4265,"children":4266},{"style":494},[4267],{"type":52,"value":1698},{"type":46,"tag":460,"props":4269,"children":4270},{"style":530},[4271],{"type":52,"value":1558},{"type":46,"tag":460,"props":4273,"children":4274},{"style":494},[4275],{"type":52,"value":700},{"type":46,"tag":460,"props":4277,"children":4278},{"class":462,"line":2331},[4279,4284,4288,4292,4296,4300,4304,4308,4312,4316,4320,4324,4328,4332,4336,4340,4344,4348],{"type":46,"tag":460,"props":4280,"children":4281},{"style":483},[4282],{"type":52,"value":4283},"    queryClient",{"type":46,"tag":460,"props":4285,"children":4286},{"style":494},[4287],{"type":52,"value":589},{"type":46,"tag":460,"props":4289,"children":4290},{"style":551},[4291],{"type":52,"value":2163},{"type":46,"tag":460,"props":4293,"children":4294},{"style":571},[4295],{"type":52,"value":559},{"type":46,"tag":460,"props":4297,"children":4298},{"style":494},[4299],{"type":52,"value":1922},{"type":46,"tag":460,"props":4301,"children":4302},{"style":571},[4303],{"type":52,"value":2176},{"type":46,"tag":460,"props":4305,"children":4306},{"style":494},[4307],{"type":52,"value":579},{"type":46,"tag":460,"props":4309,"children":4310},{"style":571},[4311],{"type":52,"value":1575},{"type":46,"tag":460,"props":4313,"children":4314},{"style":494},[4315],{"type":52,"value":631},{"type":46,"tag":460,"props":4317,"children":4318},{"style":500},[4319],{"type":52,"value":3753},{"type":46,"tag":460,"props":4321,"children":4322},{"style":494},[4323],{"type":52,"value":631},{"type":46,"tag":460,"props":4325,"children":4326},{"style":494},[4327],{"type":52,"value":1585},{"type":46,"tag":460,"props":4329,"children":4330},{"style":483},[4331],{"type":52,"value":1548},{"type":46,"tag":460,"props":4333,"children":4334},{"style":494},[4335],{"type":52,"value":589},{"type":46,"tag":460,"props":4337,"children":4338},{"style":483},[4339],{"type":52,"value":1771},{"type":46,"tag":460,"props":4341,"children":4342},{"style":571},[4343],{"type":52,"value":2217},{"type":46,"tag":460,"props":4345,"children":4346},{"style":494},[4347],{"type":52,"value":748},{"type":46,"tag":460,"props":4349,"children":4350},{"style":571},[4351],{"type":52,"value":753},{"type":46,"tag":460,"props":4353,"children":4354},{"class":462,"line":2343},[4355,4360,4364,4369,4373,4377,4382,4386],{"type":46,"tag":460,"props":4356,"children":4357},{"style":483},[4358],{"type":52,"value":4359},"    toast",{"type":46,"tag":460,"props":4361,"children":4362},{"style":494},[4363],{"type":52,"value":589},{"type":46,"tag":460,"props":4365,"children":4366},{"style":551},[4367],{"type":52,"value":4368},"success",{"type":46,"tag":460,"props":4370,"children":4371},{"style":571},[4372],{"type":52,"value":559},{"type":46,"tag":460,"props":4374,"children":4375},{"style":494},[4376],{"type":52,"value":631},{"type":46,"tag":460,"props":4378,"children":4379},{"style":500},[4380],{"type":52,"value":4381},"Review created",{"type":46,"tag":460,"props":4383,"children":4384},{"style":494},[4385],{"type":52,"value":631},{"type":46,"tag":460,"props":4387,"children":4388},{"style":571},[4389],{"type":52,"value":753},{"type":46,"tag":460,"props":4391,"children":4392},{"class":462,"line":2351},[4393],{"type":46,"tag":460,"props":4394,"children":4395},{"style":494},[4396],{"type":52,"value":739},{"type":46,"tag":460,"props":4398,"children":4399},{"class":462,"line":2365},[4400,4404],{"type":46,"tag":460,"props":4401,"children":4402},{"style":494},[4403],{"type":52,"value":748},{"type":46,"tag":460,"props":4405,"children":4406},{"style":483},[4407],{"type":52,"value":753},{"type":46,"tag":55,"props":4409,"children":4410},{},[4411],{"type":46,"tag":64,"props":4412,"children":4413},{},[4414],{"type":52,"value":4415},"Why the SDK is required:",{"type":46,"tag":87,"props":4417,"children":4418},{},[4419,4432,4445,4450,4455],{"type":46,"tag":91,"props":4420,"children":4421},{},[4422,4424,4430],{"type":52,"value":4423},"Admin routes need ",{"type":46,"tag":185,"props":4425,"children":4427},{"className":4426},[],[4428],{"type":52,"value":4429},"Authorization",{"type":52,"value":4431}," and session cookie headers",{"type":46,"tag":91,"props":4433,"children":4434},{},[4435,4437,4443],{"type":52,"value":4436},"Store routes need ",{"type":46,"tag":185,"props":4438,"children":4440},{"className":4439},[],[4441],{"type":52,"value":4442},"x-publishable-api-key",{"type":52,"value":4444}," header",{"type":46,"tag":91,"props":4446,"children":4447},{},[4448],{"type":52,"value":4449},"SDK handles all required headers automatically",{"type":46,"tag":91,"props":4451,"children":4452},{},[4453],{"type":52,"value":4454},"Regular fetch() without headers → authentication\u002Fauthorization errors",{"type":46,"tag":91,"props":4456,"children":4457},{},[4458],{"type":52,"value":4459},"Using existing SDK methods provides better type safety",{"type":46,"tag":55,"props":4461,"children":4462},{},[4463],{"type":46,"tag":64,"props":4464,"children":4465},{},[4466],{"type":52,"value":4467},"When to use what:",{"type":46,"tag":87,"props":4469,"children":4470},{},[4471,4495],{"type":46,"tag":91,"props":4472,"children":4473},{},[4474,4479,4481,4486,4488,4494],{"type":46,"tag":64,"props":4475,"children":4476},{},[4477],{"type":52,"value":4478},"Built-in endpoints",{"type":52,"value":4480},": Use existing SDK methods (",{"type":46,"tag":185,"props":4482,"children":4484},{"className":4483},[],[4485],{"type":52,"value":1176},{"type":52,"value":4487},", ",{"type":46,"tag":185,"props":4489,"children":4491},{"className":4490},[],[4492],{"type":52,"value":4493},"sdk.store.product.list()",{"type":52,"value":1721},{"type":46,"tag":91,"props":4496,"children":4497},{},[4498,4503,4505,4510],{"type":46,"tag":64,"props":4499,"children":4500},{},[4501],{"type":52,"value":4502},"Custom endpoints",{"type":52,"value":4504},": Use ",{"type":46,"tag":185,"props":4506,"children":4508},{"className":4507},[],[4509],{"type":52,"value":1184},{"type":52,"value":4511}," for your custom API routes",{"type":46,"tag":55,"props":4513,"children":4514},{},[4515,4520,4522,4528],{"type":46,"tag":64,"props":4516,"children":4517},{},[4518],{"type":52,"value":4519},"For implementing backend API routes",{"type":52,"value":4521},", load the ",{"type":46,"tag":185,"props":4523,"children":4525},{"className":4524},[],[4526],{"type":52,"value":4527},"building-with-medusa",{"type":52,"value":4529}," skill.",{"type":46,"tag":72,"props":4531,"children":4533},{"id":4532},"widget-vs-ui-route",[4534],{"type":52,"value":4535},"Widget vs UI Route",{"type":46,"tag":55,"props":4537,"children":4538},{},[4539,4544],{"type":46,"tag":64,"props":4540,"children":4541},{},[4542],{"type":52,"value":4543},"Widgets",{"type":52,"value":4545}," extend existing admin pages:",{"type":46,"tag":449,"props":4547,"children":4549},{"className":451,"code":4548,"language":453,"meta":454,"style":454},"\u002F\u002F src\u002Fadmin\u002Fwidgets\u002Fcustom-widget.tsx\nimport { defineWidgetConfig } from \"@medusajs\u002Fadmin-sdk\"\nimport { DetailWidgetProps } from \"@medusajs\u002Fframework\u002Ftypes\"\n\nconst MyWidget = ({ data }: DetailWidgetProps\u003CHttpTypes.AdminProduct>) => {\n  return \u003CContainer>Widget content\u003C\u002FContainer>\n}\n\nexport const config = defineWidgetConfig({\n  zone: \"product.details.after\",\n})\n\nexport default MyWidget\n",[4550],{"type":46,"tag":185,"props":4551,"children":4552},{"__ignoreMap":454},[4553,4561,4598,4635,4642,4707,4744,4751,4758,4790,4819,4830,4837],{"type":46,"tag":460,"props":4554,"children":4555},{"class":462,"line":463},[4556],{"type":46,"tag":460,"props":4557,"children":4558},{"style":467},[4559],{"type":52,"value":4560},"\u002F\u002F src\u002Fadmin\u002Fwidgets\u002Fcustom-widget.tsx\n",{"type":46,"tag":460,"props":4562,"children":4563},{"class":462,"line":473},[4564,4568,4572,4577,4581,4585,4589,4594],{"type":46,"tag":460,"props":4565,"children":4566},{"style":477},[4567],{"type":52,"value":480},{"type":46,"tag":460,"props":4569,"children":4570},{"style":494},[4571],{"type":52,"value":1646},{"type":46,"tag":460,"props":4573,"children":4574},{"style":483},[4575],{"type":52,"value":4576}," defineWidgetConfig",{"type":46,"tag":460,"props":4578,"children":4579},{"style":494},[4580],{"type":52,"value":1664},{"type":46,"tag":460,"props":4582,"children":4583},{"style":477},[4584],{"type":52,"value":3488},{"type":46,"tag":460,"props":4586,"children":4587},{"style":494},[4588],{"type":52,"value":497},{"type":46,"tag":460,"props":4590,"children":4591},{"style":500},[4592],{"type":52,"value":4593},"@medusajs\u002Fadmin-sdk",{"type":46,"tag":460,"props":4595,"children":4596},{"style":494},[4597],{"type":52,"value":508},{"type":46,"tag":460,"props":4599,"children":4600},{"class":462,"line":511},[4601,4605,4609,4614,4618,4622,4626,4631],{"type":46,"tag":460,"props":4602,"children":4603},{"style":477},[4604],{"type":52,"value":480},{"type":46,"tag":460,"props":4606,"children":4607},{"style":494},[4608],{"type":52,"value":1646},{"type":46,"tag":460,"props":4610,"children":4611},{"style":483},[4612],{"type":52,"value":4613}," DetailWidgetProps",{"type":46,"tag":460,"props":4615,"children":4616},{"style":494},[4617],{"type":52,"value":1664},{"type":46,"tag":460,"props":4619,"children":4620},{"style":477},[4621],{"type":52,"value":3488},{"type":46,"tag":460,"props":4623,"children":4624},{"style":494},[4625],{"type":52,"value":497},{"type":46,"tag":460,"props":4627,"children":4628},{"style":500},[4629],{"type":52,"value":4630},"@medusajs\u002Fframework\u002Ftypes",{"type":46,"tag":460,"props":4632,"children":4633},{"style":494},[4634],{"type":52,"value":508},{"type":46,"tag":460,"props":4636,"children":4637},{"class":462,"line":521},[4638],{"type":46,"tag":460,"props":4639,"children":4640},{"emptyLinePlaceholder":515},[4641],{"type":52,"value":518},{"type":46,"tag":460,"props":4643,"children":4644},{"class":462,"line":567},[4645,4649,4654,4658,4662,4666,4671,4675,4680,4685,4689,4694,4699,4703],{"type":46,"tag":460,"props":4646,"children":4647},{"style":530},[4648],{"type":52,"value":1519},{"type":46,"tag":460,"props":4650,"children":4651},{"style":483},[4652],{"type":52,"value":4653}," MyWidget ",{"type":46,"tag":460,"props":4655,"children":4656},{"style":494},[4657],{"type":52,"value":543},{"type":46,"tag":460,"props":4659,"children":4660},{"style":494},[4661],{"type":52,"value":1533},{"type":46,"tag":460,"props":4663,"children":4664},{"style":1545},[4665],{"type":52,"value":1538},{"type":46,"tag":460,"props":4667,"children":4668},{"style":494},[4669],{"type":52,"value":4670}," }:",{"type":46,"tag":460,"props":4672,"children":4673},{"style":791},[4674],{"type":52,"value":4613},{"type":46,"tag":460,"props":4676,"children":4677},{"style":494},[4678],{"type":52,"value":4679},"\u003C",{"type":46,"tag":460,"props":4681,"children":4682},{"style":791},[4683],{"type":52,"value":4684},"HttpTypes",{"type":46,"tag":460,"props":4686,"children":4687},{"style":494},[4688],{"type":52,"value":589},{"type":46,"tag":460,"props":4690,"children":4691},{"style":791},[4692],{"type":52,"value":4693},"AdminProduct",{"type":46,"tag":460,"props":4695,"children":4696},{"style":494},[4697],{"type":52,"value":4698},">)",{"type":46,"tag":460,"props":4700,"children":4701},{"style":530},[4702],{"type":52,"value":1558},{"type":46,"tag":460,"props":4704,"children":4705},{"style":494},[4706],{"type":52,"value":700},{"type":46,"tag":460,"props":4708,"children":4709},{"class":462,"line":639},[4710,4714,4718,4722,4726,4731,4736,4740],{"type":46,"tag":460,"props":4711,"children":4712},{"style":477},[4713],{"type":52,"value":2357},{"type":46,"tag":460,"props":4715,"children":4716},{"style":494},[4717],{"type":52,"value":2440},{"type":46,"tag":460,"props":4719,"children":4720},{"style":791},[4721],{"type":52,"value":2376},{"type":46,"tag":460,"props":4723,"children":4724},{"style":494},[4725],{"type":52,"value":2499},{"type":46,"tag":460,"props":4727,"children":4728},{"style":483},[4729],{"type":52,"value":4730},"Widget content",{"type":46,"tag":460,"props":4732,"children":4733},{"style":494},[4734],{"type":52,"value":4735},"\u003C\u002F",{"type":46,"tag":460,"props":4737,"children":4738},{"style":791},[4739],{"type":52,"value":2376},{"type":46,"tag":460,"props":4741,"children":4742},{"style":494},[4743],{"type":52,"value":2381},{"type":46,"tag":460,"props":4745,"children":4746},{"class":462,"line":685},[4747],{"type":46,"tag":460,"props":4748,"children":4749},{"style":494},[4750],{"type":52,"value":2400},{"type":46,"tag":460,"props":4752,"children":4753},{"class":462,"line":703},[4754],{"type":46,"tag":460,"props":4755,"children":4756},{"emptyLinePlaceholder":515},[4757],{"type":52,"value":518},{"type":46,"tag":460,"props":4759,"children":4760},{"class":462,"line":733},[4761,4765,4769,4774,4778,4782,4786],{"type":46,"tag":460,"props":4762,"children":4763},{"style":477},[4764],{"type":52,"value":527},{"type":46,"tag":460,"props":4766,"children":4767},{"style":530},[4768],{"type":52,"value":533},{"type":46,"tag":460,"props":4770,"children":4771},{"style":483},[4772],{"type":52,"value":4773}," config ",{"type":46,"tag":460,"props":4775,"children":4776},{"style":494},[4777],{"type":52,"value":543},{"type":46,"tag":460,"props":4779,"children":4780},{"style":551},[4781],{"type":52,"value":4576},{"type":46,"tag":460,"props":4783,"children":4784},{"style":483},[4785],{"type":52,"value":559},{"type":46,"tag":460,"props":4787,"children":4788},{"style":494},[4789],{"type":52,"value":564},{"type":46,"tag":460,"props":4791,"children":4792},{"class":462,"line":742},[4793,4798,4802,4806,4811,4815],{"type":46,"tag":460,"props":4794,"children":4795},{"style":571},[4796],{"type":52,"value":4797},"  zone",{"type":46,"tag":460,"props":4799,"children":4800},{"style":494},[4801],{"type":52,"value":579},{"type":46,"tag":460,"props":4803,"children":4804},{"style":494},[4805],{"type":52,"value":497},{"type":46,"tag":460,"props":4807,"children":4808},{"style":500},[4809],{"type":52,"value":4810},"product.details.after",{"type":46,"tag":460,"props":4812,"children":4813},{"style":494},[4814],{"type":52,"value":631},{"type":46,"tag":460,"props":4816,"children":4817},{"style":494},[4818],{"type":52,"value":636},{"type":46,"tag":460,"props":4820,"children":4821},{"class":462,"line":1802},[4822,4826],{"type":46,"tag":460,"props":4823,"children":4824},{"style":494},[4825],{"type":52,"value":748},{"type":46,"tag":460,"props":4827,"children":4828},{"style":483},[4829],{"type":52,"value":753},{"type":46,"tag":460,"props":4831,"children":4832},{"class":462,"line":1810},[4833],{"type":46,"tag":460,"props":4834,"children":4835},{"emptyLinePlaceholder":515},[4836],{"type":52,"value":518},{"type":46,"tag":460,"props":4838,"children":4839},{"class":462,"line":1819},[4840,4844,4849],{"type":46,"tag":460,"props":4841,"children":4842},{"style":477},[4843],{"type":52,"value":527},{"type":46,"tag":460,"props":4845,"children":4846},{"style":477},[4847],{"type":52,"value":4848}," default",{"type":46,"tag":460,"props":4850,"children":4851},{"style":483},[4852],{"type":52,"value":4853}," MyWidget\n",{"type":46,"tag":55,"props":4855,"children":4856},{},[4857,4862],{"type":46,"tag":64,"props":4858,"children":4859},{},[4860],{"type":52,"value":4861},"UI Routes",{"type":52,"value":4863}," create new admin pages:",{"type":46,"tag":449,"props":4865,"children":4867},{"className":451,"code":4866,"language":453,"meta":454,"style":454},"\u002F\u002F src\u002Fadmin\u002Froutes\u002Fcustom-page\u002Fpage.tsx\nimport { defineRouteConfig } from \"@medusajs\u002Fadmin-sdk\"\n\nconst CustomPage = () => {\n  return \u003Cdiv>Page content\u003C\u002Fdiv>\n}\n\nexport const config = defineRouteConfig({\n  label: \"Custom Page\",\n})\n\nexport default CustomPage\n",[4868],{"type":46,"tag":185,"props":4869,"children":4870},{"__ignoreMap":454},[4871,4879,4915,4922,4950,4986,4993,5000,5031,5060,5071,5078],{"type":46,"tag":460,"props":4872,"children":4873},{"class":462,"line":463},[4874],{"type":46,"tag":460,"props":4875,"children":4876},{"style":467},[4877],{"type":52,"value":4878},"\u002F\u002F src\u002Fadmin\u002Froutes\u002Fcustom-page\u002Fpage.tsx\n",{"type":46,"tag":460,"props":4880,"children":4881},{"class":462,"line":473},[4882,4886,4890,4895,4899,4903,4907,4911],{"type":46,"tag":460,"props":4883,"children":4884},{"style":477},[4885],{"type":52,"value":480},{"type":46,"tag":460,"props":4887,"children":4888},{"style":494},[4889],{"type":52,"value":1646},{"type":46,"tag":460,"props":4891,"children":4892},{"style":483},[4893],{"type":52,"value":4894}," defineRouteConfig",{"type":46,"tag":460,"props":4896,"children":4897},{"style":494},[4898],{"type":52,"value":1664},{"type":46,"tag":460,"props":4900,"children":4901},{"style":477},[4902],{"type":52,"value":3488},{"type":46,"tag":460,"props":4904,"children":4905},{"style":494},[4906],{"type":52,"value":497},{"type":46,"tag":460,"props":4908,"children":4909},{"style":500},[4910],{"type":52,"value":4593},{"type":46,"tag":460,"props":4912,"children":4913},{"style":494},[4914],{"type":52,"value":508},{"type":46,"tag":460,"props":4916,"children":4917},{"class":462,"line":511},[4918],{"type":46,"tag":460,"props":4919,"children":4920},{"emptyLinePlaceholder":515},[4921],{"type":52,"value":518},{"type":46,"tag":460,"props":4923,"children":4924},{"class":462,"line":521},[4925,4929,4934,4938,4942,4946],{"type":46,"tag":460,"props":4926,"children":4927},{"style":530},[4928],{"type":52,"value":1519},{"type":46,"tag":460,"props":4930,"children":4931},{"style":483},[4932],{"type":52,"value":4933}," CustomPage ",{"type":46,"tag":460,"props":4935,"children":4936},{"style":494},[4937],{"type":52,"value":543},{"type":46,"tag":460,"props":4939,"children":4940},{"style":494},[4941],{"type":52,"value":1698},{"type":46,"tag":460,"props":4943,"children":4944},{"style":530},[4945],{"type":52,"value":1558},{"type":46,"tag":460,"props":4947,"children":4948},{"style":494},[4949],{"type":52,"value":700},{"type":46,"tag":460,"props":4951,"children":4952},{"class":462,"line":567},[4953,4957,4961,4965,4969,4974,4978,4982],{"type":46,"tag":460,"props":4954,"children":4955},{"style":477},[4956],{"type":52,"value":2357},{"type":46,"tag":460,"props":4958,"children":4959},{"style":494},[4960],{"type":52,"value":2440},{"type":46,"tag":460,"props":4962,"children":4963},{"style":571},[4964],{"type":52,"value":2445},{"type":46,"tag":460,"props":4966,"children":4967},{"style":494},[4968],{"type":52,"value":2499},{"type":46,"tag":460,"props":4970,"children":4971},{"style":483},[4972],{"type":52,"value":4973},"Page content",{"type":46,"tag":460,"props":4975,"children":4976},{"style":494},[4977],{"type":52,"value":4735},{"type":46,"tag":460,"props":4979,"children":4980},{"style":571},[4981],{"type":52,"value":2445},{"type":46,"tag":460,"props":4983,"children":4984},{"style":494},[4985],{"type":52,"value":2381},{"type":46,"tag":460,"props":4987,"children":4988},{"class":462,"line":639},[4989],{"type":46,"tag":460,"props":4990,"children":4991},{"style":494},[4992],{"type":52,"value":2400},{"type":46,"tag":460,"props":4994,"children":4995},{"class":462,"line":685},[4996],{"type":46,"tag":460,"props":4997,"children":4998},{"emptyLinePlaceholder":515},[4999],{"type":52,"value":518},{"type":46,"tag":460,"props":5001,"children":5002},{"class":462,"line":703},[5003,5007,5011,5015,5019,5023,5027],{"type":46,"tag":460,"props":5004,"children":5005},{"style":477},[5006],{"type":52,"value":527},{"type":46,"tag":460,"props":5008,"children":5009},{"style":530},[5010],{"type":52,"value":533},{"type":46,"tag":460,"props":5012,"children":5013},{"style":483},[5014],{"type":52,"value":4773},{"type":46,"tag":460,"props":5016,"children":5017},{"style":494},[5018],{"type":52,"value":543},{"type":46,"tag":460,"props":5020,"children":5021},{"style":551},[5022],{"type":52,"value":4894},{"type":46,"tag":460,"props":5024,"children":5025},{"style":483},[5026],{"type":52,"value":559},{"type":46,"tag":460,"props":5028,"children":5029},{"style":494},[5030],{"type":52,"value":564},{"type":46,"tag":460,"props":5032,"children":5033},{"class":462,"line":733},[5034,5039,5043,5047,5052,5056],{"type":46,"tag":460,"props":5035,"children":5036},{"style":571},[5037],{"type":52,"value":5038},"  label",{"type":46,"tag":460,"props":5040,"children":5041},{"style":494},[5042],{"type":52,"value":579},{"type":46,"tag":460,"props":5044,"children":5045},{"style":494},[5046],{"type":52,"value":497},{"type":46,"tag":460,"props":5048,"children":5049},{"style":500},[5050],{"type":52,"value":5051},"Custom Page",{"type":46,"tag":460,"props":5053,"children":5054},{"style":494},[5055],{"type":52,"value":631},{"type":46,"tag":460,"props":5057,"children":5058},{"style":494},[5059],{"type":52,"value":636},{"type":46,"tag":460,"props":5061,"children":5062},{"class":462,"line":742},[5063,5067],{"type":46,"tag":460,"props":5064,"children":5065},{"style":494},[5066],{"type":52,"value":748},{"type":46,"tag":460,"props":5068,"children":5069},{"style":483},[5070],{"type":52,"value":753},{"type":46,"tag":460,"props":5072,"children":5073},{"class":462,"line":1802},[5074],{"type":46,"tag":460,"props":5075,"children":5076},{"emptyLinePlaceholder":515},[5077],{"type":52,"value":518},{"type":46,"tag":460,"props":5079,"children":5080},{"class":462,"line":1810},[5081,5085,5089],{"type":46,"tag":460,"props":5082,"children":5083},{"style":477},[5084],{"type":52,"value":527},{"type":46,"tag":460,"props":5086,"children":5087},{"style":477},[5088],{"type":52,"value":4848},{"type":46,"tag":460,"props":5090,"children":5091},{"style":483},[5092],{"type":52,"value":5093}," CustomPage\n",{"type":46,"tag":72,"props":5095,"children":5097},{"id":5096},"common-issues-solutions",[5098],{"type":52,"value":5099},"Common Issues & Solutions",{"type":46,"tag":55,"props":5101,"children":5102},{},[5103],{"type":46,"tag":64,"props":5104,"children":5105},{},[5106],{"type":52,"value":5107},"\"Cannot find module\" errors (pnpm users):",{"type":46,"tag":87,"props":5109,"children":5110},{},[5111,5116],{"type":46,"tag":91,"props":5112,"children":5113},{},[5114],{"type":52,"value":5115},"Install peer dependencies BEFORE coding",{"type":46,"tag":91,"props":5117,"children":5118},{},[5119],{"type":52,"value":5120},"Use exact versions from dashboard",{"type":46,"tag":55,"props":5122,"children":5123},{},[5124],{"type":46,"tag":64,"props":5125,"children":5126},{},[5127],{"type":52,"value":5128},"\"No QueryClient set\" error:",{"type":46,"tag":87,"props":5130,"children":5131},{},[5132,5137],{"type":46,"tag":91,"props":5133,"children":5134},{},[5135],{"type":52,"value":5136},"pnpm: Install @tanstack\u002Freact-query",{"type":46,"tag":91,"props":5138,"children":5139},{},[5140],{"type":52,"value":5141},"npm\u002Fyarn: Remove incorrectly installed package",{"type":46,"tag":55,"props":5143,"children":5144},{},[5145],{"type":46,"tag":64,"props":5146,"children":5147},{},[5148],{"type":52,"value":5149},"\"DataTable.Search not enabled\":",{"type":46,"tag":87,"props":5151,"children":5152},{},[5153],{"type":46,"tag":91,"props":5154,"children":5155},{},[5156],{"type":52,"value":5157},"Must pass search configuration to useDataTable",{"type":46,"tag":55,"props":5159,"children":5160},{},[5161],{"type":46,"tag":64,"props":5162,"children":5163},{},[5164],{"type":52,"value":5165},"Widget not refreshing:",{"type":46,"tag":87,"props":5167,"children":5168},{},[5169,5174],{"type":46,"tag":91,"props":5170,"children":5171},{},[5172],{"type":52,"value":5173},"Invalidate display queries, not just modal queries",{"type":46,"tag":91,"props":5175,"children":5176},{},[5177],{"type":52,"value":5178},"Include all dependencies in query keys",{"type":46,"tag":55,"props":5180,"children":5181},{},[5182],{"type":46,"tag":64,"props":5183,"children":5184},{},[5185],{"type":52,"value":5186},"Display empty on refresh:",{"type":46,"tag":87,"props":5188,"children":5189},{},[5190,5203],{"type":46,"tag":91,"props":5191,"children":5192},{},[5193,5195,5201],{"type":52,"value":5194},"Display query has conditional ",{"type":46,"tag":185,"props":5196,"children":5198},{"className":5197},[],[5199],{"type":52,"value":5200},"enabled",{"type":52,"value":5202}," based on UI state",{"type":46,"tag":91,"props":5204,"children":5205},{},[5206],{"type":52,"value":5207},"Remove condition - display data must load on mount",{"type":46,"tag":72,"props":5209,"children":5211},{"id":5210},"next-steps-testing-your-implementation",[5212],{"type":52,"value":5213},"Next Steps - Testing Your Implementation",{"type":46,"tag":55,"props":5215,"children":5216},{},[5217],{"type":46,"tag":64,"props":5218,"children":5219},{},[5220],{"type":52,"value":5221},"After successfully implementing a feature, always provide these next steps to the user:",{"type":46,"tag":432,"props":5223,"children":5225},{"id":5224},"_1-start-the-development-server",[5226],{"type":52,"value":5227},"1. Start the Development Server",{"type":46,"tag":55,"props":5229,"children":5230},{},[5231],{"type":52,"value":5232},"If the server isn't already running, start it:",{"type":46,"tag":449,"props":5234,"children":5236},{"className":771,"code":5235,"language":773,"meta":454,"style":454},"npm run dev      # or pnpm dev \u002F yarn dev\n",[5237],{"type":46,"tag":185,"props":5238,"children":5239},{"__ignoreMap":454},[5240],{"type":46,"tag":460,"props":5241,"children":5242},{"class":462,"line":463},[5243,5248,5253,5258],{"type":46,"tag":460,"props":5244,"children":5245},{"style":791},[5246],{"type":52,"value":5247},"npm",{"type":46,"tag":460,"props":5249,"children":5250},{"style":500},[5251],{"type":52,"value":5252}," run",{"type":46,"tag":460,"props":5254,"children":5255},{"style":500},[5256],{"type":52,"value":5257}," dev",{"type":46,"tag":460,"props":5259,"children":5260},{"style":467},[5261],{"type":52,"value":5262},"      # or pnpm dev \u002F yarn dev\n",{"type":46,"tag":432,"props":5264,"children":5266},{"id":5265},"_2-access-the-admin-dashboard",[5267],{"type":52,"value":5268},"2. Access the Admin Dashboard",{"type":46,"tag":55,"props":5270,"children":5271},{},[5272],{"type":52,"value":5273},"Open your browser and navigate to:",{"type":46,"tag":87,"props":5275,"children":5276},{},[5277],{"type":46,"tag":91,"props":5278,"children":5279},{},[5280,5285,5286],{"type":46,"tag":64,"props":5281,"children":5282},{},[5283],{"type":52,"value":5284},"Admin Dashboard:",{"type":52,"value":3248},{"type":46,"tag":5287,"props":5288,"children":5292},"a",{"href":5289,"rel":5290},"http:\u002F\u002Flocalhost:9000\u002Fapp",[5291],"nofollow",[5293],{"type":52,"value":5289},{"type":46,"tag":55,"props":5295,"children":5296},{},[5297],{"type":52,"value":5298},"Log in with your admin credentials.",{"type":46,"tag":432,"props":5300,"children":5302},{"id":5301},"_3-navigate-to-your-custom-ui",[5303],{"type":52,"value":5304},"3. Navigate to Your Custom UI",{"type":46,"tag":55,"props":5306,"children":5307},{},[5308,5313],{"type":46,"tag":64,"props":5309,"children":5310},{},[5311],{"type":52,"value":5312},"For Widgets:",{"type":52,"value":5314},"\nNavigate to the page where your widget is displayed. Common widget zones:",{"type":46,"tag":87,"props":5316,"children":5317},{},[5318,5334,5344],{"type":46,"tag":91,"props":5319,"children":5320},{},[5321,5326,5328,5333],{"type":46,"tag":64,"props":5322,"children":5323},{},[5324],{"type":52,"value":5325},"Product widgets:",{"type":52,"value":5327}," Go to Products → Select a product → Your widget appears in the zone you configured (e.g., ",{"type":46,"tag":185,"props":5329,"children":5331},{"className":5330},[],[5332],{"type":52,"value":4810},{"type":52,"value":1721},{"type":46,"tag":91,"props":5335,"children":5336},{},[5337,5342],{"type":46,"tag":64,"props":5338,"children":5339},{},[5340],{"type":52,"value":5341},"Order widgets:",{"type":52,"value":5343}," Go to Orders → Select an order → Your widget appears in the configured zone",{"type":46,"tag":91,"props":5345,"children":5346},{},[5347,5352],{"type":46,"tag":64,"props":5348,"children":5349},{},[5350],{"type":52,"value":5351},"Customer widgets:",{"type":52,"value":5353}," Go to Customers → Select a customer → Your widget appears in the configured zone",{"type":46,"tag":55,"props":5355,"children":5356},{},[5357],{"type":46,"tag":64,"props":5358,"children":5359},{},[5360],{"type":52,"value":5361},"For UI Routes (Custom Pages):",{"type":46,"tag":87,"props":5363,"children":5364},{},[5365,5378],{"type":46,"tag":91,"props":5366,"children":5367},{},[5368,5370,5376],{"type":52,"value":5369},"Look for your custom page in the admin sidebar\u002Fnavigation (based on the ",{"type":46,"tag":185,"props":5371,"children":5373},{"className":5372},[],[5374],{"type":52,"value":5375},"label",{"type":52,"value":5377}," you configured)",{"type":46,"tag":91,"props":5379,"children":5380},{},[5381,5383],{"type":52,"value":5382},"Or navigate directly to: ",{"type":46,"tag":185,"props":5384,"children":5386},{"className":5385},[],[5387],{"type":52,"value":5388},"http:\u002F\u002Flocalhost:9000\u002Fapp\u002F[your-route-path]",{"type":46,"tag":432,"props":5390,"children":5392},{"id":5391},"_4-test-functionality",[5393],{"type":52,"value":5394},"4. Test Functionality",{"type":46,"tag":55,"props":5396,"children":5397},{},[5398],{"type":52,"value":5399},"Depending on what was implemented, test:",{"type":46,"tag":87,"props":5401,"children":5402},{},[5403,5412,5422,5432,5442],{"type":46,"tag":91,"props":5404,"children":5405},{},[5406,5410],{"type":46,"tag":64,"props":5407,"children":5408},{},[5409],{"type":52,"value":3310},{"type":52,"value":5411}," Try creating\u002Fediting entities, verify validation and error messages",{"type":46,"tag":91,"props":5413,"children":5414},{},[5415,5420],{"type":46,"tag":64,"props":5416,"children":5417},{},[5418],{"type":52,"value":5419},"Tables:",{"type":52,"value":5421}," Test pagination, search, sorting, and row selection",{"type":46,"tag":91,"props":5423,"children":5424},{},[5425,5430],{"type":46,"tag":64,"props":5426,"children":5427},{},[5428],{"type":52,"value":5429},"Data display:",{"type":52,"value":5431}," Verify data loads correctly and refreshes after mutations",{"type":46,"tag":91,"props":5433,"children":5434},{},[5435,5440],{"type":46,"tag":64,"props":5436,"children":5437},{},[5438],{"type":52,"value":5439},"Modals:",{"type":52,"value":5441}," Open FocusModal\u002FDrawer, test form submission, verify data updates",{"type":46,"tag":91,"props":5443,"children":5444},{},[5445,5450],{"type":46,"tag":64,"props":5446,"children":5447},{},[5448],{"type":52,"value":5449},"Navigation:",{"type":52,"value":5451}," Click links and verify routing works correctly",{"type":46,"tag":432,"props":5453,"children":5455},{"id":5454},"format-for-presenting-next-steps",[5456],{"type":52,"value":5457},"Format for Presenting Next Steps",{"type":46,"tag":55,"props":5459,"children":5460},{},[5461],{"type":52,"value":5462},"Always present next steps in a clear, actionable format after implementation:",{"type":46,"tag":449,"props":5464,"children":5468},{"className":5465,"code":5466,"language":5467,"meta":454,"style":454},"language-markdown shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","## Implementation Complete\n\nThe [feature name] has been successfully implemented. Here's how to see it:\n\n### Start the Development Server\n[command based on package manager]\n\n### Access the Admin Dashboard\nOpen http:\u002F\u002Flocalhost:9000\u002Fapp in your browser and log in.\n\n### View Your Custom UI\n\n**For Widgets:**\n1. Navigate to [specific admin page, e.g., \"Products\"]\n2. Select [an entity, e.g., \"any product\"]\n3. Scroll to [zone location, e.g., \"the bottom of the page\"]\n4. You'll see your \"[widget name]\" widget\n\n**For UI Routes:**\n1. Look for \"[page label]\" in the admin navigation\n2. Or navigate directly to http:\u002F\u002Flocalhost:9000\u002Fapp\u002F[route-path]\n\n### What to Test\n1. [Specific test case 1]\n2. [Specific test case 2]\n3. [Specific test case 3]\n","markdown",[5469],{"type":46,"tag":185,"props":5470,"children":5471},{"__ignoreMap":454},[5472,5485,5492,5500,5507,5520,5528,5535,5547,5555,5562,5574,5581,5600,5613,5626,5639,5652,5659,5675,5687,5714,5721,5733,5745,5757],{"type":46,"tag":460,"props":5473,"children":5474},{"class":462,"line":463},[5475,5480],{"type":46,"tag":460,"props":5476,"children":5477},{"style":494},[5478],{"type":52,"value":5479},"## ",{"type":46,"tag":460,"props":5481,"children":5482},{"style":791},[5483],{"type":52,"value":5484},"Implementation Complete\n",{"type":46,"tag":460,"props":5486,"children":5487},{"class":462,"line":473},[5488],{"type":46,"tag":460,"props":5489,"children":5490},{"emptyLinePlaceholder":515},[5491],{"type":52,"value":518},{"type":46,"tag":460,"props":5493,"children":5494},{"class":462,"line":511},[5495],{"type":46,"tag":460,"props":5496,"children":5497},{"style":483},[5498],{"type":52,"value":5499},"The [feature name] has been successfully implemented. Here's how to see it:\n",{"type":46,"tag":460,"props":5501,"children":5502},{"class":462,"line":521},[5503],{"type":46,"tag":460,"props":5504,"children":5505},{"emptyLinePlaceholder":515},[5506],{"type":52,"value":518},{"type":46,"tag":460,"props":5508,"children":5509},{"class":462,"line":567},[5510,5515],{"type":46,"tag":460,"props":5511,"children":5512},{"style":494},[5513],{"type":52,"value":5514},"### ",{"type":46,"tag":460,"props":5516,"children":5517},{"style":791},[5518],{"type":52,"value":5519},"Start the Development Server\n",{"type":46,"tag":460,"props":5521,"children":5522},{"class":462,"line":639},[5523],{"type":46,"tag":460,"props":5524,"children":5525},{"style":483},[5526],{"type":52,"value":5527},"[command based on package manager]\n",{"type":46,"tag":460,"props":5529,"children":5530},{"class":462,"line":685},[5531],{"type":46,"tag":460,"props":5532,"children":5533},{"emptyLinePlaceholder":515},[5534],{"type":52,"value":518},{"type":46,"tag":460,"props":5536,"children":5537},{"class":462,"line":703},[5538,5542],{"type":46,"tag":460,"props":5539,"children":5540},{"style":494},[5541],{"type":52,"value":5514},{"type":46,"tag":460,"props":5543,"children":5544},{"style":791},[5545],{"type":52,"value":5546},"Access the Admin Dashboard\n",{"type":46,"tag":460,"props":5548,"children":5549},{"class":462,"line":733},[5550],{"type":46,"tag":460,"props":5551,"children":5552},{"style":483},[5553],{"type":52,"value":5554},"Open http:\u002F\u002Flocalhost:9000\u002Fapp in your browser and log in.\n",{"type":46,"tag":460,"props":5556,"children":5557},{"class":462,"line":742},[5558],{"type":46,"tag":460,"props":5559,"children":5560},{"emptyLinePlaceholder":515},[5561],{"type":52,"value":518},{"type":46,"tag":460,"props":5563,"children":5564},{"class":462,"line":1802},[5565,5569],{"type":46,"tag":460,"props":5566,"children":5567},{"style":494},[5568],{"type":52,"value":5514},{"type":46,"tag":460,"props":5570,"children":5571},{"style":791},[5572],{"type":52,"value":5573},"View Your Custom UI\n",{"type":46,"tag":460,"props":5575,"children":5576},{"class":462,"line":1810},[5577],{"type":46,"tag":460,"props":5578,"children":5579},{"emptyLinePlaceholder":515},[5580],{"type":52,"value":518},{"type":46,"tag":460,"props":5582,"children":5583},{"class":462,"line":1819},[5584,5590,5595],{"type":46,"tag":460,"props":5585,"children":5587},{"style":5586},"--shiki-light:#39ADB5;--shiki-light-font-weight:bold;--shiki-default:#89DDFF;--shiki-default-font-weight:bold;--shiki-dark:#89DDFF;--shiki-dark-font-weight:bold",[5588],{"type":52,"value":5589},"**",{"type":46,"tag":460,"props":5591,"children":5593},{"style":5592},"--shiki-light:#E53935;--shiki-light-font-weight:bold;--shiki-default:#F07178;--shiki-default-font-weight:bold;--shiki-dark:#F07178;--shiki-dark-font-weight:bold",[5594],{"type":52,"value":5312},{"type":46,"tag":460,"props":5596,"children":5597},{"style":5586},[5598],{"type":52,"value":5599},"**\n",{"type":46,"tag":460,"props":5601,"children":5602},{"class":462,"line":1864},[5603,5608],{"type":46,"tag":460,"props":5604,"children":5605},{"style":494},[5606],{"type":52,"value":5607},"1.",{"type":46,"tag":460,"props":5609,"children":5610},{"style":483},[5611],{"type":52,"value":5612}," Navigate to [specific admin page, e.g., \"Products\"]\n",{"type":46,"tag":460,"props":5614,"children":5615},{"class":462,"line":1970},[5616,5621],{"type":46,"tag":460,"props":5617,"children":5618},{"style":494},[5619],{"type":52,"value":5620},"2.",{"type":46,"tag":460,"props":5622,"children":5623},{"style":483},[5624],{"type":52,"value":5625}," Select [an entity, e.g., \"any product\"]\n",{"type":46,"tag":460,"props":5627,"children":5628},{"class":462,"line":2007},[5629,5634],{"type":46,"tag":460,"props":5630,"children":5631},{"style":494},[5632],{"type":52,"value":5633},"3.",{"type":46,"tag":460,"props":5635,"children":5636},{"style":483},[5637],{"type":52,"value":5638}," Scroll to [zone location, e.g., \"the bottom of the page\"]\n",{"type":46,"tag":460,"props":5640,"children":5641},{"class":462,"line":2034},[5642,5647],{"type":46,"tag":460,"props":5643,"children":5644},{"style":494},[5645],{"type":52,"value":5646},"4.",{"type":46,"tag":460,"props":5648,"children":5649},{"style":483},[5650],{"type":52,"value":5651}," You'll see your \"[widget name]\" widget\n",{"type":46,"tag":460,"props":5653,"children":5654},{"class":462,"line":2046},[5655],{"type":46,"tag":460,"props":5656,"children":5657},{"emptyLinePlaceholder":515},[5658],{"type":52,"value":518},{"type":46,"tag":460,"props":5660,"children":5661},{"class":462,"line":2054},[5662,5666,5671],{"type":46,"tag":460,"props":5663,"children":5664},{"style":5586},[5665],{"type":52,"value":5589},{"type":46,"tag":460,"props":5667,"children":5668},{"style":5592},[5669],{"type":52,"value":5670},"For UI Routes:",{"type":46,"tag":460,"props":5672,"children":5673},{"style":5586},[5674],{"type":52,"value":5599},{"type":46,"tag":460,"props":5676,"children":5677},{"class":462,"line":2063},[5678,5682],{"type":46,"tag":460,"props":5679,"children":5680},{"style":494},[5681],{"type":52,"value":5607},{"type":46,"tag":460,"props":5683,"children":5684},{"style":483},[5685],{"type":52,"value":5686}," Look for \"[page label]\" in the admin navigation\n",{"type":46,"tag":460,"props":5688,"children":5689},{"class":462,"line":2093},[5690,5694,5699,5704,5709],{"type":46,"tag":460,"props":5691,"children":5692},{"style":494},[5693],{"type":52,"value":5620},{"type":46,"tag":460,"props":5695,"children":5696},{"style":483},[5697],{"type":52,"value":5698}," Or navigate directly to http:\u002F\u002Flocalhost:9000\u002Fapp\u002F",{"type":46,"tag":460,"props":5700,"children":5701},{"style":494},[5702],{"type":52,"value":5703},"[",{"type":46,"tag":460,"props":5705,"children":5706},{"style":500},[5707],{"type":52,"value":5708},"route-path",{"type":46,"tag":460,"props":5710,"children":5711},{"style":494},[5712],{"type":52,"value":5713},"]\n",{"type":46,"tag":460,"props":5715,"children":5716},{"class":462,"line":2115},[5717],{"type":46,"tag":460,"props":5718,"children":5719},{"emptyLinePlaceholder":515},[5720],{"type":52,"value":518},{"type":46,"tag":460,"props":5722,"children":5723},{"class":462,"line":2140},[5724,5728],{"type":46,"tag":460,"props":5725,"children":5726},{"style":494},[5727],{"type":52,"value":5514},{"type":46,"tag":460,"props":5729,"children":5730},{"style":791},[5731],{"type":52,"value":5732},"What to Test\n",{"type":46,"tag":460,"props":5734,"children":5735},{"class":462,"line":28},[5736,5740],{"type":46,"tag":460,"props":5737,"children":5738},{"style":494},[5739],{"type":52,"value":5607},{"type":46,"tag":460,"props":5741,"children":5742},{"style":483},[5743],{"type":52,"value":5744}," [Specific test case 1]\n",{"type":46,"tag":460,"props":5746,"children":5747},{"class":462,"line":2228},[5748,5752],{"type":46,"tag":460,"props":5749,"children":5750},{"style":494},[5751],{"type":52,"value":5620},{"type":46,"tag":460,"props":5753,"children":5754},{"style":483},[5755],{"type":52,"value":5756}," [Specific test case 2]\n",{"type":46,"tag":460,"props":5758,"children":5759},{"class":462,"line":2237},[5760,5764],{"type":46,"tag":460,"props":5761,"children":5762},{"style":494},[5763],{"type":52,"value":5633},{"type":46,"tag":460,"props":5765,"children":5766},{"style":483},[5767],{"type":52,"value":5768}," [Specific test case 3]\n",{"type":46,"tag":5770,"props":5771,"children":5772},"style",{},[5773],{"type":52,"value":5774},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":5776,"total":2034},[5777,5784,5800,5814,5826,5841,5851,5864,5881,5893,5906,5919],{"slug":4,"name":4,"fn":5,"description":6,"org":5778,"tags":5779,"stars":24,"repoUrl":25,"updatedAt":26},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5780,5781,5782,5783],{"name":16,"slug":17,"type":14},{"name":22,"slug":23,"type":14},{"name":9,"slug":8,"type":14},{"name":19,"slug":20,"type":14},{"slug":5785,"name":5785,"fn":5786,"description":5787,"org":5788,"tags":5789,"stars":24,"repoUrl":25,"updatedAt":5799},"building-storefronts","implement Medusa storefront features","Load automatically when planning, researching, or implementing Medusa storefront features (calling custom API routes, SDK integration, React Query patterns, data fetching). REQUIRED for all storefront development in ALL modes (planning, implementation, exploration). Contains SDK usage patterns, frontend integration, and critical rules for calling Medusa APIs.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5790,5791,5794,5795,5796],{"name":16,"slug":17,"type":14},{"name":5792,"slug":5793,"type":14},"Engineering","engineering",{"name":22,"slug":23,"type":14},{"name":9,"slug":8,"type":14},{"name":5797,"slug":5798,"type":14},"React","react","2026-04-06T18:29:55.957429",{"slug":4527,"name":4527,"fn":5801,"description":5802,"org":5803,"tags":5804,"stars":24,"repoUrl":25,"updatedAt":5813},"implement Medusa backend features","Load automatically when planning, researching, or implementing ANY Medusa backend features (custom modules, API routes, workflows, data models, module links, business logic). REQUIRED for all Medusa backend work in ALL modes (planning, implementation, exploration). Contains architectural patterns, best practices, and critical rules that MCP servers don't provide.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5805,5808,5811,5812],{"name":5806,"slug":5807,"type":14},"Backend","backend",{"name":5809,"slug":5810,"type":14},"Data Modeling","data-modeling",{"name":16,"slug":17,"type":14},{"name":9,"slug":8,"type":14},"2026-04-06T18:29:54.652389",{"slug":5815,"name":5815,"fn":5816,"description":5817,"org":5818,"tags":5819,"stars":24,"repoUrl":25,"updatedAt":5825},"creating-agents-in-medusa","build admin-facing AI agents in Medusa","Use when building an internal admin-facing AI agent in a Medusa project. These agents are operated by merchants and store operators — not customers. Covers data models, module service, agent runtime (tools, system prompt, streamText), streaming API routes (NDJSON), and admin UI chat extensions. Load for any internal agent type: store operations assistant, product audit, cohort analysis, customer service tooling for support staff, etc. Do NOT use for customer-facing agents (storefront chatbots, buyer-side assistants).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5820,5823,5824],{"name":5821,"slug":5822,"type":14},"Agents","agents",{"name":5806,"slug":5807,"type":14},{"name":9,"slug":8,"type":14},"2026-07-14T05:42:09.367168",{"slug":5827,"name":5827,"fn":5828,"description":5829,"org":5830,"tags":5831,"stars":24,"repoUrl":25,"updatedAt":5840},"db-generate","generate database migrations for Medusa modules","Generate database migrations for a Medusa module",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5832,5833,5836,5837],{"name":5806,"slug":5807,"type":14},{"name":5834,"slug":5835,"type":14},"Database","database",{"name":9,"slug":8,"type":14},{"name":5838,"slug":5839,"type":14},"Migration","migration","2026-04-06T18:29:53.415671",{"slug":5842,"name":5842,"fn":5843,"description":5844,"org":5845,"tags":5846,"stars":24,"repoUrl":25,"updatedAt":5850},"db-migrate","run database migrations in Medusa","Run database migrations in Medusa",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5847,5848,5849],{"name":5834,"slug":5835,"type":14},{"name":9,"slug":8,"type":14},{"name":5838,"slug":5839,"type":14},"2026-04-06T18:29:52.187377",{"slug":5852,"name":5852,"fn":5853,"description":5854,"org":5855,"tags":5856,"stars":24,"repoUrl":25,"updatedAt":5863},"learning-medusa","guide Medusa development learning","Load automatically when user asks to learn Medusa development (e.g., \"teach me how to build with medusa\", \"guide me through medusa\", \"I want to learn medusa\"). Interactive guided tutorial where Claude acts as a coding bootcamp instructor, teaching step-by-step with checkpoints and verification.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5857,5858,5859,5860],{"name":5806,"slug":5807,"type":14},{"name":16,"slug":17,"type":14},{"name":9,"slug":8,"type":14},{"name":5861,"slug":5862,"type":14},"Templates","templates","2026-04-06T18:29:58.461689",{"slug":5865,"name":5865,"fn":5866,"description":5867,"org":5868,"tags":5869,"stars":24,"repoUrl":25,"updatedAt":5880},"mcloud-deployments","manage Medusa Cloud deployments","Execute mcloud deployments commands to list deployments, retrieve deployment details, and fetch build logs. Use when listing deployments, checking deployment status, or reading build output for debugging build failures.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5870,5873,5876,5877],{"name":5871,"slug":5872,"type":14},"Deployment","deployment",{"name":5874,"slug":5875,"type":14},"Logs","logs",{"name":9,"slug":8,"type":14},{"name":5878,"slug":5879,"type":14},"Observability","observability","2026-05-09T05:40:51.727369",{"slug":5882,"name":5882,"fn":5883,"description":5884,"org":5885,"tags":5886,"stars":24,"repoUrl":25,"updatedAt":5892},"mcloud-environments","manage Medusa Cloud environments","Execute mcloud environments commands to list, get, create, delete, redeploy, or trigger builds for Cloud environments. Use when managing environment lifecycle, redeploying after variable changes, or starting new builds from source.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5887,5888,5889],{"name":5871,"slug":5872,"type":14},{"name":9,"slug":8,"type":14},{"name":5890,"slug":5891,"type":14},"Operations","operations","2026-07-17T05:31:36.384292",{"slug":5894,"name":5894,"fn":5895,"description":5896,"org":5897,"tags":5898,"stars":24,"repoUrl":25,"updatedAt":5905},"mcloud-local","reproduce Cloud builds locally","Execute mcloud local build to reproduce a Cloud build on the local machine. Use when debugging a build-failed deployment without pushing to the tracked branch, iterating on a build fix, or testing build-variable changes locally. Requires Docker and must run inside the project's Git repo.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5899,5902,5903,5904],{"name":5900,"slug":5901,"type":14},"Debugging","debugging",{"name":5871,"slug":5872,"type":14},{"name":5792,"slug":5793,"type":14},{"name":9,"slug":8,"type":14},"2026-07-17T06:05:07.199529",{"slug":5907,"name":5907,"fn":5908,"description":5909,"org":5910,"tags":5911,"stars":24,"repoUrl":25,"updatedAt":5918},"mcloud-logs","fetch and stream runtime cloud logs","Execute mcloud logs to fetch and stream runtime logs for Cloud environments. Use when reading backend or storefront logs, filtering by time range, searching for errors, or scoping logs to a specific deployment.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5912,5915,5916,5917],{"name":5913,"slug":5914,"type":14},"Cloud","cloud",{"name":5874,"slug":5875,"type":14},{"name":9,"slug":8,"type":14},{"name":5878,"slug":5879,"type":14},"2026-05-09T05:40:46.707854",{"slug":5920,"name":5920,"fn":5921,"description":5922,"org":5923,"tags":5924,"stars":24,"repoUrl":25,"updatedAt":5927},"mcloud-organizations","manage Medusa Cloud organizations","Execute mcloud organizations commands to list or get Cloud organizations. Use when discovering organizations, resolving organization IDs by name, or retrieving organization details including members and subscription.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5925,5926],{"name":9,"slug":8,"type":14},{"name":5890,"slug":5891,"type":14},"2026-05-09T05:40:54.327722",{"items":5929,"total":2034},[5930,5937,5945,5952,5958,5965,5971],{"slug":4,"name":4,"fn":5,"description":6,"org":5931,"tags":5932,"stars":24,"repoUrl":25,"updatedAt":26},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5933,5934,5935,5936],{"name":16,"slug":17,"type":14},{"name":22,"slug":23,"type":14},{"name":9,"slug":8,"type":14},{"name":19,"slug":20,"type":14},{"slug":5785,"name":5785,"fn":5786,"description":5787,"org":5938,"tags":5939,"stars":24,"repoUrl":25,"updatedAt":5799},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5940,5941,5942,5943,5944],{"name":16,"slug":17,"type":14},{"name":5792,"slug":5793,"type":14},{"name":22,"slug":23,"type":14},{"name":9,"slug":8,"type":14},{"name":5797,"slug":5798,"type":14},{"slug":4527,"name":4527,"fn":5801,"description":5802,"org":5946,"tags":5947,"stars":24,"repoUrl":25,"updatedAt":5813},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5948,5949,5950,5951],{"name":5806,"slug":5807,"type":14},{"name":5809,"slug":5810,"type":14},{"name":16,"slug":17,"type":14},{"name":9,"slug":8,"type":14},{"slug":5815,"name":5815,"fn":5816,"description":5817,"org":5953,"tags":5954,"stars":24,"repoUrl":25,"updatedAt":5825},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5955,5956,5957],{"name":5821,"slug":5822,"type":14},{"name":5806,"slug":5807,"type":14},{"name":9,"slug":8,"type":14},{"slug":5827,"name":5827,"fn":5828,"description":5829,"org":5959,"tags":5960,"stars":24,"repoUrl":25,"updatedAt":5840},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5961,5962,5963,5964],{"name":5806,"slug":5807,"type":14},{"name":5834,"slug":5835,"type":14},{"name":9,"slug":8,"type":14},{"name":5838,"slug":5839,"type":14},{"slug":5842,"name":5842,"fn":5843,"description":5844,"org":5966,"tags":5967,"stars":24,"repoUrl":25,"updatedAt":5850},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5968,5969,5970],{"name":5834,"slug":5835,"type":14},{"name":9,"slug":8,"type":14},{"name":5838,"slug":5839,"type":14},{"slug":5852,"name":5852,"fn":5853,"description":5854,"org":5972,"tags":5973,"stars":24,"repoUrl":25,"updatedAt":5863},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5974,5975,5976,5977],{"name":5806,"slug":5807,"type":14},{"name":16,"slug":17,"type":14},{"name":9,"slug":8,"type":14},{"name":5861,"slug":5862,"type":14}]