diff --git a/.circleci/config.yml b/.circleci/config.yml
index 2b00a64a8219ed..4957511907cb86 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -234,12 +234,6 @@ jobs:
- run:
name: '`yarn docs:i18n` changes committed?'
command: git diff --exit-code
- - run:
- name: '`yarn framer:build` changes committed?'
- command: yarn workspace framer build
- - run:
- name: '`yarn workspace framer build` changes committed?'
- command: git diff --exit-code
- run:
name: '`yarn extract-error-codes` changes committed?'
command: |
diff --git a/.eslintignore b/.eslintignore
index b9130ad1f4b84b..994e23efd8ff66 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -7,8 +7,6 @@
/examples/gatsby/public/
/examples/preact/config
/examples/preact/scripts
-# auto-generated by Framer
-/framer/Material-UI.framerfx/design/document.json
/packages/mui-codemod/lib
/packages/mui-codemod/src/*/*.test/*
/packages/mui-icons-material/fixtures
diff --git a/.eslintrc.js b/.eslintrc.js
index 0c8198b47cc3a6..fee270cca4bfe3 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -343,13 +343,6 @@ module.exports = {
'react/static-property-placement': 'off',
},
},
- {
- files: ['framer/Material-UI.framerfx/code/**/*.tsx'],
- rules: {
- // framer requires named exports
- 'import/prefer-default-export': 'off',
- },
- },
{
files: ['packages/typescript-to-proptypes/src/**/*.ts'],
rules: {
diff --git a/CHANGELOG.md b/CHANGELOG.md
index e83922f98029c0..5326a22dcc3acd 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,70 @@
# [Versions](https://mui.com/versions/)
+## 5.4.2
+
+_Feb 15, 2022_
+
+A big thanks to the 16 contributors who made this release possible. Here are some highlights ✨:
+
+- 🛠 @sydneyjodon-wk improved propTypes of the ToggleButton components (#30883)
+- Several 🐛 bug fixes and 📚 documentation improvements
+
+### `@mui/material@5.4.2`
+
+- [Select] Allow customizing Select based on its variant (#30788) @michaldudak
+- [Portal] Re-export 'Portal' in material (#31003) @liradb2000
+- [ToggleButton] Add prop types for `onClick` and `onChange` (#30883) @sydneyjodon-wk
+- [Typescript] Added TypeText declaration to the exports file (#30890) @agauravdev
+
+### `@mui/system@5.4.2`
+
+- [system] Fix broken behavior when breakpoints input are not ordered (#30996) @mnajdova
+
+### `@mui/lab@5.0.0-alpha.69`
+
+- [DatePicker] Fix passing clearable prop (#30786) @alisasanib
+
+### `@mui/joy@5.0.0-alpha.15`
+
+- [Joy] Improve variant customization experience (#30878) @siriwatknp
+- [Joy] Make `sx` prop work in Joy (#30955) @siriwatknp
+
+### Framer
+
+- [design] Remove framer components (#30983) @mbrookes
+- [design] Remove framer leftovers (#31070) @michaldudak
+
+### Docs
+
+- [docs] Update installation guide of the icons package (#31026) @huyenltnguyen
+- [docs] Improve the indication for the legacy APIs (#30995) @mnajdova
+- [docs] Specify which props are added in the default `shouldForwardProp` option (#30978) @mnajdova
+- [docs] Fix layout shift on loading (#31017) @oliviertassinari
+- [docs] Increase scroll affordance in wide tables (#30713) @danilo-leal
+- [docs] Fix look & feel of the Masonry demos (#30971) @oliviertassinari
+- [docs] Improve Base component demos (#30884) @danilo-leal
+- [docs] Use full product names (Material UI, MUI System) (#30960) @oliviertassinari
+- [docs] Prefer useEnhancedEffect to avoid server side warnings (#30977) @mnajdova
+- [docs] Fix force redirection to a different locale (#30967) @oliviertassinari
+- [docs] Add live Tailwind CSS demo (#30966) @oliviertassinari
+- [website] Add banner for promoting priority open roles (#31076) @danilo-leal
+- [website] Open Full-stack Engineer role for studio (#31038) @newguy-123
+- [website] Minor security improvements (#31062) @oliviertassinari
+- [website] Improve title of open roles (#30963) @DanailH
+- [website] Add BIMI avatar (#30444) @oliviertassinari
+- [website] Add Sycamore to About page (#31000) @samuelsycamore
+
+### Core
+
+- [benchmark] Add missing dependency (#30994) @michaldudak
+- [core] Bump date-io version (#31016) @michaldudak
+- [core] Fix typo in useSlider (#31061) @ryohey
+- [core] Remove unused draft-js types package (#30993) @michaldudak
+- [test] Test if certain Base members are exported from Material UI (#31067) @michaldudak
+- [core] Remove dead code (#31064) @oliviertassinari
+
+All contributors of this release in alphabetical order: @agauravdev, @alisasanib, @DanailH, @danilo-leal, @huyenltnguyen, @l10nbot, @liradb2000, @mbrookes, @michaldudak, @mnajdova, @newguy-123, @oliviertassinari, @ryohey, @samuelsycamore, @siriwatknp, @sydneyjodon-wk
+
## 5.4.1
diff --git a/benchmark/package.json b/benchmark/package.json
index ca1fda90044750..66435989674038 100644
--- a/benchmark/package.json
+++ b/benchmark/package.json
@@ -15,9 +15,9 @@
"@emotion/react": "^11.7.1",
"@emotion/styled": "^11.6.0",
"@mdx-js/react": "^2.0.0",
- "@mui/material": "^5.4.1",
- "@mui/styles": "^5.4.1",
- "@mui/system": "^5.4.1",
+ "@mui/material": "^5.4.2",
+ "@mui/styles": "^5.4.2",
+ "@mui/system": "^5.4.2",
"@styled-system/css": "^5.1.5",
"benchmark": "^2.1.4",
"playwright": "^1.17.1",
diff --git a/docs/data/material/components/accordion/accordion-zh.md b/docs/data/material/components/accordion/accordion-zh.md
index 4d4459b5d803a8..850069de3a2faf 100644
--- a/docs/data/material/components/accordion/accordion-zh.md
+++ b/docs/data/material/components/accordion/accordion-zh.md
@@ -2,7 +2,7 @@
product: material
title: React Accordion (扩展面板)组件
components: Accordion, AccordionActions, AccordionDetails, AccordionSummary
-githubLabel: 'component: Accordion'
+githubLabel: 'component: accordion'
materialDesign: https://material.io/archive/guidelines/components/expansion-panels.html
waiAria: 'https://www.w3.org/TR/wai-aria-practices/#accordion'
---
@@ -41,7 +41,7 @@ waiAria: 'https://www.w3.org/TR/wai-aria-practices/#accordion'
```
-不过对所有情况下的性能优化,这并不是灵丹妙药。 Be sure to identify bottlenecks first and then try out these optimization strategies.
+不过对所有情况下的性能优化,这并不是灵丹妙药。 一定要先确定哪些地方存在瓶颈,然后再尝试这些优化策略。
## 无障碍设计
diff --git a/docs/data/material/components/alert/alert-zh.md b/docs/data/material/components/alert/alert-zh.md
index c5c36d29ec7200..0307fcba047a96 100644
--- a/docs/data/material/components/alert/alert-zh.md
+++ b/docs/data/material/components/alert/alert-zh.md
@@ -2,7 +2,7 @@
product: material
title: React Alert (警告提示)组件
components: Alert, AlertTitle
-githubLabel: 'component: Alert'
+githubLabel: 'component: alert'
waiAria: 'https://www.w3.org/TR/wai-aria-practices/#alert'
---
diff --git a/docs/data/material/components/app-bar/app-bar-zh.md b/docs/data/material/components/app-bar/app-bar-zh.md
index 90625d23a0173f..cd64db23fcf249 100644
--- a/docs/data/material/components/app-bar/app-bar-zh.md
+++ b/docs/data/material/components/app-bar/app-bar-zh.md
@@ -136,7 +136,7 @@ function HideOnScroll(props) {
const trigger = useScrollTrigger();
return (
-
你好
+
Hello
);
}
diff --git a/docs/data/material/components/autocomplete/autocomplete-zh.md b/docs/data/material/components/autocomplete/autocomplete-zh.md
index df97d4dd550ce4..2be3b61c6379e9 100644
--- a/docs/data/material/components/autocomplete/autocomplete-zh.md
+++ b/docs/data/material/components/autocomplete/autocomplete-zh.md
@@ -281,12 +281,7 @@ const filterOptions = (options, { inputValue }) => matchSorter(options, inputVal
{
if (event.key === 'Enter') {
- // 阻止默认的 'Enter' 行为.
- event.defaultMuiPrevented = true;
- // 你的处理程序代码
- }
- }}
-/>
+ // Prevent's default 'Enter' behavior.
event.defaultMuiPrevented = true;
// your handler code
}
diff --git a/docs/data/material/components/avatars/avatars-zh.md b/docs/data/material/components/avatars/avatars-zh.md
index 4f376d54276715..9133e9cf792237 100644
--- a/docs/data/material/components/avatars/avatars-zh.md
+++ b/docs/data/material/components/avatars/avatars-zh.md
@@ -23,7 +23,7 @@ githubLabel: 'component: avatar'
{{"demo": "LetterAvatars.js"}}
-You can use different background colors for the avatar. The following demo generates the color based on the name of the person.
+你可以为头像添加不同的背景颜色。 下面的例子基于人物的姓名生成背景色。
{{"demo": "BackgroundLetterAvatars.js"}}
@@ -57,13 +57,13 @@ You can use different background colors for the avatar. The following demo gener
## 分组
-`AvatarGroup` renders its children as a stack. `AvatarGroup` renders its children as a stack. Use the `max` prop to limit the number of avatars.
+`AvatarGroup` 将其子元素渲染为堆栈。 用 `max` 属性限制渲染的头像数量。
{{"demo": "GroupAvatars.js"}}
-### Total avatars
+### 头像总数
-If you need to control the total number of avatars not shown, you can use the `total` prop.
+您可以使用 `total` 属性来控制未显示的头像总数。
{{"demo": "TotalAvatars.js"}}
diff --git a/docs/data/material/components/backdrop/backdrop-zh.md b/docs/data/material/components/backdrop/backdrop-zh.md
index 01fbddecbc66bf..cc02b0d6603a0b 100644
--- a/docs/data/material/components/backdrop/backdrop-zh.md
+++ b/docs/data/material/components/backdrop/backdrop-zh.md
@@ -1,8 +1,8 @@
---
product: material
-title: React Backdrop(背景暗化)组件
+title: React Backdrop(蒙版)组件
components: Backdrop, BackdropUnstyled
-githubLabel: '组件:背景暗化'
+githubLabel: 'component: backdrop'
---
# 蒙版
@@ -19,7 +19,7 @@ githubLabel: '组件:背景暗化'
## 素颜模式
-The backdrop also comes with the Base package. The backdrop also comes with the unstyled package. It's ideal for doing heavy customizations and minimizing bundle size. It's ideal for doing heavy customizations and minimizing bundle size.
+蒙版组件同样来自基础包。 当你有大量的自定义样式需求时,使用它可以更好的帮助你控制住包的大小。
```js
import BackdropUnstyled from '@mui/base/BackdropUnstyled';
diff --git a/docs/data/material/components/badges/badges-zh.md b/docs/data/material/components/badges/badges-zh.md
index cbdb9ee852c01c..9a0815f800429f 100644
--- a/docs/data/material/components/badges/badges-zh.md
+++ b/docs/data/material/components/badges/badges-zh.md
@@ -65,7 +65,7 @@ Use `color` prop to apply theme palette to component.
## Unstyled
-Badge 组件还有一个无样式的版本。 It's ideal for doing heavy customizations and minimizing bundle size.
+Badge 组件还有一个无样式的版本。 当你有大量的自定义样式需求时,使用它可以更好的帮助你控制住包的大小。
```js
import BadgeUnstyled from '@mui/base/BadgeUnstyled';
@@ -75,6 +75,6 @@ import BadgeUnstyled from '@mui/base/BadgeUnstyled';
## Accessibility
-You can't rely on the content of the badge to be announced correctly. You can't rely on the content of the badge to be announced correctly. You should provide a full description, for instance, with `aria-label`: 那您应该提供一个完整的描述,例如, 使用 `aria-label`:
+您不能指望徽章的内容被正确的读出。 您应该提供一个完整的描述,例如, 使用 `aria-label`:
{{"demo": "AccessibleBadges.js"}}
diff --git a/docs/data/material/components/bottom-navigation/bottom-navigation-zh.md b/docs/data/material/components/bottom-navigation/bottom-navigation-zh.md
index 24c0212fdd8d40..91f9b11a3c75c6 100644
--- a/docs/data/material/components/bottom-navigation/bottom-navigation-zh.md
+++ b/docs/data/material/components/bottom-navigation/bottom-navigation-zh.md
@@ -32,6 +32,6 @@ materialDesign: https://material.io/components/bottom-navigation
{{"demo": "FixedBottomNavigation.js", "bg": true, "iframe": true, "maxWidth": 600}}
-## Third-party routing library(第三方路由库)
+## 第三方路由库
-One frequent use case is to perform navigation on the client only, without an HTTP round-trip to the server. The `BottomNavigationAction` component provides the `component` prop to handle this use case. Here is a [more detailed guide](/guides/routing/).
+一种常见的用例是仅在客户端上执行导航,而无需通过 HTTP 往返服务器。 针对这种用法,`Link` 组件了提供 `component` 属性来适配它。 这里是 [更详细的指南](/guides/routing/)。
diff --git a/docs/data/material/components/box/box-zh.md b/docs/data/material/components/box/box-zh.md
index 160d56fff3ab1b..df3389168923c3 100644
--- a/docs/data/material/components/box/box-zh.md
+++ b/docs/data/material/components/box/box-zh.md
@@ -18,19 +18,19 @@ githubLabel: 'component: Box'
## `sx` 属性
-All system properties are available via the [`sx` prop](/system/basics/#the-sx-prop). In addition, the `sx` prop allows you to specify any other CSS rules you may need. 下面是一个如何使用的示例: 此外,`sx` 属性允许您指定您可能需要的任何其他 CSS 样式。 In addition, the `sx` prop allows you to specify any other CSS rules you may need. 下面是一个如何使用的示例:
+所有的样式功能都可以通过 [`sx` 属性 ](/system/basics/#the-sx-prop)设置。 同时,您也可通过`sx` 属性指定任何您想添加的 CSS 规则。 下面是一个如何使用的示例:
{{"demo": "BoxSx.js", "defaultCodeOpen": true }}
## 覆盖 Material-UI 组件
-Box 组件能够封装您的组件。 It creates a new DOM element, a `
` that by default can be changed with the `component` prop. 假设反之你想使用一个 ``: 假设反之你想使用一个 ``:
+Box 组件能够封装您的组件。 它创建了一个新的 DOM 元素,默认情况下为 `
`,并可以通过 ` component ` 属性进行更改。 假设您想使用 ``:
{{"demo": "BoxComponent.js", "defaultCodeOpen": true }}
当所需的更改与新的 DOM 元素分开时比较有效。 例如,您可以使用这个方法来更改边距。
-但是,有时您必须针对到底层的 DOM 元素。 As an example, you may want to change the border of the Button. The Button component defines its own styles. 所以使用 CSS 继承是于事无补的。 想要解决这个问题,可以将[`sx`](/system/basics/#the-sx-prop)作为 MUI 组件的 props 使用
+但是,有时您的目标是下层的 DOM 元素。 例如,你可能想要更改 Button 组件的边框。 Button 组件已经定义好了它自己的样式。 所以使用 CSS 继承是于事无补的。 为了回避这个CSS继承无效的问题, 如该组件的子组件是一个 Material-UI 组件,您可直接在该组件上定义 [`sx`](/system/basics/#the-sx-prop) 属性。
```diff
-
@@ -39,7 +39,7 @@ Box 组件能够封装您的组件。 It creates a new DOM element, a `
` th
+
```
-For non-Material-UI components, use the `component` prop.
+对于非 MUI 组件,使用 `component` 属性。
```diff
-
diff --git a/docs/data/material/components/chips/chips.md b/docs/data/material/components/chips/chips.md
index 4404e6f7f114c4..af68f794013dc7 100644
--- a/docs/data/material/components/chips/chips.md
+++ b/docs/data/material/components/chips/chips.md
@@ -55,7 +55,7 @@ You can use the following actions.
You can add ornaments to the beginning of the component.
-Use the `avatar` prop to added a avatar or use the `icon` prop to added a icon.
+Use the `avatar` prop to add an avatar or use the `icon` prop to add an icon.
### Avatar chip
diff --git a/docs/data/material/components/icons/icons.md b/docs/data/material/components/icons/icons.md
index 2e415cc3ec7bea..310a418b04f658 100644
--- a/docs/data/material/components/icons/icons.md
+++ b/docs/data/material/components/icons/icons.md
@@ -36,15 +36,7 @@ yarn add @mui/icons-material
These components use the MUI `SvgIcon` component to render the SVG path for each icon, and so have a peer-dependency on `@mui/material`.
-If you aren't already using MUI in your project, you can add it with:
-
-```sh
-// with npm
-npm install @mui/material
-
-// with yarn
-yarn add @mui/material
-```
+If you aren't already using Material UI in your project, you can add it following the [installation guide](/getting-started/installation/).
### Usage
diff --git a/docs/data/material/components/stack/stack-pt.md b/docs/data/material/components/stack/stack-pt.md
index 0dc3c6dfe75968..b63f82dc2b00d9 100644
--- a/docs/data/material/components/stack/stack-pt.md
+++ b/docs/data/material/components/stack/stack-pt.md
@@ -7,7 +7,7 @@ githubLabel: 'component: Stack'
# Stack
-
The Stack component manages layout of immediate children along the vertical or horizontal axis with optional spacing and/or dividers between each child.
+
O componente Stack gerencia o leiaute de filhos imediatos ao longo do eixo vertical ou horizontal com espaçamento e/ou divisão opcional entre cada filho.
{{"component": "modules/components/ComponentLinkHeader.js"}}
diff --git a/docs/data/material/getting-started/example-projects/example-projects-pt.md b/docs/data/material/getting-started/example-projects/example-projects-pt.md
index 8503463c0c49d4..3c1bd2b7d7a7c3 100644
--- a/docs/data/material/getting-started/example-projects/example-projects-pt.md
+++ b/docs/data/material/getting-started/example-projects/example-projects-pt.md
@@ -8,14 +8,14 @@ Você pode encontrar alguns exemplos de projetos no repositório [GitHub](https:
-- [Next.js](https://github.com/mui/material-ui/tree/next/examples/nextjs) ([Versão TypeScript](https://github.com/mui/material-ui/tree/next/examples/nextjs-with-typescript))
-- [Create React App](https://github.com/mui/material-ui/tree/next/examples/create-react-app) ([versão TypeScript](https://github.com/mui/material-ui/tree/next/examples/create-react-app-with-typescript))
+- [Next.js](https://github.com/mui/material-ui/tree/master/examples/nextjs) ([TypeScript version](https://github.com/mui/material-ui/tree/master/examples/nextjs-with-typescript))
+- [Create React App](https://github.com/mui/material-ui/tree/master/examples/create-react-app) ([TypeScript version](https://github.com/mui/material-ui/tree/master/examples/create-react-app-with-typescript))
- [Remix](https://github.com/mui/material-ui/tree/master/examples/remix-with-typescript)
- [Gatsby](https://github.com/mui/material-ui/tree/master/examples/gatsby)
- [Preact](https://github.com/mui/material-ui/tree/master/examples/preact)
- [CDN](https://github.com/mui/material-ui/tree/master/examples/cdn)
- [Plain server-side](https://github.com/mui/material-ui/tree/master/examples/ssr)
-- [Tailwind CSS](https://github.com/mui/material-ui/tree/master/examples/tailwind)
+- [Tailwind CSS](https://github.com/mui/material-ui/tree/master/examples/tailwind-css)
- [Vite.js](https://github.com/mui/material-ui/tree/master/examples/vitejs)
- [Use styled-components as style engine](https://github.com/mui/material-ui/tree/master/examples/create-react-app-with-styled-components) ([TypeScript version](https://github.com/mui/material-ui/tree/master/examples/create-react-app-with-styled-components-typescript))
diff --git a/docs/data/material/getting-started/example-projects/example-projects-zh.md b/docs/data/material/getting-started/example-projects/example-projects-zh.md
index 467302683d1b82..1effbe63e98cab 100644
--- a/docs/data/material/getting-started/example-projects/example-projects-zh.md
+++ b/docs/data/material/getting-started/example-projects/example-projects-zh.md
@@ -15,7 +15,7 @@
- [Preact](https://github.com/mui/material-ui/tree/master/examples/preact)
- [CDN](https://github.com/mui/material-ui/tree/master/examples/cdn)
- [Plain server-side](https://github.com/mui/material-ui/tree/master/examples/ssr)
-- [Tailwind CSS](https://github.com/mui/material-ui/tree/master/examples/tailwind)
+- [Tailwind CSS](https://github.com/mui/material-ui/tree/master/examples/tailwind-css)
- [Vite.js](https://github.com/mui/material-ui/tree/master/examples/vitejs)
- [Use styled-components as style engine](https://github.com/mui/material-ui/tree/master/examples/create-react-app-with-styled-components) ([TypeScript version](https://github.com/mui/material-ui/tree/master/examples/create-react-app-with-styled-components-typescript))
diff --git a/docs/data/material/getting-started/faq/faq-zh.md b/docs/data/material/getting-started/faq/faq-zh.md
index 9648a166e39f79..1243d4cf487c05 100644
--- a/docs/data/material/getting-started/faq/faq-zh.md
+++ b/docs/data/material/getting-started/faq/faq-zh.md
@@ -28,7 +28,7 @@
涟漪效果完全来自 `BaseButton` 组件。 您可以通过在您的主题中提供以下内容,来全局地禁用涟漪效果:
```js
-import { createTheme } from '@material-ui/core';
+import { createTheme } from '@mui/material';
const theme = createTheme({
components: {
@@ -40,14 +40,6 @@ const theme = createTheme({
},
},
},
-});
- },
- },
- },
-});
- },
- },
- },
});
```
@@ -56,7 +48,7 @@ const theme = createTheme({
Material-UI 使用相同的主题助手来创建其所有的过渡动画。 因此,您可以通过覆盖主题助手来禁用所有的过渡:
```js
-import { createTheme } from '@material-ui/core';
+import { createTheme } from '@mui/material';
const theme = createTheme({
transitions: {
@@ -71,7 +63,7 @@ const theme = createTheme({
您可以更进一步地禁用所有的过渡和动画效果。
```js
-import { createTheme } from '@material-ui/core';
+import { createTheme } from '@mui/material';
const theme = createTheme({
components: {
@@ -166,7 +158,7 @@ const element = ref.current;
```diff
resolve: {
+ alias: {
-+ "@material-ui/styles": path.resolve(appFolder, "node_modules", "@material-ui/styles"),
++ "@mui/styles": path.resolve(appFolder, "node_modules", "@mui/styles"),
+ }
}
```
@@ -208,7 +200,7 @@ Lerna 根目录下的 package.json 文件示例:
```diff
module.exports = {
entry: {
-+ vendor: ["@material-ui/styles"],
++ vendor: ["@mui/styles"],
app1: "./src/app.1.js",
app2: "./src/app.2.js",
},
@@ -305,14 +297,6 @@ return (
selected ? 'Mui-selected' : ''
}`}
/>
-); 'Mui-disabled' : ''} ${
- selected ? 'Mui-selected' : ''
- }`}
- />
-); 'Mui-disabled' : ''} ${
- selected ? 'Mui-selected' : ''
- }`}
- />
);
```
@@ -416,16 +400,10 @@ The class names value relies on the concept of [class name generator](/styles/ad
```diff
"dependencies": {
...
- "dependencies": {
- ...
- "dependencies": {
- ...
- - "@material-ui/core": "^4.0.0",
- + "@material-ui/core": "4.0.0",
+ - "@mui/material": "^4.0.0",
+ + "@mui/material": "4.0.0",
...
},
- },
- },
```
- 请确保服务端和客户端之间所共享的是相同的 `process.env.NODE_ENV` 值。
diff --git a/docs/data/material/getting-started/support/support.md b/docs/data/material/getting-started/support/support.md
index 84230fd532cb4b..fd0ba5f6a9500a 100644
--- a/docs/data/material/getting-started/support/support.md
+++ b/docs/data/material/getting-started/support/support.md
@@ -52,23 +52,7 @@ Receive the latest news on MUI.
### Supported versions
-MUI Core has been open-source ([MIT](https://tldrlegal.com/license/mit-license)) since the very beginning, and always will be.
-Developers can ensure MUI is the right choice for their React applications through MUI's community maintenance strategy.
-The MUI team regularly ships new releases, bug fixes, and is very welcoming to community pull requests.
-
-Given the reality of time and resource constraints, as well as the desire to keep innovating, over time it becomes necessary to shift focus to newer versions of the framework ([our release schedule](https://mui.com/versions/#release-frequency)), while making the transition to newer versions as smooth as possible, including publishing migration guides such as [this one for v5](/guides/migration-v4/).
-The open-source community is always welcome to submit new features and bug fixes as well.
-
-The current status of each MUI version is as follows:
-
-- MUI Core v5 (emotion): ✅ In active development.
-- MUI Core v4 (hooks): ⚠️ Only handle security fixes.
-- MUI Core v3 (change supported browsers): ❌ Inactive.
-- ~MUI Core v2 (never existed)~.
-- MUI Core v1 (rewrite): ❌ Inactive.
-- MUI Core v0.x: ❌ Inactive.
-
-For teams and organizations that require additional support for older versions, MUI has [options available](#professional-support-premium).
+Find details on the [supported versions](/versions/#supported-versions).
## Professional support (premium)
diff --git a/docs/data/material/getting-started/usage/usage-zh.md b/docs/data/material/getting-started/usage/usage-zh.md
index 26eadc68b26b6c..c7d3024178d06d 100644
--- a/docs/data/material/getting-started/usage/usage-zh.md
+++ b/docs/data/material/getting-started/usage/usage-zh.md
@@ -13,7 +13,7 @@ MUI components work in isolation. MUI components work in isolation. **它们是
```jsx
import * as React from 'react';
import ReactDOM from 'react-dom';
-import Button from '@material-ui/core/Button';
+import Button from '@mui/material/Button';
function App() {
return ;
diff --git a/docs/data/material/guides/interoperability/interoperability-pt.md b/docs/data/material/guides/interoperability/interoperability-pt.md
index 32f826c1854baa..388855827d6fc9 100644
--- a/docs/data/material/guides/interoperability/interoperability-pt.md
+++ b/docs/data/material/guides/interoperability/interoperability-pt.md
@@ -594,10 +594,12 @@ Funciona exatamente como styled components. Você pode [usar o mesmo guia](/guid
![stars](https://img.shields.io/github/stars/tailwindlabs/tailwindcss.svg?style=social&label=Star) ![npm](https://img.shields.io/npm/dm/tailwindcss)
+### Setup
+
If you are used to Tailwind CSS and want to use it together with the MUI components, you can start by cloning the [Tailwind CSS](https://github.com/mui/material-ui/tree/master/examples/tailwind) example project. If you use a different framework, or already have set up your project, follow these steps:
1. Add Tailwind CSS to your project, following the instructions in https://tailwindcss.com/docs/installation.
-2. Remove Tailwind's `base` directive in favor of the `CSSBaseline` component provided by `@mui/material`, as it plays nicer with the MUI components.
+2. Remove Tailwind's `base` directive in favor of the `CssBaseline` component provided by `@mui/material`, as it plays nicer with the MUI components.
**index.css**
@@ -607,7 +609,7 @@ If you are used to Tailwind CSS and want to use it together with the MUI compone
@tailwind utilities;
```
-3. Add the `important` option, using the id of your app wrapper, for example `"#root"`.
+3. Add the `important` option, using the id of your app wrapper. For example, `#__next` for Next.js and `"#root"` for CRA:
**tailwind.config.js**
@@ -625,11 +627,9 @@ If you are used to Tailwind CSS and want to use it together with the MUI compone
```
-This is necessary for ensuring that the [deeper elements](#deeper-elements-5), can be customized using Tailwind's utility classes. More details on this option can be found here https://tailwindcss.com/docs/configuration#selector-strategy
-
-4. Fix the CSS injection order
+Most of the CSS used by Material UI has as specificity of 1, hence this `important` property is unnecessary. However, in a few edge cases, MUI uses nested CSS selectors that win over Tailwind CSS. Use this step to help ensure that the [deeper elements](#deeper-elements-5) can always be customized using Tailwind's utility classes. More details on this option can be found here https://tailwindcss.com/docs/configuration#selector-strategy
-**Note:** Most CSS-in-JS solutions inject their styles at the bottom of the HTML ``, which gives MUI precedence over your custom styles. To remove the need for **!important**, you need to change the CSS injection order. Here's a demo of how it can be done in MUI:
+4. Fix the CSS injection order. Most CSS-in-JS solutions inject their styles at the bottom of the HTML ``, which gives MUI precedence over Tailwind CSS. To reduce the need for the `important` property, you need to change the CSS injection order. Here's a demo of how it can be done in MUI:
```jsx
import * as React from 'react';
@@ -670,9 +670,15 @@ export default function CssModulesPriority() {
**Note:** If you are using styled-components and have `StyleSheetManager` with a custom `target`, make sure that the target is the first element in the HTML ``. If you are curious to see how it can be done, you can take a look at the [`StyledEngineProvider`](https://github.com/mui/material-ui/blob/master/packages/mui-styled-engine-sc/src/StyledEngineProvider/StyledEngineProvider.js) implementation in the `@mui/styled-engine-sc` package.
+### Usage
+
Now it's all set up and you can start using Tailwind CSS on the MUI components!
-**App.js**
+{{"demo": "StyledComponents.js", "hideToolbar": true}}
+
+[![Edit on StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/edit/github-ndkshy?file=pages%2Findex.tsx)
+
+**index.tsx**
```jsx
import * as React from 'react';
@@ -681,7 +687,8 @@ import Slider from '@mui/material/Slider';
export default function App() {
return (
-
+
+
);
}
@@ -691,9 +698,11 @@ export default function App() {
If you attempt to style the Slider, for example, you'll likely want to customize its child elements.
-This example showcases how to override the Slider's `thumb`style.
+This example showcases how to override the Slider's `thumb` style.
-**SliderThumbOverrides.js**
+{{"demo": "StyledComponentsDeep.js", "hideToolbar": true}}
+
+**SliderThumbOverrides.tsx**
```jsx
import * as React from 'react';
@@ -701,10 +710,14 @@ import Slider from '@mui/material/Slider';
export default function SliderThumbOverrides() {
return (
-
+
+
+
+
);
}
```
@@ -713,14 +726,14 @@ export default function SliderThumbOverrides() {
If you want to style a component's pseudo-state, you can use the appropriate key in the `classes` prop. Here is an example of how you can style the Slider's active state:
-**SliderPseudoStateOverrides.js**
+**SliderPseudoStateOverrides.tsx**
```jsx
import * as React from 'react';
import Slider from '@mui/material/Slider';
export default function SliderThumbOverrides() {
- return ;
+ return ;
}
```
diff --git a/docs/data/material/guides/interoperability/interoperability-zh.md b/docs/data/material/guides/interoperability/interoperability-zh.md
index 5bbfa031bf5777..200a6a05650a2f 100644
--- a/docs/data/material/guides/interoperability/interoperability-zh.md
+++ b/docs/data/material/guides/interoperability/interoperability-zh.md
@@ -588,10 +588,12 @@ Emotion 的 **css()** 方法与 Material-UI 无缝协作。
![stars](https://img.shields.io/github/stars/tailwindlabs/tailwindcss.svg?style=social&label=Star) ![npm](https://img.shields.io/npm/dm/tailwindcss)
+### Setup
+
If you are used to Tailwind CSS and want to use it together with the MUI components, you can start by cloning the [Tailwind CSS](https://github.com/mui/material-ui/tree/master/examples/tailwind) example project. If you use a different framework, or already have set up your project, follow these steps:
1. Add Tailwind CSS to your project, following the instructions in https://tailwindcss.com/docs/installation.
-2. Remove Tailwind's `base` directive in favor of the `CSSBaseline` component provided by `@mui/material`, as it plays nicer with the MUI components.
+2. Remove Tailwind's `base` directive in favor of the `CssBaseline` component provided by `@mui/material`, as it plays nicer with the MUI components.
**index.css**
@@ -601,7 +603,7 @@ If you are used to Tailwind CSS and want to use it together with the MUI compone
@tailwind utilities;
```
-3. Add the `important` option, using the id of your app wrapper, for example `"#root"`.
+3. Add the `important` option, using the id of your app wrapper. For example, `#__next` for Next.js and `"#root"` for CRA:
**tailwind.config.js**
@@ -619,11 +621,9 @@ If you are used to Tailwind CSS and want to use it together with the MUI compone
```
-This is necessary for ensuring that the [deeper elements](#deeper-elements-5), can be customized using Tailwind's utility classes. More details on this option can be found here https://tailwindcss.com/docs/configuration#selector-strategy
-
-4. Fix the CSS injection order
+Most of the CSS used by Material UI has as specificity of 1, hence this `important` property is unnecessary. However, in a few edge cases, MUI uses nested CSS selectors that win over Tailwind CSS. Use this step to help ensure that the [deeper elements](#deeper-elements-5) can always be customized using Tailwind's utility classes. More details on this option can be found here https://tailwindcss.com/docs/configuration#selector-strategy
-**Note:** Most CSS-in-JS solutions inject their styles at the bottom of the HTML ``, which gives MUI precedence over your custom styles. To remove the need for **!important**, you need to change the CSS injection order. Here's a demo of how it can be done in MUI:
+4. Fix the CSS injection order. Most CSS-in-JS solutions inject their styles at the bottom of the HTML ``, which gives MUI precedence over Tailwind CSS. To reduce the need for the `important` property, you need to change the CSS injection order. Here's a demo of how it can be done in MUI:
```jsx
import * as React from 'react';
@@ -662,11 +662,17 @@ export default function PlainCssPriority() {
}
```
-**Note:** If you are using styled-components and have `StyleSheetManager` with a custom `target`, make sure that the target is the first element in the HTML ``. If you are curious to see how it can be done, you can take a look on the `StylesProvider` implementation in the `@material-ui/styled-engine-sc` package. If you are curious to see how it can be done, you can take a look on the `StylesProvider` implementation in the `@mui/styled-engine-sc` package. If you are curious to see how it can be done, you can take a look at the [`StyledEngineProvider`](https://github.com/mui/material-ui/blob/master/packages/mui-styled-engine-sc/src/StyledEngineProvider/StyledEngineProvider.js) implementation in the `@mui/styled-engine-sc` package.
+**Note:** If you are using styled-components and have `StyleSheetManager` with a custom `target`, make sure that the target is the first element in the HTML ``. If you are curious to see how it can be done, you can take a look at the [`StyledEngineProvider`](https://github.com/mui/material-ui/blob/master/packages/mui-styled-engine-sc/src/StyledEngineProvider/StyledEngineProvider.js) implementation in the `@mui/styled-engine-sc` package.
+
+### Usage
Now it's all set up and you can start using Tailwind CSS on the MUI components!
-**App.js**
+{{"demo": "StyledComponents.js", "hideToolbar": true}}
+
+[![Edit on StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/edit/github-ndkshy?file=pages%2Findex.tsx)
+
+**index.tsx**
```jsx
import * as React from 'react';
@@ -675,7 +681,8 @@ import Slider from '@mui/material/Slider';
export default function App() {
return (
-
+
+
);
}
@@ -685,9 +692,11 @@ export default function App() {
If you attempt to style the Slider, for example, you'll likely want to customize its child elements.
-This example showcases how to override the Slider's `thumb`style.
+This example showcases how to override the Slider's `thumb` style.
+
+{{"demo": "StyledComponentsDeep.js", "hideToolbar": true}}
-**SliderThumbOverrides.js**
+**SliderThumbOverrides.tsx**
```jsx
import * as React from 'react';
@@ -695,10 +704,14 @@ import Slider from '@mui/material/Slider';
export default function SliderThumbOverrides() {
return (
-
+
+
+
+
);
}
```
@@ -707,16 +720,15 @@ export default function SliderThumbOverrides() {
If you want to style a component's pseudo-state, you can use the appropriate key in the `classes` prop. Here is an example of how you can style the Slider's active state:
-**SliderPseudoStateOverrides.js**
+**SliderPseudoStateOverrides.tsx**
```jsx
import * as React from 'react';
-import { StyledEngineProvider } from '@mui/material/styles';
+import Slider from '@mui/material/Slider';
-export default function GlobalCssPriority() {
- return (
-
- {/* Your component tree. 现在你可以覆盖 Material-UI 的样式。
+export default function SliderThumbOverrides() {
+ return ;
+}
```
## ~~JSS~~ TSS
diff --git a/docs/data/styles/advanced/advanced.md b/docs/data/styles/advanced/advanced.md
index 9705e5a6c16c89..a6e6ca5a1a4986 100644
--- a/docs/data/styles/advanced/advanced.md
+++ b/docs/data/styles/advanced/advanced.md
@@ -1,8 +1,12 @@
-# Advanced
+# Advanced (LEGACY)
This section covers more advanced usage of @mui/styles.
-> **Note**: `@mui/styles` is the _**legacy**_ styling solution for MUI. It is deprecated in v5. It depends on [JSS](https://cssinjs.org/) as a styling solution, which is not used in the `@mui/material` anymore. If you don't want to have both emotion & JSS in your bundle, please refer to the [`@mui/system`](/system/basics/) documentation which is the recommended alternative.
+> ⚠️ `@mui/styles` is the _**legacy**_ styling solution for MUI.
+> It depends on [JSS](https://cssinjs.org/) as a styling solution, which is not used in the `@mui/material` anymore, deprecated in v5.
+> If you don't want to have both emotion & JSS in your bundle, please refer to the [`@mui/system`](/system/basics/) documentation which is the recommended alternative.
+
+> ⚠️ `@mui/styles` is not compatible with [React.StrictMode](https://reactjs.org/docs/strict-mode.html) or React 18.
## Theming
diff --git a/docs/data/styles/api/api.md b/docs/data/styles/api/api.md
index 7721e0222ad004..208d0fde0bb1be 100644
--- a/docs/data/styles/api/api.md
+++ b/docs/data/styles/api/api.md
@@ -2,10 +2,16 @@
title: Styles API
---
-# API
+# API (LEGACY)
The API reference of @mui/styles.
+> ⚠️ `@mui/styles` is the _**legacy**_ styling solution for MUI.
+> It depends on [JSS](https://cssinjs.org/) as a styling solution, which is not used in the `@mui/material` anymore, deprecated in v5.
+> If you don't want to have both emotion & JSS in your bundle, please refer to the [`@mui/system`](/system/basics/) documentation which is the recommended alternative.
+
+> ⚠️ `@mui/styles` is not compatible with [React.StrictMode](https://reactjs.org/docs/strict-mode.html) or React 18.
+
## `createGenerateClassName([options]) => class name generator`
A function which returns [a class name generator function](https://cssinjs.org/jss-api/#generate-your-class-names).
diff --git a/docs/data/styles/basics/basics.md b/docs/data/styles/basics/basics.md
index c96d61337565ea..000657052dd2db 100644
--- a/docs/data/styles/basics/basics.md
+++ b/docs/data/styles/basics/basics.md
@@ -1,12 +1,11 @@
-# @mui/styles
+# @mui/styles (LEGACY)
The legacy styling solution of MUI.
> ⚠️ `@mui/styles` is the _**legacy**_ styling solution for MUI.
-> It is deprecated in v5.
-> It depends on [JSS](https://cssinjs.org/) as a styling solution, which is not used in the `@mui/material` anymore.
+> It depends on [JSS](https://cssinjs.org/) as a styling solution, which is not used in the `@mui/material` anymore, deprecated in v5.
> If you don't want to have both emotion & JSS in your bundle, please refer to the [`@mui/system`](/system/basics/) documentation which is the recommended alternative.
->
+
> ⚠️ `@mui/styles` is not compatible with [React.StrictMode](https://reactjs.org/docs/strict-mode.html) or React 18.
MUI aims to provide a strong foundation for building dynamic UIs.
diff --git a/docs/data/system/box/box-zh.md b/docs/data/system/box/box-zh.md
index fa6e8a227ba78a..ae05e1bc8c6b84 100644
--- a/docs/data/system/box/box-zh.md
+++ b/docs/data/system/box/box-zh.md
@@ -17,7 +17,7 @@ githubLabel: 'component: Box'
## `sx` 属性
-All system properties are available via the [`sx` prop](/system/basics/#the-sx-prop). In addition, the `sx` prop allows you to specify any other CSS rules you may need. 下面是一个如何使用的示例: In addition, the `sx` prop allows you to specify any other CSS rules you may need. Here's an example of how you can use it: In addition, the `sx` prop allows you to specify any other CSS rules you may need. Here's an example of how you can use it:
+所有的样式功能都可以通过 [`sx` 属性 ](/system/basics/#the-sx-prop)更改。 同时,您也可通过`sx` 属性 指定任何您想添加的 CSS 规则。 下面是一个使用例:
{{"demo": "BoxSx.js", "defaultCodeOpen": true }}
@@ -29,7 +29,7 @@ Box 组件能够封装您的组件。 它创建了一个新的 DOM 元素,默
当所需的更改与新的 DOM 元素分开时比较有效。 例如,您可以使用这个方法来更改边距。
-但是,有时您必须针对到底层的 DOM 元素。 As an example, you may want to change the border of the Button. 但是按钮组件已经定义自己的样式。 The Button component defines its own styles. CSS 继承于事无补。 CSS inheritance doesn't help. To workaround the problem, you can use the [`sx`](/system/basics/#the-sx-prop) prop directly on the child if it is a Material-UI component.
+但是,有时您的目标是下层的 DOM 元素。 例如,您想更改按钮的边线, 但是按钮组件已经定义自己的样式, 此时您无法使用CSS继承来解决这个问题。 为了回避这个CSS继承无效的问题, 如该组件的子组件是一个 Material-UI 组件,您可直接在该组件上定义 [`sx`](/system/basics/#the-sx-prop) 属性。
```diff
-
@@ -38,7 +38,7 @@ Box 组件能够封装您的组件。 它创建了一个新的 DOM 元素,默
+
```
-For non-Material-UI components, use the `component` prop.
+如该组件的子组件不是一个 Material-UI 组件,您可通过使用 `component` 属性来达到效果。
```diff
-
@@ -59,17 +59,17 @@ import Box from '@material-ui/core/Box';
| component | union: string | func | object | 'div' | component 用于根节点。 可以是一个使用 DOM 元素或者一个组件的字符串。 |
| sx | object | {} | 接受所有系统属性,以及任何有效的 CSS 属性。 |
-## System props
+## 系统属性
-As a CSS utility component, the `Box` also supports all [`system`](/system/properties/) properties. You can use them as prop directly on the component. For instance, a margin-top: You can use them as prop directly on the component. For instance, a margin-top: You can use them as prop directly on the component. For instance, a margin-top:
+作为一个CSS通用组件,`Box` 组件同时支持所有的 [`system`](/system/properties/) 属性。 与定义属性一样,您可在组件中直接定义它们。 例如您想定义 margin-top 时
```jsx
```
-## Create your own `Box` component
+## 创造您专用的 `Box` 组件
-If you want to have a different default theme for the `Box` component, you can create your own version of it, using the `createBox()` utility.
+如您想使用与系统默认主题不同主题的 `Box` 组件,您可以通过`createBox()` 方式创造您专用的版本。
```js
import { createBox, createTheme } from '@mui/system';
diff --git a/docs/data/system/styled/styled-pt.md b/docs/data/system/styled/styled-pt.md
index 6747992c85f559..286a38b8ec2897 100644
--- a/docs/data/system/styled/styled-pt.md
+++ b/docs/data/system/styled/styled-pt.md
@@ -17,7 +17,7 @@ The utility can be used as a replacement for emotion's or styled-components' sty
1. It uses MUI's default `theme` if no theme is available in React context.
2. It supports the theme's [`styleOverrides`](/customization/theme-components/#global-style-overrides) and [`variants`](/customization/theme-components/#adding-new-component-variants) to be applied, based on the `name` applied in the options (can be skipped).
3. It adds support for the [the `sx` prop](/system/basics/#the-sx-prop) (can be skipped).
-4. It adds by default `shouldForwardProp` option that is taking into account all props used internally in the MUI components (can be overridden).
+4. It adds by default the `shouldForwardProp` option (that can be overridden), taking into account all props used internally in the MUI components: `ownerState`, `theme`, `sx`, and `as`.
## API
diff --git a/docs/data/system/styled/styled-zh.md b/docs/data/system/styled/styled-zh.md
index 172673d6925ce9..2a9e66dea71191 100644
--- a/docs/data/system/styled/styled-zh.md
+++ b/docs/data/system/styled/styled-zh.md
@@ -17,7 +17,7 @@ The utility can be used as a replacement for emotion's or styled-components' sty
1. It uses MUI's default `theme` if no theme is available in React context.
2. 支持根据`name`属性设置主题中的[`styleOverrides`](/customization/theme-components/#global-style-overrides) 和 [`variants`](/customization/theme-components/#adding-new-component-variants)(可忽略)。
3. 新增对`sx`属性的支持(可忽略)
-4. It adds by default `shouldForwardProp` option that is taking into account all props used internally in the MUI components (can be overridden).
+4. It adds by default the `shouldForwardProp` option (that can be overridden), taking into account all props used internally in the MUI components: `ownerState`, `theme`, `sx`, and `as`.
## API
diff --git a/docs/package.json b/docs/package.json
index e5afeb7cafbd47..9cb7854b6a311a 100644
--- a/docs/package.json
+++ b/docs/package.json
@@ -21,8 +21,8 @@
"@babel/core": "^7.17.0",
"@babel/plugin-transform-object-assign": "^7.16.7",
"@babel/runtime-corejs2": "^7.17.0",
- "@date-io/core": "^2.11.0",
- "@date-io/date-fns-jalali": "^2.11.0",
+ "@date-io/core": "^2.13.1",
+ "@date-io/date-fns-jalali": "^2.13.1",
"@docsearch/react": "^3.0.0-alpha.50",
"@emotion/cache": "^11.7.1",
"@emotion/react": "^11.7.1",
@@ -31,20 +31,20 @@
"@fortawesome/fontawesome-svg-core": "^1.2.36",
"@fortawesome/free-solid-svg-icons": "^5.15.4",
"@fortawesome/react-fontawesome": "^0.1.17",
- "@mui/base": "5.0.0-alpha.68",
- "@mui/docs": "^5.4.1",
- "@mui/icons-material": "^5.4.1",
- "@mui/lab": "5.0.0-alpha.68",
- "@mui/material": "^5.4.1",
- "@mui/material-next": "6.0.0-alpha.22",
- "@mui/styled-engine": "^5.4.1",
- "@mui/styled-engine-sc": "^5.4.1",
- "@mui/styles": "^5.4.1",
- "@mui/system": "^5.4.1",
- "@mui/types": "^7.1.1",
- "@mui/x-data-grid": "^5.5.0",
- "@mui/x-data-grid-generator": "^5.5.0",
- "@mui/x-data-grid-pro": "^5.5.0",
+ "@mui/base": "5.0.0-alpha.69",
+ "@mui/docs": "^5.4.2",
+ "@mui/icons-material": "^5.4.2",
+ "@mui/lab": "5.0.0-alpha.69",
+ "@mui/material": "^5.4.2",
+ "@mui/material-next": "6.0.0-alpha.23",
+ "@mui/styled-engine": "^5.4.2",
+ "@mui/styled-engine-sc": "^5.4.2",
+ "@mui/styles": "^5.4.2",
+ "@mui/system": "^5.4.2",
+ "@mui/types": "^7.1.2",
+ "@mui/x-data-grid": "^5.5.1",
+ "@mui/x-data-grid-generator": "^5.5.1",
+ "@mui/x-data-grid-pro": "^5.5.1",
"@trendmicro/react-interpolate": "^0.5.5",
"@types/autosuggest-highlight": "^3.2.0",
"@types/css-mediaquery": "^0.1.1",
@@ -109,7 +109,7 @@
"react-virtualized": "^9.22.3",
"react-window": "^1.8.6",
"recast": "^0.20.5",
- "recharts": "^2.1.8",
+ "recharts": "^2.1.9",
"rimraf": "^3.0.2",
"styled-components": "^5.3.3",
"stylis": "^4.0.13",
diff --git a/docs/packages/feedback/package.json b/docs/packages/feedback/package.json
index ee8e2de4d1bc38..e773bebcd162a8 100644
--- a/docs/packages/feedback/package.json
+++ b/docs/packages/feedback/package.json
@@ -25,6 +25,6 @@
"claudia": "^5.14.0"
},
"optionalDependencies": {
- "aws-sdk": "^2.1070.0"
+ "aws-sdk": "^2.1073.0"
}
}
diff --git a/docs/pages/api-docs/desktop-date-picker.json b/docs/pages/api-docs/desktop-date-picker.json
index ed3c0712eabff1..5fe77364f550ca 100644
--- a/docs/pages/api-docs/desktop-date-picker.json
+++ b/docs/pages/api-docs/desktop-date-picker.json
@@ -8,6 +8,8 @@
},
"allowSameDateSelection": { "type": { "name": "bool" } },
"className": { "type": { "name": "string" } },
+ "clearable": { "type": { "name": "bool" } },
+ "clearText": { "type": { "name": "node" }, "default": "'Clear'" },
"components": {
"type": {
"name": "shape",
diff --git a/docs/pages/api-docs/desktop-date-range-picker.json b/docs/pages/api-docs/desktop-date-range-picker.json
index 2bf4719ca0a5eb..b70e2ee33250e1 100644
--- a/docs/pages/api-docs/desktop-date-range-picker.json
+++ b/docs/pages/api-docs/desktop-date-range-picker.json
@@ -19,6 +19,8 @@
"default": "2"
},
"className": { "type": { "name": "string" } },
+ "clearable": { "type": { "name": "bool" } },
+ "clearText": { "type": { "name": "node" }, "default": "'Clear'" },
"components": {
"type": {
"name": "shape",
diff --git a/docs/pages/api-docs/desktop-date-time-picker.json b/docs/pages/api-docs/desktop-date-time-picker.json
index 96ccbac3f44297..e25c8c80430fc5 100644
--- a/docs/pages/api-docs/desktop-date-time-picker.json
+++ b/docs/pages/api-docs/desktop-date-time-picker.json
@@ -10,6 +10,8 @@
"ampm": { "type": { "name": "bool" } },
"ampmInClock": { "type": { "name": "bool" } },
"className": { "type": { "name": "string" } },
+ "clearable": { "type": { "name": "bool" } },
+ "clearText": { "type": { "name": "node" }, "default": "'Clear'" },
"components": {
"type": {
"name": "shape",
diff --git a/docs/pages/api-docs/desktop-time-picker.json b/docs/pages/api-docs/desktop-time-picker.json
index 02a1be7acbe9f2..96b19851736b8e 100644
--- a/docs/pages/api-docs/desktop-time-picker.json
+++ b/docs/pages/api-docs/desktop-time-picker.json
@@ -9,6 +9,8 @@
"ampm": { "type": { "name": "bool" } },
"ampmInClock": { "type": { "name": "bool" } },
"className": { "type": { "name": "string" } },
+ "clearable": { "type": { "name": "bool" } },
+ "clearText": { "type": { "name": "node" }, "default": "'Clear'" },
"components": {
"type": { "name": "shape", "description": "{ OpenPickerIcon?: elementType }" }
},
diff --git a/docs/pages/api-docs/toggle-button.json b/docs/pages/api-docs/toggle-button.json
index aa53465ce92619..2ad2c182b9290a 100644
--- a/docs/pages/api-docs/toggle-button.json
+++ b/docs/pages/api-docs/toggle-button.json
@@ -14,6 +14,8 @@
"disableFocusRipple": { "type": { "name": "bool" } },
"disableRipple": { "type": { "name": "bool" } },
"fullWidth": { "type": { "name": "bool" } },
+ "onChange": { "type": { "name": "func" } },
+ "onClick": { "type": { "name": "func" } },
"selected": { "type": { "name": "bool" } },
"size": {
"type": {
diff --git a/docs/pages/careers.tsx b/docs/pages/careers.tsx
index c3ff8e97d788d5..7695cf4f379e0f 100644
--- a/docs/pages/careers.tsx
+++ b/docs/pages/careers.tsx
@@ -145,90 +145,86 @@ const faqData = [
const openRolesData = [
{
- // 1
title: 'Product',
roles: [
{
title: 'Designer',
description:
'Design is critical to the success of our mission. We are looking for skills that complement our Lead Designer. You will empower our audience that seeks to build outstanding-looking UIs with new tools.',
- url: '/company/designer/',
+ url: '/careers/designer/',
+ },
+ ],
+ },
+ {
+ title: 'Engineering',
+ roles: [
+ {
+ title: 'Full-stack Engineer - Studio',
+ description:
+ 'You will join the MUI Studio team, to explore the role of MUI in the low code space and help bring the early prototypes to a usable product.',
+ url: '/careers/fullstack-engineer/',
+ },
+ {
+ title: 'React Support Engineer - X',
+ description:
+ "You will provide support, remove blockers and unwrap potential features from reported issues for the advanced components team. You will directly impact developers' satisfaction and success.",
+ url: '/careers/react-support-engineer/',
},
],
},
{
- // 5
title: 'Developer Experience',
roles: [
{
title: 'Developer Experience Engineer',
- description: 'You will focus on providing experiences that delight developers using MUI.',
- url: '/company/developer-experience-engineer/',
+ description:
+ 'You will focus on providing experiences that delight developers using MUI. This role is mostly about MUI Core.',
+ url: '/careers/developer-experience-engineer/',
},
],
},
+];
+
+const nextRolesData = [
{
- // 2
title: 'Engineering',
roles: [
{
title: 'React Engineer - X',
description:
'You will strengthen the advanced components team, build new ambitious complex features, work on strategic problems, and help grow the adoption.',
- url: '/company/react-engineer/',
- },
- {
- title: 'React Support Engineer - X',
- description:
- "You will provide support, remove blockers and unwrap potential features from reported issues for the advanced components team. You will directly impact developers' satisfaction and success.",
- url: '/company/react-support-engineer/',
+ url: '/careers/react-engineer/',
},
{
title: 'Product Engineer - Store',
description: 'You will lead the technical and operational development of MUI Store.',
- url: '/company/product-engineer/',
+ url: '/careers/product-engineer/',
},
],
},
{
- // 3
title: 'People',
roles: [
{
title: 'People Operations Manager',
description:
'You will build the HR function from the ground up at a high-growth tech company.',
- url: '/company/people-operations-manager/',
+ url: '/careers/people-operations-manager/',
},
],
},
{
- // 4
title: 'Support',
roles: [
{
title: 'Support Agent - Store',
description:
"You will provide support for the customers of MUI Store. You will directly impact customers' satisfaction and success.",
- url: '/company/support-agent/',
+ url: '/careers/support-agent/',
},
],
},
-];
-
-const futureRolesData = [
- {
- title: 'Engineering',
- roles: [
- {
- title: 'Full-stack Engineer',
- description:
- 'You will strengthen the team working on a new low-code product. We are looking for an experienced and ambitious full-stack engineer that is ready to work in an entrepreneurial environment. You are a manager of one, you are curious, enjoy taking risks, and learning.',
- url: undefined,
- },
- ],
- },
-];
+] as typeof openRolesData;
function renderFAQItem(index: number, defaultExpanded?: boolean) {
const faq = faqData[index];
@@ -475,59 +471,65 @@ function CareersContent() {
})}
- {/* Future roles */}
-
-
-
-
-
-
- Future roles
-
-
- In the future, we will need to fill the following positions. If you don't
- want to wait for the positions to be opened, you can jump ahead and submit an{' '}
- open application.
-
-
+
+ Next roles
+
+
+ We hire in batches, we collect applications a few months before we actively aim
+ to fill the roles. If none of these roles fit with what you are looking for, you
+ can apply to the{' '}
+
+ Dream job
+ {' '}
+ role.
+
+
+
+
+ }
+ >
+ {nextRolesData.map((category) => {
+ const roles = category.roles;
+ return (
+
+
+ {category.title}
+
+ {roles.length > 0 ? (
+ roles.map((role) => (
+
+ ))
+ ) : (
+ No plans yet.
+ )}
+
+ );
+ })}
+
+
+
+
+ ) : null}
{/* Frequently asked questions */}
diff --git a/docs/pages/careers/designer.js b/docs/pages/careers/designer.js
new file mode 100644
index 00000000000000..3e624a07d719b1
--- /dev/null
+++ b/docs/pages/careers/designer.js
@@ -0,0 +1,7 @@
+import * as React from 'react';
+import TopLayoutCompany from 'docs/src/modules/components/TopLayoutCompany';
+import { demos, docs, demoComponents } from 'docs/src/pages/careers/designer.md?@mui/markdown';
+
+export default function Page() {
+ return ;
+}
diff --git a/docs/pages/company/developer-advocate.js b/docs/pages/careers/developer-advocate.js
similarity index 78%
rename from docs/pages/company/developer-advocate.js
rename to docs/pages/careers/developer-advocate.js
index 1673e0a11da7a3..1885e280888d28 100644
--- a/docs/pages/company/developer-advocate.js
+++ b/docs/pages/careers/developer-advocate.js
@@ -4,7 +4,7 @@ import {
demos,
docs,
demoComponents,
-} from 'docs/src/pages/company/careers/developer-advocate.md?@mui/markdown';
+} from 'docs/src/pages/careers/developer-advocate.md?@mui/markdown';
export default function Page() {
return ;
diff --git a/docs/pages/company/developer-experience-engineer.js b/docs/pages/careers/developer-experience-engineer.js
similarity index 75%
rename from docs/pages/company/developer-experience-engineer.js
rename to docs/pages/careers/developer-experience-engineer.js
index 25c756ac82c34c..bc40c9c15c5b00 100644
--- a/docs/pages/company/developer-experience-engineer.js
+++ b/docs/pages/careers/developer-experience-engineer.js
@@ -4,7 +4,7 @@ import {
demos,
docs,
demoComponents,
-} from 'docs/src/pages/company/careers/developer-experience-engineer.md?@mui/markdown';
+} from 'docs/src/pages/careers/developer-experience-engineer.md?@mui/markdown';
export default function Page() {
return ;
diff --git a/docs/pages/company/designer.js b/docs/pages/careers/fullstack-engineer.js
similarity index 79%
rename from docs/pages/company/designer.js
rename to docs/pages/careers/fullstack-engineer.js
index 97f83ae591f5ae..4eb4b6b077efb8 100644
--- a/docs/pages/company/designer.js
+++ b/docs/pages/careers/fullstack-engineer.js
@@ -4,7 +4,7 @@ import {
demos,
docs,
demoComponents,
-} from 'docs/src/pages/company/careers/designer.md?@mui/markdown';
+} from 'docs/src/pages/careers/full-stack-engineer.md?@mui/markdown';
export default function Page() {
return ;
diff --git a/docs/pages/company/people-operations-manager.js b/docs/pages/careers/people-operations-manager.js
similarity index 77%
rename from docs/pages/company/people-operations-manager.js
rename to docs/pages/careers/people-operations-manager.js
index 83f91e9f203b78..89e4585bb5df7b 100644
--- a/docs/pages/company/people-operations-manager.js
+++ b/docs/pages/careers/people-operations-manager.js
@@ -4,7 +4,7 @@ import {
demos,
docs,
demoComponents,
-} from 'docs/src/pages/company/careers/people-operation-manager.md?@mui/markdown';
+} from 'docs/src/pages/careers/people-operation-manager.md?@mui/markdown';
export default function Page() {
return ;
diff --git a/docs/pages/company/product-engineer.js b/docs/pages/careers/product-engineer.js
similarity index 78%
rename from docs/pages/company/product-engineer.js
rename to docs/pages/careers/product-engineer.js
index 123bc2bddae0e3..e24e036b806382 100644
--- a/docs/pages/company/product-engineer.js
+++ b/docs/pages/careers/product-engineer.js
@@ -4,7 +4,7 @@ import {
demos,
docs,
demoComponents,
-} from 'docs/src/pages/company/careers/product-engineer.md?@mui/markdown';
+} from 'docs/src/pages/careers/product-engineer.md?@mui/markdown';
export default function Page() {
return ;
diff --git a/docs/pages/company/react-engineer.js b/docs/pages/careers/react-engineer.js
similarity index 79%
rename from docs/pages/company/react-engineer.js
rename to docs/pages/careers/react-engineer.js
index 33190155f8bd26..c9839941f83961 100644
--- a/docs/pages/company/react-engineer.js
+++ b/docs/pages/careers/react-engineer.js
@@ -4,7 +4,7 @@ import {
demos,
docs,
demoComponents,
-} from 'docs/src/pages/company/careers/react-engineer.md?@mui/markdown';
+} from 'docs/src/pages/careers/react-engineer.md?@mui/markdown';
export default function Page() {
return ;
diff --git a/docs/pages/company/react-support-engineer.js b/docs/pages/careers/react-support-engineer.js
similarity index 77%
rename from docs/pages/company/react-support-engineer.js
rename to docs/pages/careers/react-support-engineer.js
index ca979c6d4fd40f..a656792294a353 100644
--- a/docs/pages/company/react-support-engineer.js
+++ b/docs/pages/careers/react-support-engineer.js
@@ -4,7 +4,7 @@ import {
demos,
docs,
demoComponents,
-} from 'docs/src/pages/company/careers/react-support-engineer.md?@mui/markdown';
+} from 'docs/src/pages/careers/react-support-engineer.md?@mui/markdown';
export default function Page() {
return ;
diff --git a/docs/pages/company/support-agent.js b/docs/pages/careers/support-agent.js
similarity index 66%
rename from docs/pages/company/support-agent.js
rename to docs/pages/careers/support-agent.js
index 01ac510eb78faa..54832c4a855408 100644
--- a/docs/pages/company/support-agent.js
+++ b/docs/pages/careers/support-agent.js
@@ -1,10 +1,6 @@
import * as React from 'react';
import TopLayoutCompany from 'docs/src/modules/components/TopLayoutCompany';
-import {
- demos,
- docs,
- demoComponents,
-} from 'docs/src/pages/company/careers/support-agent.md?@mui/markdown';
+import { demos, docs, demoComponents } from 'docs/src/pages/careers/support-agent.md?@mui/markdown';
export default function Page() {
return ;
diff --git a/docs/pages/experiments/joy/variant-overrides.tsx b/docs/pages/experiments/joy/variant-overrides.tsx
new file mode 100644
index 00000000000000..68fb2a8f1b9ad5
--- /dev/null
+++ b/docs/pages/experiments/joy/variant-overrides.tsx
@@ -0,0 +1,222 @@
+import * as React from 'react';
+import { GlobalStyles } from '@mui/system';
+import Box, { BoxProps } from '@mui/joy/Box';
+import Button from '@mui/joy/Button';
+import IconButton from '@mui/joy/IconButton';
+import Typography from '@mui/joy/Typography';
+import { CssVarsProvider, ColorPaletteProp, VariantProp, useColorScheme } from '@mui/joy/styles';
+import CodeRounded from '@mui/icons-material/CodeRounded';
+import ScheduleRounded from '@mui/icons-material/ScheduleRounded';
+import DeleteForeverRounded from '@mui/icons-material/DeleteForeverRounded';
+import Moon from '@mui/icons-material/DarkMode';
+import Sun from '@mui/icons-material/LightMode';
+
+const ColorSchemePicker = () => {
+ const { mode, setMode } = useColorScheme();
+ const [mounted, setMounted] = React.useState(false);
+ React.useEffect(() => {
+ setMounted(true);
+ }, []);
+ if (!mounted) {
+ return null;
+ }
+
+ return (
+
+ );
+};
+
+// how to add more color and use with variants
+const Tile = ({
+ children,
+ variant = 'light',
+ color = 'primary',
+ sx = [],
+ ...props
+}: {
+ variant?: 'light' | 'contained';
+ color?: ColorPaletteProp | 'secondary' | 'alternate';
+} & Omit) => {
+ return (
+ theme.variants[variant][color],
+ ...(Array.isArray(sx) ? sx : [sx]),
+ ]}
+ {...props}
+ >
+ {children}
+
+ );
+};
+
+export default function JoyVariant() {
+ const renderContent = (variant: VariantProp, color: ColorPaletteProp) => (
+
+
+
+
+ March 25th
+
+
+
+
+
+
+
+ Check the docs for getting every component API
+
+
+
+
+
+
+ Assigned to
+
+
+ Michael Scott
+
+
+
+
+
+
+
+
+ );
+ return (
+ ({
+ ...(ownerState.fontSize &&
+ ownerState.fontSize !== 'inherit' && {
+ fontSize: theme.vars.fontSize[ownerState.fontSize],
+ }),
+ ...(ownerState.color &&
+ ownerState.color !== 'inherit' && {
+ color: theme.vars.palette[ownerState.color].textColor,
+ }),
+ }),
+ },
+ },
+ },
+ }}
+ >
+
+
+
+
+
+ ({
+ '--shadow-channel': '0 0 0',
+ minWidth: 280,
+ maxWidth: 360,
+ minHeight: 280,
+ display: 'flex',
+ flexDirection: 'column',
+ p: 2.5,
+ boxShadow: 'md',
+ borderRadius: 'sm',
+ ...theme.variants.contained.primary,
+ ...theme.variants.containedOverrides.primary,
+ })}
+ >
+ {renderContent('contained', 'primary')}
+
+ ({
+ minWidth: 280,
+ maxWidth: 360,
+ minHeight: 280,
+ display: 'flex',
+ flexDirection: 'column',
+ p: 2.5,
+ boxShadow: 'md',
+ borderRadius: 'sm',
+ ...theme.variants.text.info,
+ ...theme.variants.textOverrides.info,
+ })}
+ >
+ {renderContent('text', 'info')}
+
+ ({
+ minWidth: 280,
+ maxWidth: 360,
+ minHeight: 280,
+ display: 'flex',
+ flexDirection: 'column',
+ p: 2.5,
+ boxShadow: 'md',
+ borderRadius: 'sm',
+ ...theme.variants.outlined.neutral,
+ ...theme.variants.outlinedOverrides.neutral,
+ })}
+ >
+ {renderContent('outlined', 'neutral')}
+
+ ({
+ minWidth: 280,
+ maxWidth: 360,
+ minHeight: 280,
+ display: 'flex',
+ flexDirection: 'column',
+ p: 2.5,
+ boxShadow: 'md',
+ borderRadius: 'sm',
+ ...theme.variants.light.success,
+ ...theme.variants.lightOverrides.success,
+ })}
+ >
+ {renderContent('light', 'success')}
+
+
+
+ );
+}
diff --git a/docs/pages/experiments/joy/variant.tsx b/docs/pages/experiments/joy/variant.tsx
new file mode 100644
index 00000000000000..09568657c8c156
--- /dev/null
+++ b/docs/pages/experiments/joy/variant.tsx
@@ -0,0 +1,831 @@
+import * as React from 'react';
+import { GlobalStyles, CSSObject } from '@mui/system';
+import { ThemeProvider, createTheme } from '@mui/material/styles';
+import Box, { BoxProps } from '@mui/joy/Box';
+import Button from '@mui/joy/Button';
+import Typography from '@mui/joy/Typography';
+import { CssVarsProvider, ColorPaletteProp } from '@mui/joy/styles';
+import Info from '@mui/icons-material/Info';
+import Code from '@mui/icons-material/Code';
+import PlayArrow from '@mui/icons-material/PlayArrow';
+import HistoryEdu from '@mui/icons-material/HistoryEdu';
+import HighlightedCode from 'docs/src/modules/components/HighlightedCode';
+import MarkdownElement from 'docs/src/modules/components/MarkdownElement';
+
+declare module '@mui/joy/styles' {
+ interface PaletteNeutral {
+ 150: string;
+ 0: string;
+ }
+
+ interface Palette {
+ outlinedFocusBorder: string;
+ }
+
+ interface VariantLight {
+ secondary: CSSObject;
+ alternate: CSSObject;
+ }
+
+ interface VariantContained {
+ secondary: CSSObject;
+ alternate: CSSObject;
+ }
+}
+
+// how to add more color and use with variants
+const Tile = ({
+ children,
+ variant = 'light',
+ color = 'primary',
+ sx = [],
+ ...props
+}: {
+ variant?: 'light' | 'contained';
+ color?: ColorPaletteProp | 'secondary' | 'alternate';
+} & Omit) => {
+ return (
+ theme.variants[variant][color],
+ ...(Array.isArray(sx) ? sx : [sx]),
+ ]}
+ {...props}
+ >
+ {children}
+
+ );
+};
+
+export default function JoyVariant() {
+ return (
+
+
+ ({
+ ...(ownerState.fontSize &&
+ ownerState.fontSize !== 'inherit' && {
+ fontSize: theme.vars.fontSize[ownerState.fontSize],
+ }),
+ ...(ownerState.color &&
+ ownerState.color !== 'inherit' && {
+ color: theme.vars.palette[ownerState.color].textColor,
+ }),
+ }),
+ },
+ },
+ },
+ }}
+ >
+
+
+ Variant demonstration
+
+
+ Default
+
+
+ Joy provides default style for each variant.
+
+ theme.variants.outlined.neutral,
+ ]}
+ >
+
+
+
+
+
+
+
+
+ Default context overrides feature
+
+ theme.variants.contained.primary,
+ (theme) => theme.variants.containedOverrides.primary,
+ ]}
+ >
+
+
+
+
+
+
+
+
+
+
+ ({
+ '--Button-gutter': '1rem',
+ borderRadius: '4px',
+ ...(ownerState.size === 'sm' && {
+ minHeight: 32,
+ }),
+ ...(ownerState.size === 'md' && {
+ minHeight: 36,
+ }),
+ ...(ownerState.size === 'lg' && {
+ minHeight: 40,
+ }),
+ '&.Mui-focusVisible': {
+ ...(ownerState.variant === 'outlined' && {
+ borderColor: 'var(--strapi-palette-outlinedFocusBorder)',
+ }),
+ },
+ '&.Mui-disabled': {
+ backgroundColor: 'var(--strapi-palette-neutral-outlinedDisabledBg)',
+ color: 'var(--strapi-palette-neutral-outlinedDisabledColor)',
+ border: '1px solid',
+ borderColor: 'var(--strapi-palette-neutral-outlinedDisabledBorder)',
+ },
+ }),
+ },
+ },
+ MuiSvgIcon: {
+ defaultProps: {
+ fontSize: 'xl',
+ },
+ styleOverrides: {
+ root: ({ ownerState, theme }) => ({
+ ...(ownerState.fontSize &&
+ ownerState.fontSize !== 'inherit' && {
+ fontSize: theme.vars.fontSize[ownerState.fontSize],
+ }),
+ ...(ownerState.color &&
+ ownerState.color !== 'inherit' && {
+ color: theme.vars.palette[ownerState.color].textColor,
+ }),
+ }),
+ },
+ },
+ },
+ }}
+ >
+
+
+ Custom (Strapi design system)
+
+
+ Palette
+
+
+ Strapi defines 7 palettes (primary, neutral, danger, success, warning, secondary, and
+ alternate). However, leave the secondary and alternate blank for now. This
+ example only focus on the light mode because the Figma does not provide the UIs for dark
+ mode. See{' '}
+
+ design tokens in Figma
+
+
+
+
+ `}
+ language="jsx"
+ />
+
+
+
+ Variant
+
+
+ Strapi does not define variant, so I have to translate the design myself to map with Joy
+ variant.
+ From what I see, Strapi defines 2 styles for the Button, `contained` and `outlined`.{' '}
+ Here is how to customize the variant token for each palette. Note that disabled state is
+ the same across colors, so it is best to configure under theme.components.MuiButton
+
+
+ ({
+ '--Button-gutter': '1rem',
+ borderRadius: '4px',
+ ...(ownerState.size === 'sm' && {
+ minHeight: 32,
+ }),
+ ...(ownerState.size === 'md' && {
+ minHeight: 36,
+ }),
+ ...(ownerState.size === 'lg' && {
+ minHeight: 40,
+ }),
+ '&.Mui-focusVisible': {
+ ...(ownerState.variant === 'outlined' && {
+ borderColor: 'var(--strapi-palette-outlinedFocusBorder)',
+ }),
+ },
+ '&.Mui-disabled': {
+ backgroundColor: 'var(--strapi-palette-neutral-outlinedDisabledBg)',
+ color: 'var(--strapi-palette-neutral-outlinedDisabledColor)',
+ border: '1px solid',
+ borderColor: 'var(--strapi-palette-neutral-outlinedDisabledBorder)',
+ },
+ }),
+ },
+ },
+ }}
+/>
+ `}
+ language="jsx"
+ />
+
+ theme.variants.outlined.neutral,
+ ]}
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Developer does not need to deal with the variant style sheet (eg. border,
+ background-color, :hover, :active) because Joy will create those styles based on the
+ final variables which means developers can also remove the default tokens by providing
+ undefined.
+
+
+
+ Even though, Strapi does not have context override concept, it still work out-of-the
+ box.
+
+ theme.variants.contained.primary,
+ (theme) => theme.variants.containedOverrides.primary,
+ ]}
+ >
+
+
+
+
+
+
+ Focus
+
+
+ Strapi defines different focus style from Joy. This can be easily configure in
+ theme.focus.default to apply to all focusable components.
+
+
+
+ `}
+ language="jsx"
+ />
+
+ theme.variants.outlined.neutral,
+ ]}
+ >
+
+
+
+
+
+ Custom component
+
+ theme.variants.outlined.neutral,
+ ]}
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The above UI looks exactly like the contained variant on top of light variant. In this
+ case, developers should extend only light & contained variants to support secondary &
+ alternate colors. (Joy does not provide secondary & alternate colors by default)
+
+
+
+
+// Custom component for Strapi use-case.
+const Tile = ({
+ children,
+ variant = 'light',
+ color = 'primary',
+ sx = [],
+ ...props
+}: {
+ variant?: 'light' | 'contained';
+ color?: 'primary' | 'warning' | 'secondary' | 'alternate';
+} & Omit) => {
+ return (
+ theme.variants[variant][color], // easy
+ ...(Array.isArray(sx) ? sx : [sx]),
+ ]}
+ {...props}
+ >
+ {children}
+
+ );
+};
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ `}
+ language="jsx"
+ />
+
+
+
+
+ );
+}
diff --git a/docs/pages/material/api/desktop-date-picker.json b/docs/pages/material/api/desktop-date-picker.json
index 0eca9afd22594b..2553ec7ecbc346 100644
--- a/docs/pages/material/api/desktop-date-picker.json
+++ b/docs/pages/material/api/desktop-date-picker.json
@@ -8,6 +8,8 @@
},
"allowSameDateSelection": { "type": { "name": "bool" } },
"className": { "type": { "name": "string" } },
+ "clearable": { "type": { "name": "bool" } },
+ "clearText": { "type": { "name": "node" }, "default": "'Clear'" },
"components": {
"type": {
"name": "shape",
diff --git a/docs/pages/material/api/desktop-date-range-picker.json b/docs/pages/material/api/desktop-date-range-picker.json
index 42d3d020d80092..f9b7d34eb065c0 100644
--- a/docs/pages/material/api/desktop-date-range-picker.json
+++ b/docs/pages/material/api/desktop-date-range-picker.json
@@ -19,6 +19,8 @@
"default": "2"
},
"className": { "type": { "name": "string" } },
+ "clearable": { "type": { "name": "bool" } },
+ "clearText": { "type": { "name": "node" }, "default": "'Clear'" },
"components": {
"type": {
"name": "shape",
diff --git a/docs/pages/material/api/desktop-date-time-picker.json b/docs/pages/material/api/desktop-date-time-picker.json
index 6bfdbc38b97737..bde6e97566a093 100644
--- a/docs/pages/material/api/desktop-date-time-picker.json
+++ b/docs/pages/material/api/desktop-date-time-picker.json
@@ -10,6 +10,8 @@
"ampm": { "type": { "name": "bool" } },
"ampmInClock": { "type": { "name": "bool" } },
"className": { "type": { "name": "string" } },
+ "clearable": { "type": { "name": "bool" } },
+ "clearText": { "type": { "name": "node" }, "default": "'Clear'" },
"components": {
"type": {
"name": "shape",
diff --git a/docs/pages/material/api/desktop-time-picker.json b/docs/pages/material/api/desktop-time-picker.json
index 6ac821a7889296..c5673e298a0ca8 100644
--- a/docs/pages/material/api/desktop-time-picker.json
+++ b/docs/pages/material/api/desktop-time-picker.json
@@ -9,6 +9,8 @@
"ampm": { "type": { "name": "bool" } },
"ampmInClock": { "type": { "name": "bool" } },
"className": { "type": { "name": "string" } },
+ "clearable": { "type": { "name": "bool" } },
+ "clearText": { "type": { "name": "node" }, "default": "'Clear'" },
"components": {
"type": { "name": "shape", "description": "{ OpenPickerIcon?: elementType }" }
},
diff --git a/docs/pages/material/api/toggle-button.json b/docs/pages/material/api/toggle-button.json
index dc7c5123d92820..9ceabc34d96f91 100644
--- a/docs/pages/material/api/toggle-button.json
+++ b/docs/pages/material/api/toggle-button.json
@@ -14,6 +14,8 @@
"disableFocusRipple": { "type": { "name": "bool" } },
"disableRipple": { "type": { "name": "bool" } },
"fullWidth": { "type": { "name": "bool" } },
+ "onChange": { "type": { "name": "func" } },
+ "onClick": { "type": { "name": "func" } },
"selected": { "type": { "name": "bool" } },
"size": {
"type": {
diff --git a/docs/public/_headers b/docs/public/_headers
index 08dd7e227c5044..46b8676011bd06 100644
--- a/docs/public/_headers
+++ b/docs/public/_headers
@@ -9,3 +9,12 @@
/*
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
+ # Block usage in iframes.
+ X-Frame-Options: DENY
+ # Force the browser to trust the Content-Type header
+ # https://stackoverflow.com/questions/18337630/what-is-x-content-type-options-nosniff
+ X-Content-Type-Options: nosniff
+ # Disable it (default) as it can cause security issues.
+ X-XSS-Protection: 0
+ Referrer-Policy: strict-origin-when-cross-origin
+ Content-Security-Policy: default-src * data: 'unsafe-inline' 'unsafe-eval'; report-uri https://o210809.ingest.sentry.io/api/6201480/security/?sentry_key=e4a6f58c6cd9470fa2600a8ff6cde99f
diff --git a/docs/public/_redirects b/docs/public/_redirects
index 69dee5791188c3..7cfe5bf87f18a1 100644
--- a/docs/public/_redirects
+++ b/docs/public/_redirects
@@ -13,22 +13,6 @@
# TODO add back
# https://material-ui.com/* https://mui.com/:splat 301!
-# Redirect all except /store/
-https://material-ui.com https://mui.com 301!
-https://material-ui.com/api-docs/* https://mui.com/api-docs/:splat 301!
-https://material-ui.com/api/* https://mui.com/api/:splat 301!
-https://material-ui.com/blog/* https://mui.com/blog/:splat 301!
-https://material-ui.com/company/* https://mui.com/company/:splat 301!
-https://material-ui.com/components/* https://mui.com/components/:splat 301!
-https://material-ui.com/customization/* https://mui.com/customization/:splat 301!
-https://material-ui.com/discover-more/* https://mui.com/discover-more/:splat 301!
-https://material-ui.com/getting-started/* https://mui.com/getting-started/:splat 301!
-https://material-ui.com/guides/* https://mui.com/guides/:splat 301!
-https://material-ui.com/performance/* https://mui.com/performance/:splat 301!
-https://material-ui.com/styles/* https://mui.com/styles/:splat 301!
-https://material-ui.com/system/* https://mui.com/system/:splat 301!
-https://material-ui.com/versions https://mui.com/versions 301!
-
# Temporarily access the store from the legacy domain
https://mui.com/store/* https://material-ui.com/store/:splat 302!
diff --git a/docs/src/components/banner/AppFrameBanner.tsx b/docs/src/components/banner/AppFrameBanner.tsx
new file mode 100644
index 00000000000000..418c7156a122ca
--- /dev/null
+++ b/docs/src/components/banner/AppFrameBanner.tsx
@@ -0,0 +1,51 @@
+import * as React from 'react';
+import Link from 'docs/src/modules/components/Link';
+import ROUTES from 'docs/src/route';
+import FEATURE_TOGGLE from 'docs/src/featureToggle';
+import { alpha } from '@mui/material/styles';
+
+export default function AppFrameBanner() {
+ return FEATURE_TOGGLE.enable_docsnav_banner ? (
+ ({
+ display: { xs: 'none', lg: 'block' },
+ p: 1,
+ maxHeight: '34px',
+ backgroundColor:
+ theme.palette.mode === 'dark'
+ ? alpha(theme.palette.primary[900], 0.3)
+ : theme.palette.primary[50],
+ border: '1px solid',
+ borderColor:
+ theme.palette.mode === 'dark' ? theme.palette.primaryDark[700] : theme.palette.grey[200],
+ borderRadius: 1,
+ transitionProperty: 'all',
+ transitionTiming: 'cubic-bezier(0.4, 0, 0.2, 1)',
+ transitionDuration: '150ms',
+ color:
+ theme.palette.mode === 'dark' ? theme.palette.primary[100] : theme.palette.primary[600],
+ fontWeight: 500,
+ '&:hover, &:focus-visible': {
+ backgroundColor:
+ theme.palette.mode === 'dark'
+ ? alpha(theme.palette.primary[900], 0.6)
+ : alpha(theme.palette.primary[100], 0.4),
+ borderColor:
+ theme.palette.mode === 'dark'
+ ? theme.palette.primaryDark[500]
+ : theme.palette.primary[200],
+ },
+ })}
+ >
+ 🚀 We're hiring a Designer, Full-stack Engineer, React Support Engineer, and
+ more!
+
+
+ ) : null;
+}
diff --git a/docs/src/components/banner/AppHeaderBanner.tsx b/docs/src/components/banner/AppHeaderBanner.tsx
index 9c923fa5c76914..36acedb138b4bc 100644
--- a/docs/src/components/banner/AppHeaderBanner.tsx
+++ b/docs/src/components/banner/AppHeaderBanner.tsx
@@ -1,5 +1,4 @@
import * as React from 'react';
-import Box from '@mui/material/Box';
import Typography from '@mui/material/Typography';
import Link from 'docs/src/modules/components/Link';
import ROUTES from 'docs/src/route';
@@ -7,37 +6,39 @@ import FEATURE_TOGGLE from 'docs/src/featureToggle';
export default function AppHeaderBanner() {
return FEATURE_TOGGLE.enable_website_banner ? (
-
theme.palette.mode === 'dark'
? `linear-gradient(90deg, ${theme.palette.primary[900]}, ${theme.palette.primary[600]} 120%)`
: `linear-gradient(-90deg, ${theme.palette.primary[700]}, ${theme.palette.primary[500]} 120%)`,
+ fontSize: (theme) => theme.typography.pxToRem(13),
}}
>
-
- Fix me!
-
- Fix me!
-
-
-
+ Check the careers page →
+
+
) : null;
}
diff --git a/docs/src/components/banner/TableOfContentsBanner.tsx b/docs/src/components/banner/TableOfContentsBanner.tsx
index b6ac915a18cfda..18550d14cf28ab 100644
--- a/docs/src/components/banner/TableOfContentsBanner.tsx
+++ b/docs/src/components/banner/TableOfContentsBanner.tsx
@@ -5,7 +5,7 @@ import ROUTES from 'docs/src/route';
import FEATURE_TOGGLE from 'docs/src/featureToggle';
export default function TableOfContentsBanner() {
- return FEATURE_TOGGLE.enable_website_banner ? (
+ return FEATURE_TOGGLE.enable_toc_banner ? (
,
- title: 'Accessible in mind',
+ title: 'Accessibility in mind',
description:
'We care about making it great for everyone. We improve accessibility for all of our components constantly, helping you to reach the largest audience possible!',
},
diff --git a/docs/src/featureToggle.js b/docs/src/featureToggle.js
index 5585b224bcff3b..640aac9ad6e3d9 100644
--- a/docs/src/featureToggle.js
+++ b/docs/src/featureToggle.js
@@ -1,7 +1,9 @@
// need to use commonjs export so that docs/packages/markdown can use
module.exports = {
nav_products: true,
- enable_website_banner: false,
+ enable_website_banner: true,
+ enable_toc_banner: false,
+ enable_docsnav_banner: true,
// TODO: cleanup once migration is done
enable_product_scope: true, // related to new structure change
enable_redirects: false, // related to new structure change
diff --git a/docs/src/modules/brandingTheme.ts b/docs/src/modules/brandingTheme.ts
index a6305d1ca6d3b0..24ec50bfc70c85 100644
--- a/docs/src/modules/brandingTheme.ts
+++ b/docs/src/modules/brandingTheme.ts
@@ -25,11 +25,13 @@ declare module '@mui/material/styles/createPalette' {
declare module '@mui/material/styles/createTypography' {
interface TypographyOptions {
+ fontWeightSemiBold?: number;
fontWeightExtraBold?: number;
fontFamilyCode?: string;
}
interface Typography {
+ fontWeightSemiBold: number;
fontWeightExtraBold: number;
fontFamilyCode: string;
}
@@ -200,6 +202,7 @@ export const getDesignTokens = (mode: 'light' | 'dark') =>
].join(','),
fontFamilyTagline: ['"PlusJakartaSans-ExtraBold"', ...systemFont].join(','),
fontFamilySystem: systemFont.join(','),
+ fontWeightSemiBold: 600,
fontWeightExtraBold: 800,
h1: {
fontFamily: ['"PlusJakartaSans-ExtraBold"', ...systemFont].join(','),
diff --git a/docs/src/modules/components/AppFrame.js b/docs/src/modules/components/AppFrame.js
index 43258be67ce17e..96150a7af261b5 100644
--- a/docs/src/modules/components/AppFrame.js
+++ b/docs/src/modules/components/AppFrame.js
@@ -24,6 +24,7 @@ import { useTranslate } from 'docs/src/modules/utils/i18n';
import { debounce } from '@mui/material/utils';
import NextLink from 'next/link';
import SvgMuiLogo from 'docs/src/icons/SvgMuiLogo';
+import AppFrameBanner from 'docs/src/components/banner/AppFrameBanner';
const nProgressStart = debounce(() => {
NProgress.start();
@@ -219,6 +220,7 @@ function AppFrame(props) {
+
{renderNavItems({ onClose, pages: page.children, activePage, depth: depth + 1, t })}
@@ -434,6 +435,7 @@ function reduceChildRoutes(context) {
key={title}
title={title}
href={page.pathname}
+ legacy={page.legacy}
onClick={onClose}
icon={page.icon}
/>,
diff --git a/docs/src/modules/components/AppNavDrawerItem.js b/docs/src/modules/components/AppNavDrawerItem.js
index 817f2258ac5086..0ff9c39249e481 100644
--- a/docs/src/modules/components/AppNavDrawerItem.js
+++ b/docs/src/modules/components/AppNavDrawerItem.js
@@ -2,8 +2,9 @@ import * as React from 'react';
import PropTypes from 'prop-types';
import Box from '@mui/material/Box';
import KeyboardArrowRightRoundedIcon from '@mui/icons-material/KeyboardArrowRightRounded';
-import { alpha, styled } from '@mui/material/styles';
+import { alpha, styled, experimental_sx as sx } from '@mui/material/styles';
import Collapse from '@mui/material/Collapse';
+import Chip from '@mui/material/Chip';
import ButtonBase from '@mui/material/ButtonBase';
import Link from 'docs/src/modules/components/Link';
import ArticleRoundedIcon from '@mui/icons-material/ArticleRounded';
@@ -173,6 +174,37 @@ const StyledLi = styled('li', { shouldForwardProp: (prop) => prop !== 'depth' })
},
);
+const LegacyChip = styled(function LegacyChip(props) {
+ return ;
+})(
+ sx({
+ ml: 1,
+ '&:hover': {
+ bgcolor: (theme) =>
+ theme.palette.mode === 'dark'
+ ? alpha(theme.palette.warning[900], 0.5)
+ : alpha(theme.palette.warning[100], 0.5),
+ },
+ '& .MuiChip-label': { px: 0.6 },
+ fontSize: (theme) => theme.typography.pxToRem(10),
+ fontWeight: 600,
+ textTransform: 'uppercase',
+ letterSpacing: '.04rem',
+ height: '16px',
+ border: 1,
+ borderColor: (theme) =>
+ theme.palette.mode === 'dark'
+ ? alpha(theme.palette.warning[800], 0.5)
+ : theme.palette.warning[300],
+ bgcolor: (theme) =>
+ theme.palette.mode === 'dark'
+ ? alpha(theme.palette.warning[900], 0.5)
+ : alpha(theme.palette.warning[100], 0.5),
+ color: (theme) =>
+ theme.palette.mode === 'dark' ? theme.palette.warning[300] : theme.palette.warning[700],
+ }),
+);
+
export default function AppNavDrawerItem(props) {
const {
children,
@@ -184,6 +216,7 @@ export default function AppNavDrawerItem(props) {
title,
linkProps,
icon,
+ legacy,
...other
} = props;
const [open, setOpen] = React.useState(openImmediately);
@@ -226,6 +259,7 @@ export default function AppNavDrawerItem(props) {
>
{iconElement}
{title}
+ {legacy && }
@@ -245,6 +279,7 @@ export default function AppNavDrawerItem(props) {
>
{iconElement}
{title}
+ {legacy && }
{depth === 0 && }
{depth === 0 ? (
@@ -264,6 +299,7 @@ AppNavDrawerItem.propTypes = {
depth: PropTypes.number.isRequired,
href: PropTypes.string,
icon: PropTypes.string,
+ legacy: PropTypes.bool,
linkProps: PropTypes.object,
onClick: PropTypes.func,
openImmediately: PropTypes.bool,
diff --git a/docs/src/modules/components/Demo.js b/docs/src/modules/components/Demo.js
index bade3fa44344fb..f482823a6d300f 100644
--- a/docs/src/modules/components/Demo.js
+++ b/docs/src/modules/components/Demo.js
@@ -96,10 +96,10 @@ const DemoRoot = styled('div', {
}),
/* Make no difference between the demo and the markdown. */
...(bg === 'inline' && {
- padding: theme.spacing(3),
+ padding: theme.spacing(0),
}),
...(hiddenToolbar && {
- paddingTop: theme.spacing(3),
+ paddingTop: theme.spacing(1),
}),
},
/* Isolate the demo with an outline. */
diff --git a/docs/src/pages.ts b/docs/src/pages.ts
index 93b19e319be5d2..66c5f217515015 100644
--- a/docs/src/pages.ts
+++ b/docs/src/pages.ts
@@ -5,6 +5,10 @@ export interface MuiPage {
children?: MuiPage[];
disableDrawer?: boolean;
icon?: string;
+ /**
+ * Indicates if the pages are regarding some legacy API.
+ */
+ legacy?: boolean;
/**
* In case the children have pathnames out of pathname value, use this field to scope other pathnames
*/
@@ -325,8 +329,9 @@ const pages: readonly MuiPage[] = [
},
{
pathname: '/styles',
- title: 'Styles (legacy)',
+ title: 'Styles',
icon: 'StyleIcon',
+ legacy: true,
children: [
{ pathname: '/styles/basics' },
{ pathname: '/styles/advanced' },
diff --git a/docs/src/pages/company/careers/TEMPLATE.md b/docs/src/pages/careers/TEMPLATE.md
similarity index 96%
rename from docs/src/pages/company/careers/TEMPLATE.md
rename to docs/src/pages/careers/TEMPLATE.md
index b96f4e4159556d..d606bbcfa058e0 100644
--- a/docs/src/pages/company/careers/TEMPLATE.md
+++ b/docs/src/pages/careers/TEMPLATE.md
@@ -15,7 +15,7 @@
MUI started with Material-UI, the most successful React implementation of Google's Material Design.
It has gained a large following, not only due to the fidelity to Material Design, but also because of the number of components, its carefully designed component API, obsession for details, and community engagement.
-Today, countless teams and organizations rely on our open-source projects to build their design system.
+Today, countless teams and organizations rely on our open-source libraries to build their design system.
A couple of years ago, we started to expand our suite of products.
We released [MUI X](/x/), a collection of advanced components; [MUI Design kits](/design-kits/), the MUI components available for the most popular design tools; and also host [Templates](/templates/), a set of pre-built UI kits.
@@ -65,4 +65,4 @@ You can find the other perks & benefits on the [careers](/careers/#perks-amp-ben
## How to apply?
-[Apply now for this position 📮](https://airtable.com/shrdqo1Z6srZXGcvh?prefill_Applying+for=XXXXXX)
+[Apply now for this position 📮](https://airtable.com/shrdqo1Z6srZXGcvh?prefill_Applying+for=XXXXXX&prefill_source=mui.com)
diff --git a/docs/src/pages/company/careers/designer.md b/docs/src/pages/careers/designer.md
similarity index 95%
rename from docs/src/pages/company/careers/designer.md
rename to docs/src/pages/careers/designer.md
index f15055ac849448..cf3970064aa52a 100644
--- a/docs/src/pages/company/careers/designer.md
+++ b/docs/src/pages/careers/designer.md
@@ -6,7 +6,7 @@
MUI started with Material-UI, the most successful React implementation of Google's Material Design.
It has gained a large following, not only due to the fidelity to Material Design, but also because of the number of components, its carefully designed component API, obsession for details, and community engagement.
-Today, countless teams and organizations rely on our open-source projects to build their design system.
+Today, countless teams and organizations rely on our open-source libraries to build their design system.
A couple of years ago, we started to expand our suite of products.
We released [MUI X](/x/), a collection of advanced components; [MUI Design kits](/design-kits/), the MUI components available for the most popular design tools; and also host [Templates](/templates/), a set of pre-built UI kits.
@@ -69,7 +69,7 @@ You'll also be the second designer of a growing design team, so we'll also need
You should be capable of tweaking JSX and CSS, ensuring that your designs are implemented with the highest fidelity.
But don't worry, you'll always have the support of your teams' developers.
-Previous experience with design systems would be great, but is not required.
+Previous experience with design systems would be great but is not required.
## Benefits & Compensation
@@ -79,7 +79,7 @@ Other perks are described on [the careers page](/careers/#perks-amp-benefits/).
## How to apply?
-[Apply now for this position 📮](https://airtable.com/shrdqo1Z6srZXGcvh?prefill_Applying+for=Designer).
+[Apply now for this position 📮](https://airtable.com/shrdqo1Z6srZXGcvh?prefill_Applying+for=Designer&prefill_source=mui.com).
## What happens next?
@@ -88,7 +88,7 @@ If your application stands out, we'll contact you for a get-to-know conversation
If that goes well, you'll be invited to up to four additional conversations, those being:
-- A walkthrough on one or two selected projects of your career that you believe demonstrates [comparable experience.](https://articles.uie.com/ux-hiring-lets-talk-about-comparable-experience/)
+- A walkthrough of one or two selected projects that you believe demonstrate [comparable experience.](https://articles.uie.com/ux-hiring-lets-talk-about-comparable-experience/)
- A chat with one of the product managers or engineers that you will work closely with.
- A chat with one of MUI's founders.
- A possible follow-up chat if we missed addressing anything relevant in the previous conversations.
diff --git a/docs/src/pages/company/careers/developer-advocate.md b/docs/src/pages/careers/developer-advocate.md
similarity index 98%
rename from docs/src/pages/company/careers/developer-advocate.md
rename to docs/src/pages/careers/developer-advocate.md
index 3668fd7431056f..714fa3866bc8f9 100644
--- a/docs/src/pages/company/careers/developer-advocate.md
+++ b/docs/src/pages/careers/developer-advocate.md
@@ -14,7 +14,7 @@
MUI started with Material-UI, the most successful React implementation of Google's Material Design.
It has gained a large following, not only due to the fidelity to Material Design, but also because of the number of components, its carefully designed component API, obsession for details, and community engagement.
-Today, countless teams and organizations rely on our open-source projects to build their design system.
+Today, countless teams and organizations rely on our open-source libraries to build their design system.
A couple of years ago, we started to expand our suite of products.
We released [MUI X](/x/), a collection of advanced components; [MUI Design kits](/design-kits/), the MUI components available for the most popular design tools; and also host [Templates](/templates/), a set of pre-built UI kits.
@@ -107,4 +107,4 @@ You can find the other perks & benefits on the [careers](/careers/#perks-amp-ben
## How to apply?
-[Apply now for this position 📮](https://airtable.com/shrdqo1Z6srZXGcvh?prefill_Applying+for=Developer%20Advocate)
+[Apply now for this position 📮](https://airtable.com/shrdqo1Z6srZXGcvh?prefill_Applying+for=Developer%20Advocate&prefill_source=mui.com)
diff --git a/docs/src/pages/company/careers/developer-experience-engineer.md b/docs/src/pages/careers/developer-experience-engineer.md
similarity index 97%
rename from docs/src/pages/company/careers/developer-experience-engineer.md
rename to docs/src/pages/careers/developer-experience-engineer.md
index 090e0bc9a0c1b3..fb2397c63f6a4e 100644
--- a/docs/src/pages/company/careers/developer-experience-engineer.md
+++ b/docs/src/pages/careers/developer-experience-engineer.md
@@ -1,6 +1,6 @@
# Developer Experience Engineer
-
You will focus on providing experiences that delight developers using MUI.
+
You will focus on providing experiences that delight developers using MUI. This role is mostly about MUI Core.
## Details of the Role
@@ -15,7 +15,7 @@
MUI started with Material-UI, the most successful React implementation of Google's Material Design.
It has gained a large following, not only due to the fidelity to Material Design, but also because of the number of components, its carefully designed component API, obsession for details, and community engagement.
-Today, countless teams and organizations rely on our open-source projects to build their design system.
+Today, countless teams and organizations rely on our open-source libraries to build their design system.
A couple of years ago, we started to expand our suite of products.
We released [MUI X](/x/), a collection of advanced components; [MUI Design kits](/design-kits/), the MUI components available for the most popular design tools; and also host [Templates](/templates/), a set of pre-built UI kits.
@@ -99,4 +99,4 @@ You can find the other perks & benefits on the [careers](/careers/#perks-amp-ben
## How to apply?
-[Apply now for this position 📮](https://airtable.com/shrdqo1Z6srZXGcvh?prefill_Applying+for=Developer%20Experience%20Engineer)
+[Apply now for this position 📮](https://airtable.com/shrdqo1Z6srZXGcvh?prefill_Applying+for=Developer%20Experience%20Engineer&prefill_source=mui.com)
diff --git a/docs/src/pages/careers/full-stack-engineer.md b/docs/src/pages/careers/full-stack-engineer.md
new file mode 100644
index 00000000000000..942204e2189912
--- /dev/null
+++ b/docs/src/pages/careers/full-stack-engineer.md
@@ -0,0 +1,119 @@
+# Full-stack Engineer
+
+
We are looking for a full-stack engineer to pioneer the development of a new product vertical.
+
+## Details of the Role
+
+- Location: Remote (preference for UTC-6 to UTC+3).
+- Type of work: Full-time (contractor or employee [depending on circumstances](https://mui-org.notion.site/Hiring-FAQ-64763b756ae44c37b47b081f98915501))
+- Start date: Immediately.
+- Level: [4 or above](https://docs.google.com/spreadsheets/d/1dDdPD-flNXlgZ0E3ZxVvCDx27RFuhVWJrcfcjNu_I8k/edit#gid=0).
+- We're a remote company, we prefer asynchronous communication over meetings.
+- We work independently, the rest of us won't know what you're doing day-to-day unless you tell us.
+
+## About the company
+
+MUI started with Material-UI, the most successful React implementation of Google's Material Design.
+It has gained a large following, not only due to the fidelity to Material Design, but also because of the number of components, its carefully designed component API, obsession for details, and community engagement.
+Today, countless teams and organizations rely on our open-source projects to build their design system.
+
+A couple of years ago, we started to expand our suite of products.
+We released [MUI X](/x/), a collection of advanced components; [MUI Design kits](/design-kits/), the MUI components available for the most popular design tools; and also host [Templates](/templates/), a set of pre-built UI kits.
+We've seen rapid growth with all of them (2-3x per year) and we have more to come.
+
+We are a fully distributed team, spread across multiple timezones.
+We work mainly asynchronously, relying mostly on written collaboration.
+Every contributor has the freedom to define how they work — the rest of us won't know what you're doing day-to-day unless you tell us.
+For additional details about the MUI team and culture, you can check our [careers](/careers/) and [about](/about/) pages and also our [public Handbook](https://mui-org.notion.site/Handbook-f086d47e10794d5e839aef9dc67f324b).
+
+## Why we're hiring
+
+Both our open-source community and our premium products are growing fast (x2-3 YoY).
+We need talented people to keep that going!
+
+Our mission is to empower as many people as possible to build great UIs, faster.
+The faster and simpler it is, and the broader the audience that can create custom UIs, the better.
+We believe that the best way to improve on these dimensions is to eliminate [80%](https://www.youtube.com/watch?v=GnO7D5UaDig&t=2451s) of the code that has to be written.
+
+We’re in the early stages of exploring what our role could be in the currently emerging low-code space. We’ve assembled a team to work on a new product and plan to bring it to market in 2022. We have made our initial research and need help to accelerate the development of our MVP.
+
+## About the role
+
+### Why this is interesting
+
+The MUI Studio application offers a wide variety of engineering challenges. Including
+
+- In-browser sandboxing and manipulation of live web applications
+- Drag & drop visual editor
+- Interfacing with many different types of backends
+- Databinding and complex state management
+
+### What you'll do on a day-to-day basis
+
+Depending on the day, you'll:
+
+- **Help guide architectural decisions**. You'll join us in defining and refining the initial product and also help bring the conversation public as the MVP grows. You’ll also interface with other teams at MUI as you’ll be building on top of their work.
+- **Contribute to implementing new features**. MUI is a complex codebase. It’s built on top of cutting edge web technologies to build the low-code tool for the future.
+- **Reduce friction**. A large amount of the work on MUI Studio is reducing friction and making it easier to use. As our MVP grows, our focus will shift from “making it work” towards “making it easy to work with”.
+- **Collaborate with the community**. MUI Studio will be open-sourced. As the community grows you’ll act as a steward to steer it towards success. This includes reviewing issues, pull requests and questions, and guiding aspiring contributors to make meaningful contributions.
+- **Experiment and play**. Great, unexpected features and heisenbug fixes have come from a number of sources — relentlessly methodical processes of elimination, free-flowing team collaboration, inspiration by adjacent libraries and projects, and difficult-to-explain individual strokes of brilliance. Whatever your preferred style is for creating new things that others might not have thought of, you'll find a welcome home on the team.
+- **Take ownership of features from idea/mockup to live deployment**. You'll shape and guide the direction of crucial new features.
+- **Ship. Early and often**. You'll iterate and ship frequently. You'll have a real impact on the end-user experience and you'll love working on a team that builds stunning UIs and prioritizes delivering real user value as often as possible.
+- **You'll be interacting with the users** on a regular basis, handling inbound support and feature requests (every developer helps with developer requests).
+
+## The best parts of this job
+
+- **You'll be at the cutting edge of application development** — working on one of the fastest-growing UI libraries on the market.
+- **You'll be part of an active, open, friendly community** of developers that are excited about building awesome applications.
+- **Your role will be key to making MUI Studio the go-to low code tool** for internal application building.
+
+## The worst parts of this job
+
+- **We move quickly but don't sacrifice quality**. We ship early, often, and quickly. You may not be initially comfortable with the cadence with which we ship high-quality features and improvements to end-users. By doing so, we sacrifice on solving each problem 100% in exchange for fast feedback. Solving 50-70% of the issue with quality should be enough for any given iteration. Our users quickly tell us when we haven't pushed a solution far enough.
+- **In open-source, you're faced with a nonstop stream of bug reports and support requests**. That means you need to develop an intuition for when to ignore something, and when to dig in further.
+- As **The product is in very early stages of development**, expect to enter an environment with incomplete and quickly changing requirements.
+
+## About you
+
+We're looking for someone with both strong front-end and back-end skills. More important than specific technical skills though is that you're a strong problem solver who loves to learn. Details matter to you.
+
+### Skills you should have
+
+- **Expertise in the modern JavaScript ecosystem**. MUI Studio is built on the shoulders of giants, making use of technologies such as ES2021, TypeScript, Node.js, React, Next.js, webpack, and Babel.
+- **Expertise in backend development**. MUI Studio interfaces with multiple databases, both SQL and NoSQL, as well as APIs such as REST and GraphQL. You’ll need to be comfortable in learning and integrating new backend technologies fast.
+- **A track record of demonstrating an eye for product and solving real-world user problems**. If you have a knack for solving problems at the root cause, shipping beautiful user interfaces and intuitive APIs, we want you on our team.
+- **Experience building and shipping production code in a team setting** with a passion for writing tested, performant, and high-quality code.
+- **Strong written and verbal communication skills**. As part of the team, you'll interface both directly and indirectly with community members and enterprise customers, and contribute to user documentation. Clear communication is fundamental in creating intuitive and compelling resources.
+- **Ability to dive into complex problems**. You should be able to quickly assess, understand, and iterate upon aspects of our codebase.
+- **Ready and willing to ask and answer questions**. If you're comfortable saying you're unsure, asking for help; but equally reaching out to assist others, you'll be an incredible addition to our team. We thrive because of continuous learning. First-time mistakes should be celebrated, not blamed.
+- **Avoid monolithic deliverables**. You scope and stage your work into well-defined milestones to ship.
+
+### What would be nice if you had, but isn't required
+
+- **You've maintained an active repository before**. Maybe you've helped maintain a popular open-source repository, or perhaps you've worked on internal repositories that saw contributions from multiple teams. Previous experience with highly active repository workflows is a definite plus for this role.
+- **You have contributed code to MUI before**. A history of contributing to MUI would be a definite plus.
+
+## Benefits & Compensation
+
+Competitive compensation depending on the profile and location.
+We are ready to pay top market rates for a person that can significantly push the mission forward.
+You can find the other perks & benefits on the [careers](/careers/#perks-amp-benefits) page.
+
+## How to apply?
+
+[Apply now for this position 📮](https://airtable.com/shrdqo1Z6srZXGcvh?prefill_Applying+for=Full-stack%20Engineer%20-%20Studio)
+
+## What happens next?
+
+We start by screening applications, looking for candidates that showcase the desired skills and experience. If your application stands out, we'll contact you for a get-to-know conversation, where we'll meet each other.
+
+If that goes well, you'll be invited to up to four additional conversations, those being:
+
+- A technical challenge.
+- A chat with one of the product managers or engineers that you will work closely with.
+- A chat with one of MUI's founders.
+- A possible follow-up chat if we missed addressing anything relevant in the previous conversations.
+
+All these conversations will be 1:1 and over video chat. Please ask as many questions as you wish throughout the whole process, it's a two-way discussion. If you happen to need additional conversations as well, feel free to ask; we'll be happy to schedule them. Lastly, please note that we're unable to offer individual feedback during the initial screening process, as we're a small team and don't have the bandwidth to do so.
+
+We look forward to hearing from you! ☺️
diff --git a/docs/src/pages/company/careers/people-operation-manager.md b/docs/src/pages/careers/people-operation-manager.md
similarity index 97%
rename from docs/src/pages/company/careers/people-operation-manager.md
rename to docs/src/pages/careers/people-operation-manager.md
index 4df6b2456b3e04..a898ba8cc17a22 100644
--- a/docs/src/pages/company/careers/people-operation-manager.md
+++ b/docs/src/pages/careers/people-operation-manager.md
@@ -14,7 +14,7 @@
MUI started with Material-UI, the most successful React implementation of Google's Material Design.
It has gained a large following, not only due to the fidelity to Material Design, but also because of the number of components, its carefully designed component API, obsession for details, and community engagement.
-Today, countless teams and organizations rely on our open-source projects to build their design system.
+Today, countless teams and organizations rely on our open-source libraries to build their design system.
A couple of years ago, we started to expand our suite of products.
We released [MUI X](/x/), a collection of advanced components; [MUI Design kits](/design-kits/), the MUI components available for the most popular design tools; and also host [Templates](/templates/), a set of pre-built UI kits.
@@ -85,4 +85,4 @@ You can find the other perks & benefits on the [careers](/careers/#perks-amp-ben
## How to apply?
-[Apply now for this position 📮](https://airtable.com/shrdqo1Z6srZXGcvh?prefill_Applying+for=People%20Operations%20Manager)
+[Apply now for this position 📮](https://airtable.com/shrdqo1Z6srZXGcvh?prefill_Applying+for=People%20Operations%20Manager&prefill_source=mui.com)
diff --git a/docs/src/pages/company/careers/product-engineer.md b/docs/src/pages/careers/product-engineer.md
similarity index 97%
rename from docs/src/pages/company/careers/product-engineer.md
rename to docs/src/pages/careers/product-engineer.md
index d806fa85f77f50..2d9b1dae43b103 100644
--- a/docs/src/pages/company/careers/product-engineer.md
+++ b/docs/src/pages/careers/product-engineer.md
@@ -15,7 +15,7 @@
MUI started with Material-UI, the most successful React implementation of Google's Material Design.
It has gained a large following, not only due to the fidelity to Material Design, but also because of the number of components, its carefully designed component API, obsession for details, and community engagement.
-Today, countless teams and organizations rely on our open-source projects to build their design system.
+Today, countless teams and organizations rely on our open-source libraries to build their design system.
A couple of years ago, we started to expand our suite of products.
We released [MUI X](/x/), a collection of advanced components; [MUI Design kits](/design-kits/), the MUI components available for the most popular design tools; and also host [Templates](/templates/), a set of pre-built UI kits.
@@ -92,4 +92,4 @@ You can find the other perks & benefits on the [careers](/careers/#perks-amp-ben
## How to apply?
-[Apply now for this position 📮](https://airtable.com/shrdqo1Z6srZXGcvh?prefill_Applying+for=Product%20Engineer%20-%20Store)
+[Apply now for this position 📮](https://airtable.com/shrdqo1Z6srZXGcvh?prefill_Applying+for=Product%20Engineer%20-%20Store&prefill_source=mui.com)
diff --git a/docs/src/pages/company/careers/product-manager.md b/docs/src/pages/careers/product-manager.md
similarity index 97%
rename from docs/src/pages/company/careers/product-manager.md
rename to docs/src/pages/careers/product-manager.md
index 3f27d19c812d68..f291e893ebe632 100644
--- a/docs/src/pages/company/careers/product-manager.md
+++ b/docs/src/pages/careers/product-manager.md
@@ -14,7 +14,7 @@
MUI started with Material-UI, the most successful React implementation of Google's Material Design.
It has gained a large following, not only due to the fidelity to Material Design, but also because of the number of components, its carefully designed component API, obsession for details, and community engagement.
-Today, countless teams and organizations rely on our open-source projects to build their design system.
+Today, countless teams and organizations rely on our open-source libraries to build their design system.
A couple of years ago, we started to expand our suite of products.
We released [MUI X](/x/), a collection of advanced components; [MUI Design kits](/design-kits/), the MUI components available for the most popular design tools; and also host [Templates](/templates/), a set of pre-built UI kits.
@@ -79,4 +79,4 @@ You can find the other perks & benefits on the [careers](/careers/#perks-amp-ben
## How to apply?
-[Apply now for this position 📮](https://airtable.com/shrdqo1Z6srZXGcvh?prefill_Applying+for=Product%20Manager)
+[Apply now for this position 📮](https://airtable.com/shrdqo1Z6srZXGcvh?prefill_Applying+for=Product%20Manager&prefill_source=mui.com)
diff --git a/docs/src/pages/company/careers/react-engineer.md b/docs/src/pages/careers/react-engineer.md
similarity index 98%
rename from docs/src/pages/company/careers/react-engineer.md
rename to docs/src/pages/careers/react-engineer.md
index c2735b891ca69a..f57e4aa60e8835 100644
--- a/docs/src/pages/company/careers/react-engineer.md
+++ b/docs/src/pages/careers/react-engineer.md
@@ -15,7 +15,7 @@
MUI started with Material-UI, the most successful React implementation of Google's Material Design.
It has gained a large following, not only due to the fidelity to Material Design, but also because of the number of components, its carefully designed component API, obsession for details, and community engagement.
-Today, countless teams and organizations rely on our open-source projects to build their design system.
+Today, countless teams and organizations rely on our open-source libraries to build their design system.
A couple of years ago, we started to expand our suite of products.
We released [MUI X](/x/), a collection of advanced components; [MUI Design kits](/design-kits/), the MUI components available for the most popular design tools; and also host [Templates](/templates/), a set of pre-built UI kits.
@@ -125,4 +125,4 @@ You can find the other perks & benefits on the [careers](/careers/#perks-amp-ben
## How to apply?
-[Apply now for this position 📮](https://airtable.com/shrdqo1Z6srZXGcvh?prefill_Applying+for=React%20Engineer%20-%20X)
+[Apply now for this position 📮](https://airtable.com/shrdqo1Z6srZXGcvh?prefill_Applying+for=React%20Engineer%20-%20X&prefill_source=mui.com)
diff --git a/docs/src/pages/company/careers/react-support-engineer.md b/docs/src/pages/careers/react-support-engineer.md
similarity index 99%
rename from docs/src/pages/company/careers/react-support-engineer.md
rename to docs/src/pages/careers/react-support-engineer.md
index 21701966da2f9c..4ce2e4d4f0c71f 100644
--- a/docs/src/pages/company/careers/react-support-engineer.md
+++ b/docs/src/pages/careers/react-support-engineer.md
@@ -15,7 +15,7 @@
MUI started with Material-UI, the most successful React implementation of Google's Material Design.
It has gained a large following, not only due to the fidelity to Material Design, but also because of the number of components, its carefully designed component API, obsession for details, and community engagement.
-Today, countless teams and organizations rely on our open-source projects to build their design system.
+Today, countless teams and organizations rely on our open-source libraries to build their design system.
A couple of years ago, we started to expand our suite of products.
We released [MUI X](/x/), a collection of advanced components; [MUI Design kits](/design-kits/), the MUI components available for the most popular design tools; and also host [Templates](/templates/), a set of pre-built UI kits.
@@ -118,4 +118,4 @@ You can find the other perks & benefits on the [careers](/careers/#perks-amp-ben
## How to apply?
-[Apply now for this position 📮](https://airtable.com/shrdqo1Z6srZXGcvh?prefill_Applying+for=React%20Support%20Engineer%20-%20X)
+[Apply now for this position 📮](https://airtable.com/shrdqo1Z6srZXGcvh?prefill_Applying+for=React%20Support%20Engineer%20-%20X&prefill_source=mui.com)
diff --git a/docs/src/pages/company/careers/support-agent.md b/docs/src/pages/careers/support-agent.md
similarity index 96%
rename from docs/src/pages/company/careers/support-agent.md
rename to docs/src/pages/careers/support-agent.md
index ed9dd05cfc0ab9..87fe7ecb9e0424 100644
--- a/docs/src/pages/company/careers/support-agent.md
+++ b/docs/src/pages/careers/support-agent.md
@@ -14,7 +14,7 @@
MUI started with Material-UI, the most successful React implementation of Google's Material Design.
It has gained a large following, not only due to the fidelity to Material Design, but also because of the number of components, its carefully designed component API, obsession for details, and community engagement.
-Today, countless teams and organizations rely on our open-source projects to build their design system.
+Today, countless teams and organizations rely on our open-source libraries to build their design system.
A couple of years ago, we started to expand our suite of products.
We released [MUI X](/x/), a collection of advanced components; [MUI Design kits](/design-kits/), the MUI components available for the most popular design tools; and also host [Templates](/templates/), a set of pre-built UI kits.
@@ -69,4 +69,4 @@ You can find the other perks & benefits on the [careers](/careers/#perks-amp-ben
## How to apply?
-[Apply now for this position 📮](https://airtable.com/shrdqo1Z6srZXGcvh?prefill_Applying+for=Support%20Agent%20-%20Store)
+[Apply now for this position 📮](https://airtable.com/shrdqo1Z6srZXGcvh?prefill_Applying+for=Support%20Agent%20-%20Store&prefill_source=mui.com)
diff --git a/docs/src/pages/company/careers/technical-product-manager.md b/docs/src/pages/careers/technical-product-manager.md
similarity index 97%
rename from docs/src/pages/company/careers/technical-product-manager.md
rename to docs/src/pages/careers/technical-product-manager.md
index 661aee3266f700..7fa7627817b3c9 100644
--- a/docs/src/pages/company/careers/technical-product-manager.md
+++ b/docs/src/pages/careers/technical-product-manager.md
@@ -14,7 +14,7 @@
MUI started with Material-UI, the most successful React implementation of Google's Material Design.
It has gained a large following, not only due to the fidelity to Material Design, but also because of the number of components, its carefully designed component API, obsession for details, and community engagement.
-Today, countless teams and organizations rely on our open-source projects to build their design system.
+Today, countless teams and organizations rely on our open-source libraries to build their design system.
A couple of years ago, we started to expand our suite of products.
We released [MUI X](/x/), a collection of advanced components; [MUI Design kits](/design-kits/), the MUI components available for the most popular design tools; and also host [Templates](/templates/), a set of pre-built UI kits.
@@ -77,4 +77,4 @@ You can find the other perks & benefits on the [careers](/careers/#perks-amp-ben
## How to apply?
-[Apply now for this position 📮](https://airtable.com/shrdqo1Z6srZXGcvh?prefill_Applying+for=Technical%20Product%20Manager)
+[Apply now for this position 📮](https://airtable.com/shrdqo1Z6srZXGcvh?prefill_Applying+for=Technical%20Product%20Manager&prefill_source=mui.com)
diff --git a/docs/src/pages/company/careers/full-stack-engineer.md b/docs/src/pages/company/careers/full-stack-engineer.md
index 1035ab1f32fd92..25821423505bf5 100644
--- a/docs/src/pages/company/careers/full-stack-engineer.md
+++ b/docs/src/pages/company/careers/full-stack-engineer.md
@@ -15,7 +15,7 @@
MUI started with Material-UI, the most successful React implementation of Google's Material Design.
It has gained a large following, not only due to the fidelity to Material Design, but also because of the number of components, its carefully designed component API, obsession for details, and community engagement.
-Today, countless teams and organizations rely on our open-source projects to build their design system.
+Today, countless teams and organizations rely on our open-source libraries to build their design system.
A couple of years ago, we started to expand our suite of products.
We released [MUI X](/x/), a collection of advanced components; [MUI Design kits](/design-kits/), the MUI components available for the most popular design tools; and also host [Templates](/templates/), a set of pre-built UI kits.
@@ -83,4 +83,4 @@ You can find the other perks & benefits on the [careers](/careers/#perks-amp-ben
## How to apply?
-[Apply now for this position 📮](https://airtable.com/shrdqo1Z6srZXGcvh?prefill_Applying+for=Full-stack%20Engineer%20-%20Studio)
+[Apply now for this position 📮](https://airtable.com/shrdqo1Z6srZXGcvh?prefill_Applying+for=Full-stack%20Engineer%20-%20Studio&prefill_source=mui.com)
diff --git a/docs/src/pages/versions/versions.md b/docs/src/pages/versions/versions.md
index 53fda2ddbece9c..59523ef4c9ca7e 100644
--- a/docs/src/pages/versions/versions.md
+++ b/docs/src/pages/versions/versions.md
@@ -54,9 +54,29 @@ You can follow the [milestones](https://github.com/mui/material-ui/milestones) f
> ⚠️ **Disclaimer**: We operate in a dynamic environment, and things are subject to change. The information provided is intended to outline the general framework direction, for informational purposes only. We may decide to add or remove new items at any time, depending on our capability to deliver while meeting our quality standards. The development, releases, and timing of any features or functionality remains at the sole discretion of MUI. The roadmap does not represent a commitment, obligation, or promise to deliver at any time.
-## Support policy
+## Supported versions
-Find details on the [supported versions](/getting-started/support/#supported-versions).
+MUI Core has been open-source ([MIT](https://tldrlegal.com/license/mit-license)) since the very beginning, and always will be.
+Developers can ensure MUI is the right choice for their React applications through MUI's community maintenance strategy.
+The MUI team regularly ships new releases, bug fixes, and is very welcoming to community pull requests.
+
+Given the reality of time and resource constraints, as well as the desire to keep innovating, over time it becomes necessary to shift focus to newer versions of the framework ([our release schedule](#release-frequency)), while making the transition to newer versions as smooth as possible, including publishing migration guides such as [this one for v5](/guides/migration-v4/).
+The open-source community is always welcome to submit new features and bug fixes as well.
+
+The current status of each MUI version is as follows:
+
+- MUI Core v5: ✅ Active development and continuous support.
+- [MUI Core v4](https://v4.mui.com/): ⚠️ Guaranteed Support (only) for security issues and regressions.
+- [MUI Core v3](https://v3.mui.com/): 🅧 No longer supported.
+- ~MUI Core v2 (never existed)~.
+- [MUI Core v1](https://v1.mui.com/): 🅧 No longer supported.
+- [MUI Core v0.x](https://v0.mui.com/#/): 🅧 No longer supported.
+
+For teams and organizations that require additional support for older versions, MUI has [options available](/getting-started/support/#professional-support-premium).
+
+### Long-term support
+
+MUI will continue to give security updates and regressions support (for example, if there's any regression caused by Chrome, React, etc) to the version prior to the current major until the next one is released.
## Deprecation practices
diff --git a/docs/translations/api-docs/desktop-date-picker/desktop-date-picker.json b/docs/translations/api-docs/desktop-date-picker/desktop-date-picker.json
index 32a0a6825c16a6..22117d66e97fe4 100644
--- a/docs/translations/api-docs/desktop-date-picker/desktop-date-picker.json
+++ b/docs/translations/api-docs/desktop-date-picker/desktop-date-picker.json
@@ -4,6 +4,8 @@
"acceptRegex": "Regular expression to detect "accepted" symbols.",
"allowSameDateSelection": "If true, onChange is fired on click even if the same date is selected.",
"className": "className applied to the root component.",
+ "clearable": "If true, it shows the clear action in the picker dialog.",
+ "clearText": "Clear text message.",
"components": "The components used for each slot. Either a string to use a HTML element or a component.",
"componentsProps": "The props used for each slot inside.",
"defaultCalendarMonth": "Default calendar month displayed when value={null}.",
diff --git a/docs/translations/api-docs/desktop-date-range-picker/desktop-date-range-picker.json b/docs/translations/api-docs/desktop-date-range-picker/desktop-date-range-picker.json
index 121867c745cda4..1b1d9e0a16ff8f 100644
--- a/docs/translations/api-docs/desktop-date-range-picker/desktop-date-range-picker.json
+++ b/docs/translations/api-docs/desktop-date-range-picker/desktop-date-range-picker.json
@@ -5,6 +5,8 @@
"allowSameDateSelection": "If true, onChange is fired on click even if the same date is selected.",
"calendars": "The number of calendars that render on desktop.",
"className": "className applied to the root component.",
+ "clearable": "If true, it shows the clear action in the picker dialog.",
+ "clearText": "Clear text message.",
"components": "The components used for each slot. Either a string to use a HTML element or a component.",
"componentsProps": "The props used for each slot inside.",
"defaultCalendarMonth": "Default calendar month displayed when value={null}.",
diff --git a/docs/translations/api-docs/desktop-date-time-picker/desktop-date-time-picker.json b/docs/translations/api-docs/desktop-date-time-picker/desktop-date-time-picker.json
index b1527a57500b87..26ea2961e051a7 100644
--- a/docs/translations/api-docs/desktop-date-time-picker/desktop-date-time-picker.json
+++ b/docs/translations/api-docs/desktop-date-time-picker/desktop-date-time-picker.json
@@ -6,6 +6,8 @@
"ampm": "12h/24h view for hour selection clock.",
"ampmInClock": "Display ampm controls under the clock (instead of in the toolbar).",
"className": "className applied to the root component.",
+ "clearable": "If true, it shows the clear action in the picker dialog.",
+ "clearText": "Clear text message.",
"components": "The components used for each slot. Either a string to use a HTML element or a component.",
"componentsProps": "The props used for each slot inside.",
"dateRangeIcon": "Date tab icon.",
diff --git a/docs/translations/api-docs/desktop-time-picker/desktop-time-picker.json b/docs/translations/api-docs/desktop-time-picker/desktop-time-picker.json
index 738a34c0a975ab..c7cf88858c917b 100644
--- a/docs/translations/api-docs/desktop-time-picker/desktop-time-picker.json
+++ b/docs/translations/api-docs/desktop-time-picker/desktop-time-picker.json
@@ -5,6 +5,8 @@
"ampm": "12h/24h view for hour selection clock.",
"ampmInClock": "Display ampm controls under the clock (instead of in the toolbar).",
"className": "className applied to the root component.",
+ "clearable": "If true, it shows the clear action in the picker dialog.",
+ "clearText": "Clear text message.",
"components": "The components used for each slot. Either a string to use a HTML element or a component.",
"disableCloseOnSelect": "If true the popup or dialog will immediately close after submitting full date.",
"disabled": "If true, the picker and text field are disabled.",
diff --git a/docs/translations/api-docs/toggle-button/toggle-button.json b/docs/translations/api-docs/toggle-button/toggle-button.json
index 175be96f779b6a..8029acc7559c48 100644
--- a/docs/translations/api-docs/toggle-button/toggle-button.json
+++ b/docs/translations/api-docs/toggle-button/toggle-button.json
@@ -8,6 +8,8 @@
"disableFocusRipple": "If true, the keyboard focus ripple is disabled.",
"disableRipple": "If true, the ripple effect is disabled. ⚠️ Without a ripple there is no styling for :focus-visible by default. Be sure to highlight the element by applying separate styles with the .Mui-focusVisible class.",
"fullWidth": "If true, the button will take up the full width of its container.",
+ "onChange": "Callback fired when the state changes.
Signature: function(event: React.MouseEvent<HTMLElement>, value: any) => void event: The event source of the callback. value: of the selected button.",
+ "onClick": "Callback fired when the button is clicked.
Signature: function(event: React.MouseEvent<HTMLElement>, value: any) => void event: The event source of the callback. value: of the selected button.",
"selected": "If true, the button is rendered in an active state.",
"size": "The size of the component. The prop defaults to the value inherited from the parent ToggleButtonGroup component.",
"sx": "The system prop that allows defining system overrides as well as additional CSS styles. See the `sx` page for more details.",
diff --git a/docs/translations/translations.json b/docs/translations/translations.json
index eef02a8bc5a4ef..0529aad8667ca3 100644
--- a/docs/translations/translations.json
+++ b/docs/translations/translations.json
@@ -322,7 +322,7 @@
"/guides/content-security-policy": "Content Security Policy",
"/guides/right-to-left": "Right-to-left",
"/guides/flow": "Flow",
- "/styles": "Styles (legacy)",
+ "/styles": "Styles",
"/styles/basics": "Basics",
"/styles/advanced": "Advanced",
"/discover-more": "Discover More",
diff --git a/framer/.prettierignore b/framer/.prettierignore
deleted file mode 100644
index 9a491997b37ad0..00000000000000
--- a/framer/.prettierignore
+++ /dev/null
@@ -1,4 +0,0 @@
-Material-UI.framerfx/design/*
-Material-UI.framerfx/build/*
-Material-UI.framerfx/dist/*
-canvas.tsx
diff --git a/framer/Material-UI.framerfx/.gitignore b/framer/Material-UI.framerfx/.gitignore
deleted file mode 100644
index d745bb15830da7..00000000000000
--- a/framer/Material-UI.framerfx/.gitignore
+++ /dev/null
@@ -1,17 +0,0 @@
-# General
-.DS_Store
-Icon\r
-
-# Framer
-/.backups
-/.cache
-/build
-/dist
-node_modules
-.config.json
-.project.log
-.framer-lock
-.npmrc
-.yarnrc
-yarn-error.log
-canvas.tsx
diff --git a/framer/Material-UI.framerfx/.npmrc b/framer/Material-UI.framerfx/.npmrc
deleted file mode 100644
index b2fd3963eab639..00000000000000
--- a/framer/Material-UI.framerfx/.npmrc
+++ /dev/null
@@ -1,3 +0,0 @@
-@framer:registry=https://registry.framer.com/
-always-auth=true
-//registry.framer.com/:_authToken=${FRAMER_TOKEN}
diff --git a/framer/Material-UI.framerfx/.yarnignore b/framer/Material-UI.framerfx/.yarnignore
deleted file mode 100644
index 3a18e4d79e8ffb..00000000000000
--- a/framer/Material-UI.framerfx/.yarnignore
+++ /dev/null
@@ -1,16 +0,0 @@
-# General
-.DS_Store
-Icon\r
-
-# Framer
-/.backups
-/.cache
-/build
-/design
-node_modules
-.config.json
-.project.log
-.framer-lock
-.npmrc
-.yarnrc
-yarn-error.log
diff --git a/framer/Material-UI.framerfx/README.md b/framer/Material-UI.framerfx/README.md
deleted file mode 100644
index cccb302ecedb14..00000000000000
--- a/framer/Material-UI.framerfx/README.md
+++ /dev/null
@@ -1,79 +0,0 @@
-# MUI
-
-This is the official resource for MUI React components in Framer.
-
-[MUI](https://mui.com/) is a library of React components for faster and simpler web development.
-You can build your own design system, or start with Material Design.
-
-## Supported components
-
-The following components are currently supported:
-
-- App bar
-- Avatar
-- Badge
-- Bottom navigation
-- Button
-- Checkbox
-- Chip
-- Circular progress
-- Floating action button (Fab)
-- Icon (all 1100+ Material Icons in 5 themes, plus social icons)
-- Icon button (with optional badge)
-- Linear progress
-- List
-- List item
-- Media card
-- Paper
-- Radio
-- Radio group
-- Slider
-- Snackbar content
-- Switch
-- Tabs
-- Text field
-- Theme (to globally set primary, secondary and error colors)
-- Typography
-
-## Usage
-
-### Icons
-
-Icons can be specified using either snake_case (as documented on material.io),
-or PascalCase, as used in [the MUI documentation](https://mui.com/components/material-icons/).
-Simply type the icon name in the appropriate property control.
-
-The icon theme can be chosen from the related select field.
-
-### Children
-
-Where a component (such as Avatar) accepts a variety of child types, these can be configured through Framer property controls.
-If multiple options are supplied, they take the following priority:
-
-- Local image
-- Image URL
-- Icon
-- Text
-
-## Resources
-
-- [MUI documentation](https://mui.com/)
-- [GitHub repository](https://github.com/mui/material-ui/tree/HEAD/framer)
-
-## Releases
-
-### 1.1.0 2020-02-21
-
-- Add support for Framer shared colors to the Theme component.
-- Add Info, Success and Warning colors to the Theme component.
-- Add variant (circle, rounded or square) to the Avatar component.
-- Add disable elevation (to remove the drop shadow) to the Button component.
-- Add size (medium or small) to the Checkbox and Radio and TextField components.
-- Add variant (elevation or outlined) to the Paper component.
-- Add color (primary or secondary) to the TextField component.
-- Fix an issue that caused the MUI Framer package to appear to have no components,
- and existing projects using MUI to break.
-
-### 1.0.0 2019-11-11
-
-- Initial release.
diff --git a/framer/Material-UI.framerfx/code/AppBar.tsx b/framer/Material-UI.framerfx/code/AppBar.tsx
deleted file mode 100644
index 03bc5f6a83f3fd..00000000000000
--- a/framer/Material-UI.framerfx/code/AppBar.tsx
+++ /dev/null
@@ -1,100 +0,0 @@
-import * as React from 'react';
-import { PropertyControls, ControlType } from 'framer';
-import MuiAppBar from '@mui/material/AppBar';
-import Toolbar from '@mui/material/Toolbar';
-import Typography from '@mui/material/Typography';
-import Button from '@mui/material/Button';
-import { IconButton } from './IconButton';
-
-// Define type of property
-interface Props {
- title?: string;
- leftIcon?: string;
- icon1?: string;
- icon1Badge?: string;
- icon2?: string;
- icon2Badge?: string;
- action1?: string;
- action2?: string;
-}
-
-export class AppBar extends React.Component {
- // Set default properties
- static defaultProps = {
- width: 300,
- height: 56,
- leftIcon: 'menu',
- title: 'MUI',
- action1: 'Login',
- action2: '',
- icon1: 'notifications',
- icon1Badge: '8',
- icon2: 'account_circle',
- icon2Badge: '',
- };
-
- // Items shown in property panel
- static propertyControls: PropertyControls = {
- leftIcon: { type: ControlType.String, title: 'Left icon' },
- title: { type: ControlType.String, title: 'Title' },
- action1: { type: ControlType.String, title: 'Action 1' },
- action2: {
- type: ControlType.String,
- title: 'Action 2',
- hidden(props) {
- return props.action1 === '' && props.action2 !== '';
- },
- },
- icon1: { type: ControlType.String, title: 'Icon 1' },
- icon1Badge: { type: ControlType.String, title: 'Icon 1 badge' },
- icon2: {
- type: ControlType.String,
- title: 'Icon 2',
- hidden(props) {
- return props.icon1 === '' && props.icon2 !== '';
- },
- },
- icon2Badge: { type: ControlType.String, title: 'Icon 2 badge' },
- };
-
- render() {
- const { action1, action2, icon1, icon1Badge, icon2, icon2Badge, leftIcon, title } = this.props;
- return (
-