From 9987dc3cac73d570fd8c51b1d42aa886e8619d71 Mon Sep 17 00:00:00 2001 From: Vadym Raksha Date: Mon, 6 Apr 2026 14:48:13 +0200 Subject: [PATCH] [docs-infra] Add x-chat to MuiProductId type and product switcher Adds `'x-chat'` to the `MuiProductId` type union so MUI X docs can reference the Chat product without type errors. Also adds Chat to the product switcher dropdown and registers its overview route, mirroring the pattern used for the Scheduler launch. --- docs/src/modules/components/MuiProductSelector.tsx | 8 ++++++++ docs/src/route.ts | 2 ++ .../getProductInfoFromUrl/getProductInfoFromUrl.test.js | 7 +++++++ .../src/getProductInfoFromUrl/getProductInfoFromUrl.ts | 1 + packages-internal/markdown/prepareMarkdown.mjs | 3 +++ 5 files changed, 21 insertions(+) diff --git a/docs/src/modules/components/MuiProductSelector.tsx b/docs/src/modules/components/MuiProductSelector.tsx index add60d19b88cbd..1ace4e500a3589 100644 --- a/docs/src/modules/components/MuiProductSelector.tsx +++ b/docs/src/modules/components/MuiProductSelector.tsx @@ -11,6 +11,7 @@ import PageContext from '@mui/internal-core-docs/PageContext'; import SvgMuiLogomark from 'docs/src/icons/SvgMuiLogomark'; import SvgBaseUiLogo from 'docs/src/icons/SvgBaseUiLogo'; import BackupTableRoundedIcon from '@mui/icons-material/BackupTableRounded'; +import ForumRoundedIcon from '@mui/icons-material/ForumRounded'; import CalendarMonthRoundedIcon from '@mui/icons-material/CalendarMonthRounded'; import AccountTreeRoundedIcon from '@mui/icons-material/AccountTreeRounded'; import BarChartRoundedIcon from '@mui/icons-material/BarChartRounded'; @@ -186,6 +187,13 @@ const advancedProducts = [ icon: , href: ROUTES.treeViewOverview, }, + { + id: 'x-chat', + name: 'Chat', + description: 'AI-powered chat components.', + icon: , + href: ROUTES.chatOverview, + }, ]; const MuiProductSelector = React.forwardRef(function MuiProductSelector( diff --git a/docs/src/route.ts b/docs/src/route.ts index 1bc3d7d2dc1cd8..2e814ada61ea3b 100644 --- a/docs/src/route.ts +++ b/docs/src/route.ts @@ -48,6 +48,8 @@ const ROUTES = { chartsOverview: '/x/react-charts/', // Tree View doc pages treeViewOverview: '/x/react-tree-view/', + // Chat doc pages + chatOverview: '/x/react-chat/', // Toolpad pages toolpadLandingPage: '/toolpad/', toolpadStudioLandingPage: '/toolpad/studio/', diff --git a/packages-internal/core-docs/src/getProductInfoFromUrl/getProductInfoFromUrl.test.js b/packages-internal/core-docs/src/getProductInfoFromUrl/getProductInfoFromUrl.test.js index d2494796f547e5..d6ee2e29b81cf2 100644 --- a/packages-internal/core-docs/src/getProductInfoFromUrl/getProductInfoFromUrl.test.js +++ b/packages-internal/core-docs/src/getProductInfoFromUrl/getProductInfoFromUrl.test.js @@ -64,6 +64,13 @@ describe('getProductInfoFromUrl', () => { }); }); + it('should handle MUI X Chat', () => { + expect(getProductInfoFromUrl('/x/react-chat/components')).to.deep.equal({ + productCategoryId: 'x', + productId: 'x-chat', + }); + }); + it('should handle MUI X', () => { expect(getProductInfoFromUrl('/x/migration/migration-data-grid-v5/')).to.deep.equal({ productCategoryId: 'x', diff --git a/packages-internal/core-docs/src/getProductInfoFromUrl/getProductInfoFromUrl.ts b/packages-internal/core-docs/src/getProductInfoFromUrl/getProductInfoFromUrl.ts index 68c6fcfe48f03c..9e238eb00dbfa5 100644 --- a/packages-internal/core-docs/src/getProductInfoFromUrl/getProductInfoFromUrl.ts +++ b/packages-internal/core-docs/src/getProductInfoFromUrl/getProductInfoFromUrl.ts @@ -12,6 +12,7 @@ export type MuiProductId = | 'x-charts' | 'x-tree-view' | 'x-scheduler' + | 'x-chat' | 'toolpad-studio' | 'toolpad-core'; diff --git a/packages-internal/markdown/prepareMarkdown.mjs b/packages-internal/markdown/prepareMarkdown.mjs index 2b2118bac260a0..f5e34251b84db6 100644 --- a/packages-internal/markdown/prepareMarkdown.mjs +++ b/packages-internal/markdown/prepareMarkdown.mjs @@ -44,6 +44,9 @@ function resolveComponentApiUrl(productId, componentPkg, component) { if (productId === 'x-scheduler') { return `/x/api/scheduler/${kebabCase(component)}/`; } + if (productId === 'x-chat') { + return `/x/api/chat/${kebabCase(component)}/`; + } if (componentPkg === 'mui-base' || BaseUIReexportedComponents.includes(component)) { return `/base-ui/react-${kebabCase(component)}/components-api/#${kebabCase(component)}`; }