diff --git a/.circleci/config.yml b/.circleci/config.yml
index 386fdfbe7ea6b2..cb64678a5a755a 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -136,7 +136,7 @@ jobs:
steps:
- run:
name: Should not have any git not staged
- command: git diff --exit-code
+ command: git add -A && git diff --exit-code --staged
- run:
name: Check for duplicated packages
command: yarn deduplicate
@@ -222,35 +222,35 @@ jobs:
command: yarn proptypes
- run:
name: '`yarn proptypes` changes committed?'
- command: git diff --exit-code
+ command: git add -A && git diff --exit-code --staged
- run:
name: 'Write "use client" directive'
command: yarn rsc:build
- run:
name: '`yarn rsc:build` changes detected, "use client" missing from exports'
- command: git diff --exit-code
+ command: git add -A && git diff --exit-code --staged
- run:
name: Generate the documentation
command: yarn docs:api
- run:
name: '`yarn docs:api` changes committed?'
- command: git diff --exit-code
+ command: git add -A && git diff --exit-code --staged
- run:
name: Update the navigation translations
command: yarn docs:i18n
- run:
name: '`yarn docs:i18n` changes committed?'
- command: git diff --exit-code
+ command: git add -A && git diff --exit-code --staged
- run:
name: '`yarn extract-error-codes` changes committed?'
command: |
yarn extract-error-codes
- git diff --exit-code
+ git add -A && git diff --exit-code --staged
- run:
name: '`yarn docs:link-check` changes committed?'
command: |
yarn docs:link-check
- git diff --exit-code
+ git add -A && git diff --exit-code --staged
test_types:
<<: *defaults
resource_class: 'medium+'
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 89eb047708406b..b593fa53be9b15 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -16,7 +16,6 @@ If you're reading this, you're awesome! Thank you for helping us make this proje
- [Coding style](#coding-style)
- [How to add a new demo in the documentation](#how-to-add-a-new-demo-in-the-documentation)
- [How can I use a change that wasn't released yet?](#how-can-i-use-a-change-that-wasnt-released-yet)
-- [Translations](#translations)
- [Roadmap](#roadmap)
- [License](#license)
@@ -345,13 +344,6 @@ $test-project> npm i ./path-to-file/mui-material-x.x.x.tar.gz
> If you have already installed this package, your changes will not be reflected when you reinstall it.
> As a quick fix, you can temporarily bump the version number in your `package.json` before running `yarn build`.
-## Translations
-
-Translations are handled via [Crowdin](https://translate.mui.com).
-You don't need to apply any changes to localized versions of our markdown files
-i.e. files having a `-locale` suffix. Crowdin automatically takes care of syncing
-these changes across the localized versions.
-
## Roadmap
To get a sense of where MUI is heading, or for ideas on where you could contribute, take a look at the [roadmap](https://mui.com/material-ui/discover-more/roadmap/).
diff --git a/README.md b/README.md
index aefd6baf51bed7..084fae1a0054ad 100644
--- a/README.md
+++ b/README.md
@@ -131,7 +131,7 @@ Diamond Sponsors are those who have pledged \$1,500/month or more to MUI.
via [OpenCollective](https://opencollective.com/mui) or via [Patreon](https://www.patreon.com/oliviertassinari)
-
+
diff --git a/docs/data/base/components/button/UnstyledButtonsSimple/tailwind/index.js b/docs/data/base/components/button/UnstyledButtonsSimple/tailwind/index.js
index fdcc06f3e72fa7..236a3664dddcef 100644
--- a/docs/data/base/components/button/UnstyledButtonsSimple/tailwind/index.js
+++ b/docs/data/base/components/button/UnstyledButtonsSimple/tailwind/index.js
@@ -9,7 +9,7 @@ export default function UnstyledButtonsSimple() {
Button
Disabled
diff --git a/docs/data/base/components/button/UnstyledButtonsSimple/tailwind/index.tsx b/docs/data/base/components/button/UnstyledButtonsSimple/tailwind/index.tsx
index fdcc06f3e72fa7..236a3664dddcef 100644
--- a/docs/data/base/components/button/UnstyledButtonsSimple/tailwind/index.tsx
+++ b/docs/data/base/components/button/UnstyledButtonsSimple/tailwind/index.tsx
@@ -9,7 +9,7 @@ export default function UnstyledButtonsSimple() {
Button
Disabled
diff --git a/docs/data/base/components/button/UnstyledButtonsSimple/tailwind/index.tsx.preview b/docs/data/base/components/button/UnstyledButtonsSimple/tailwind/index.tsx.preview
index 544c50bb7e88b0..b45ed341d8ae54 100644
--- a/docs/data/base/components/button/UnstyledButtonsSimple/tailwind/index.tsx.preview
+++ b/docs/data/base/components/button/UnstyledButtonsSimple/tailwind/index.tsx.preview
@@ -2,7 +2,7 @@
Button
Disabled
diff --git a/docs/data/base/components/tabs/UnstyledTabsCustomized/css/index.js b/docs/data/base/components/tabs/UnstyledTabsCustomized/css/index.js
new file mode 100644
index 00000000000000..2cc84eb66fdcc3
--- /dev/null
+++ b/docs/data/base/components/tabs/UnstyledTabsCustomized/css/index.js
@@ -0,0 +1,121 @@
+import * as React from 'react';
+import { useTheme } from '@mui/system';
+import Tabs from '@mui/base/Tabs';
+import TabsList from '@mui/base/TabsList';
+import TabPanel from '@mui/base/TabPanel';
+import { buttonClasses } from '@mui/base/Button';
+import Tab, { tabClasses } from '@mui/base/Tab';
+
+export default function UnstyledTabsCustomized() {
+ return (
+
+
+
+
+ One
+
+
+ Two
+
+
+ Three
+
+
+
+ First page
+
+
+ Second page
+
+
+ Third page
+
+
+
+
+ );
+}
+
+const cyan = {
+ 50: '#E9F8FC',
+ 100: '#BDEBF4',
+ 200: '#99D8E5',
+ 300: '#66BACC',
+ 400: '#1F94AD',
+ 500: '#0D5463',
+ 600: '#094855',
+ 700: '#063C47',
+ 800: '#043039',
+ 900: '#022127',
+};
+
+function useIsDarkMode() {
+ const theme = useTheme();
+ return theme.palette.mode === 'dark';
+}
+
+function Styles() {
+ // Replace this with your app logic for determining dark mode
+ const isDarkMode = useIsDarkMode();
+ return (
+
+ );
+}
diff --git a/docs/data/base/components/tabs/UnstyledTabsCustomized/css/index.tsx b/docs/data/base/components/tabs/UnstyledTabsCustomized/css/index.tsx
new file mode 100644
index 00000000000000..2cc84eb66fdcc3
--- /dev/null
+++ b/docs/data/base/components/tabs/UnstyledTabsCustomized/css/index.tsx
@@ -0,0 +1,121 @@
+import * as React from 'react';
+import { useTheme } from '@mui/system';
+import Tabs from '@mui/base/Tabs';
+import TabsList from '@mui/base/TabsList';
+import TabPanel from '@mui/base/TabPanel';
+import { buttonClasses } from '@mui/base/Button';
+import Tab, { tabClasses } from '@mui/base/Tab';
+
+export default function UnstyledTabsCustomized() {
+ return (
+
+
+
+
+ One
+
+
+ Two
+
+
+ Three
+
+
+
+ First page
+
+
+ Second page
+
+
+ Third page
+
+
+
+
+ );
+}
+
+const cyan = {
+ 50: '#E9F8FC',
+ 100: '#BDEBF4',
+ 200: '#99D8E5',
+ 300: '#66BACC',
+ 400: '#1F94AD',
+ 500: '#0D5463',
+ 600: '#094855',
+ 700: '#063C47',
+ 800: '#043039',
+ 900: '#022127',
+};
+
+function useIsDarkMode() {
+ const theme = useTheme();
+ return theme.palette.mode === 'dark';
+}
+
+function Styles() {
+ // Replace this with your app logic for determining dark mode
+ const isDarkMode = useIsDarkMode();
+ return (
+
+ );
+}
diff --git a/docs/data/base/components/tabs/UnstyledTabsCustomized.js b/docs/data/base/components/tabs/UnstyledTabsCustomized/system/index.js
similarity index 85%
rename from docs/data/base/components/tabs/UnstyledTabsCustomized.js
rename to docs/data/base/components/tabs/UnstyledTabsCustomized/system/index.js
index 0c69d127ebb942..e7e1a46e3ec724 100644
--- a/docs/data/base/components/tabs/UnstyledTabsCustomized.js
+++ b/docs/data/base/components/tabs/UnstyledTabsCustomized/system/index.js
@@ -34,19 +34,6 @@ const blue = {
900: '#003A75',
};
-const grey = {
- 50: '#f6f8fa',
- 100: '#eaeef2',
- 200: '#d0d7de',
- 300: '#afb8c1',
- 400: '#8c959f',
- 500: '#6e7781',
- 600: '#57606a',
- 700: '#424a53',
- 800: '#32383f',
- 900: '#24292f',
-};
-
const StyledTab = styled(Tab)`
font-family: 'IBM Plex Sans', sans-serif;
color: white;
@@ -55,10 +42,11 @@ const StyledTab = styled(Tab)`
font-weight: bold;
background-color: transparent;
width: 100%;
- padding: 12px;
+ line-height: 1.5;
+ padding: 8px 12px;
margin: 6px;
border: none;
- border-radius: 7px;
+ border-radius: 8px;
display: flex;
justify-content: center;
@@ -98,6 +86,8 @@ const StyledTabsList = styled(TabsList)(
align-items: center;
justify-content: center;
align-content: space-between;
- box-shadow: 0px 4px 8px ${theme.palette.mode === 'dark' ? grey[900] : grey[200]};
+ box-shadow: 0px 4px 6px ${
+ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.4)' : 'rgba(0,0,0, 0.2)'
+ };
`,
);
diff --git a/docs/data/base/components/tabs/UnstyledTabsCustomized.tsx b/docs/data/base/components/tabs/UnstyledTabsCustomized/system/index.tsx
similarity index 85%
rename from docs/data/base/components/tabs/UnstyledTabsCustomized.tsx
rename to docs/data/base/components/tabs/UnstyledTabsCustomized/system/index.tsx
index 0c69d127ebb942..e7e1a46e3ec724 100644
--- a/docs/data/base/components/tabs/UnstyledTabsCustomized.tsx
+++ b/docs/data/base/components/tabs/UnstyledTabsCustomized/system/index.tsx
@@ -34,19 +34,6 @@ const blue = {
900: '#003A75',
};
-const grey = {
- 50: '#f6f8fa',
- 100: '#eaeef2',
- 200: '#d0d7de',
- 300: '#afb8c1',
- 400: '#8c959f',
- 500: '#6e7781',
- 600: '#57606a',
- 700: '#424a53',
- 800: '#32383f',
- 900: '#24292f',
-};
-
const StyledTab = styled(Tab)`
font-family: 'IBM Plex Sans', sans-serif;
color: white;
@@ -55,10 +42,11 @@ const StyledTab = styled(Tab)`
font-weight: bold;
background-color: transparent;
width: 100%;
- padding: 12px;
+ line-height: 1.5;
+ padding: 8px 12px;
margin: 6px;
border: none;
- border-radius: 7px;
+ border-radius: 8px;
display: flex;
justify-content: center;
@@ -98,6 +86,8 @@ const StyledTabsList = styled(TabsList)(
align-items: center;
justify-content: center;
align-content: space-between;
- box-shadow: 0px 4px 8px ${theme.palette.mode === 'dark' ? grey[900] : grey[200]};
+ box-shadow: 0px 4px 6px ${
+ theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.4)' : 'rgba(0,0,0, 0.2)'
+ };
`,
);
diff --git a/docs/data/base/components/tabs/UnstyledTabsCustomized.tsx.preview b/docs/data/base/components/tabs/UnstyledTabsCustomized/system/index.tsx.preview
similarity index 100%
rename from docs/data/base/components/tabs/UnstyledTabsCustomized.tsx.preview
rename to docs/data/base/components/tabs/UnstyledTabsCustomized/system/index.tsx.preview
diff --git a/docs/data/base/components/tabs/UnstyledTabsCustomized/tailwind/index.js b/docs/data/base/components/tabs/UnstyledTabsCustomized/tailwind/index.js
new file mode 100644
index 00000000000000..8225fc8abf7eef
--- /dev/null
+++ b/docs/data/base/components/tabs/UnstyledTabsCustomized/tailwind/index.js
@@ -0,0 +1,71 @@
+import * as React from 'react';
+import Tabs from '@mui/base/Tabs';
+import TabsList from '@mui/base/TabsList';
+import TabPanel from '@mui/base/TabPanel';
+import Tab from '@mui/base/Tab';
+
+export default function UnstyledTabsCustomized() {
+ return (
+
+
+ ({
+ className: `${
+ selected
+ ? 'text-purple-500 bg-white'
+ : 'text-white bg-transparent focus:text-white hover:bg-purple-400'
+ } ${
+ disabled ? 'cursor-not-allowed opacity-50' : 'cursor-pointer'
+ } text-sm font-bold w-full p-2 m-1.5 border-0 rounded-lg flex justify-center focus:outline-0 focus:shadow-outline-purple-light`,
+ }),
+ }}
+ value={1}
+ >
+ One
+
+ ({
+ className: `${
+ selected
+ ? 'text-purple-500 bg-white'
+ : 'text-white bg-transparent focus:text-white hover:bg-purple-400'
+ } ${
+ disabled ? 'cursor-not-allowed opacity-50' : 'cursor-pointer'
+ } text-sm font-bold w-full p-2 m-1.5 border-0 rounded-md flex justify-center focus:outline-0 focus:shadow-outline-purple-light`,
+ }),
+ }}
+ value={2}
+ >
+ Two
+
+ ({
+ className: `${
+ selected
+ ? 'text-purple-500 bg-white'
+ : 'text-white bg-transparent focus:text-white hover:bg-purple-400'
+ } ${
+ disabled ? 'cursor-not-allowed opacity-50' : 'cursor-pointer'
+ } text-sm font-bold w-full p-2 m-1.5 border-0 rounded-md flex justify-center focus:outline-0 focus:shadow-outline-purple-light`,
+ }),
+ }}
+ value={3}
+ >
+ Three
+
+
+
+ First page
+
+
+ Second page
+
+
+ Third page
+
+
+ );
+}
diff --git a/docs/data/base/components/tabs/UnstyledTabsCustomized/tailwind/index.tsx b/docs/data/base/components/tabs/UnstyledTabsCustomized/tailwind/index.tsx
new file mode 100644
index 00000000000000..8225fc8abf7eef
--- /dev/null
+++ b/docs/data/base/components/tabs/UnstyledTabsCustomized/tailwind/index.tsx
@@ -0,0 +1,71 @@
+import * as React from 'react';
+import Tabs from '@mui/base/Tabs';
+import TabsList from '@mui/base/TabsList';
+import TabPanel from '@mui/base/TabPanel';
+import Tab from '@mui/base/Tab';
+
+export default function UnstyledTabsCustomized() {
+ return (
+
+
+ ({
+ className: `${
+ selected
+ ? 'text-purple-500 bg-white'
+ : 'text-white bg-transparent focus:text-white hover:bg-purple-400'
+ } ${
+ disabled ? 'cursor-not-allowed opacity-50' : 'cursor-pointer'
+ } text-sm font-bold w-full p-2 m-1.5 border-0 rounded-lg flex justify-center focus:outline-0 focus:shadow-outline-purple-light`,
+ }),
+ }}
+ value={1}
+ >
+ One
+
+ ({
+ className: `${
+ selected
+ ? 'text-purple-500 bg-white'
+ : 'text-white bg-transparent focus:text-white hover:bg-purple-400'
+ } ${
+ disabled ? 'cursor-not-allowed opacity-50' : 'cursor-pointer'
+ } text-sm font-bold w-full p-2 m-1.5 border-0 rounded-md flex justify-center focus:outline-0 focus:shadow-outline-purple-light`,
+ }),
+ }}
+ value={2}
+ >
+ Two
+
+ ({
+ className: `${
+ selected
+ ? 'text-purple-500 bg-white'
+ : 'text-white bg-transparent focus:text-white hover:bg-purple-400'
+ } ${
+ disabled ? 'cursor-not-allowed opacity-50' : 'cursor-pointer'
+ } text-sm font-bold w-full p-2 m-1.5 border-0 rounded-md flex justify-center focus:outline-0 focus:shadow-outline-purple-light`,
+ }),
+ }}
+ value={3}
+ >
+ Three
+
+
+
+ First page
+
+
+ Second page
+
+
+ Third page
+
+
+ );
+}
diff --git a/docs/data/base/components/tabs/tabs.md b/docs/data/base/components/tabs/tabs.md
index 00015eaa339be5..33c4d498852975 100644
--- a/docs/data/base/components/tabs/tabs.md
+++ b/docs/data/base/components/tabs/tabs.md
@@ -65,7 +65,7 @@ The following demo omits the `value` prop from the Tab components, and also defi
The next demo shows how to apply custom styles to a set of tabs:
-{{"demo": "UnstyledTabsCustomized.js"}}
+{{"demo": "UnstyledTabsCustomized"}}
### Anatomy
diff --git a/docs/data/base/components/textarea-autosize/UnstyledTextarea/css/index.js b/docs/data/base/components/textarea-autosize/UnstyledTextarea/css/index.js
new file mode 100644
index 00000000000000..ed76607a455f89
--- /dev/null
+++ b/docs/data/base/components/textarea-autosize/UnstyledTextarea/css/index.js
@@ -0,0 +1,86 @@
+import * as React from 'react';
+import TextareaAutosize from '@mui/base/TextareaAutosize';
+import { useTheme } from '@mui/system';
+
+export default function UnstyledTextareaAutosize() {
+ return (
+
+
+
+
+ );
+}
+const cyan = {
+ 50: '#E9F8FC',
+ 100: '#BDEBF4',
+ 200: '#99D8E5',
+ 300: '#66BACC',
+ 400: '#1F94AD',
+ 500: '#0D5463',
+ 600: '#094855',
+ 700: '#063C47',
+ 800: '#043039',
+ 900: '#022127',
+};
+
+const grey = {
+ 50: '#f6f8fa',
+ 100: '#eaeef2',
+ 200: '#d0d7de',
+ 300: '#afb8c1',
+ 400: '#8c959f',
+ 500: '#6e7781',
+ 600: '#57606a',
+ 700: '#424a53',
+ 800: '#32383f',
+ 900: '#24292f',
+};
+
+function useIsDarkMode() {
+ const theme = useTheme();
+ return theme.palette.mode === 'dark';
+}
+
+function Styles() {
+ // Replace this with your app logic for determining dark mode
+ const isDarkMode = useIsDarkMode();
+
+ return (
+
+ );
+}
diff --git a/docs/data/base/components/textarea-autosize/UnstyledTextarea/css/index.tsx b/docs/data/base/components/textarea-autosize/UnstyledTextarea/css/index.tsx
new file mode 100644
index 00000000000000..ed76607a455f89
--- /dev/null
+++ b/docs/data/base/components/textarea-autosize/UnstyledTextarea/css/index.tsx
@@ -0,0 +1,86 @@
+import * as React from 'react';
+import TextareaAutosize from '@mui/base/TextareaAutosize';
+import { useTheme } from '@mui/system';
+
+export default function UnstyledTextareaAutosize() {
+ return (
+
+
+
+
+ );
+}
+const cyan = {
+ 50: '#E9F8FC',
+ 100: '#BDEBF4',
+ 200: '#99D8E5',
+ 300: '#66BACC',
+ 400: '#1F94AD',
+ 500: '#0D5463',
+ 600: '#094855',
+ 700: '#063C47',
+ 800: '#043039',
+ 900: '#022127',
+};
+
+const grey = {
+ 50: '#f6f8fa',
+ 100: '#eaeef2',
+ 200: '#d0d7de',
+ 300: '#afb8c1',
+ 400: '#8c959f',
+ 500: '#6e7781',
+ 600: '#57606a',
+ 700: '#424a53',
+ 800: '#32383f',
+ 900: '#24292f',
+};
+
+function useIsDarkMode() {
+ const theme = useTheme();
+ return theme.palette.mode === 'dark';
+}
+
+function Styles() {
+ // Replace this with your app logic for determining dark mode
+ const isDarkMode = useIsDarkMode();
+
+ return (
+
+ );
+}
diff --git a/docs/data/base/components/textarea-autosize/UnstyledTextarea/css/index.tsx.preview b/docs/data/base/components/textarea-autosize/UnstyledTextarea/css/index.tsx.preview
new file mode 100644
index 00000000000000..d95c94780134f6
--- /dev/null
+++ b/docs/data/base/components/textarea-autosize/UnstyledTextarea/css/index.tsx.preview
@@ -0,0 +1,8 @@
+
+
+
+
\ No newline at end of file
diff --git a/docs/data/base/components/textarea-autosize/UnstyledTextarea/system/index.js b/docs/data/base/components/textarea-autosize/UnstyledTextarea/system/index.js
new file mode 100644
index 00000000000000..0f129b66d3bec0
--- /dev/null
+++ b/docs/data/base/components/textarea-autosize/UnstyledTextarea/system/index.js
@@ -0,0 +1,59 @@
+import * as React from 'react';
+import TextareaAutosize from '@mui/base/TextareaAutosize';
+import { styled } from '@mui/system';
+
+export default function EmptyTextarea() {
+ const blue = {
+ 100: '#DAECFF',
+ 200: '#b6daff',
+ 400: '#3399FF',
+ 500: '#007FFF',
+ 600: '#0072E5',
+ 900: '#003A75',
+ };
+
+ const grey = {
+ 50: '#f6f8fa',
+ 100: '#eaeef2',
+ 200: '#d0d7de',
+ 300: '#afb8c1',
+ 400: '#8c959f',
+ 500: '#6e7781',
+ 600: '#57606a',
+ 700: '#424a53',
+ 800: '#32383f',
+ 900: '#24292f',
+ };
+
+ const StyledTextarea = styled(TextareaAutosize)(
+ ({ theme }) => `
+ width: 320px;
+ font-family: IBM Plex Sans, sans-serif;
+ font-size: 0.875rem;
+ font-weight: 400;
+ line-height: 1.5;
+ padding: 12px;
+ border-radius: 12px 12px 0 12px;
+ color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]};
+ background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'};
+ border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]};
+ box-shadow: 0px 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]};
+
+ &:hover {
+ border-color: ${blue[400]};
+ }
+
+ &:focus {
+ border-color: ${blue[400]};
+ box-shadow: 0 0 0 3px ${theme.palette.mode === 'dark' ? blue[500] : blue[200]};
+ }
+
+ // firefox
+ &:focus-visible {
+ outline: 0;
+ }
+ `,
+ );
+
+ return ;
+}
diff --git a/docs/data/base/components/textarea-autosize/UnstyledTextarea/system/index.tsx b/docs/data/base/components/textarea-autosize/UnstyledTextarea/system/index.tsx
new file mode 100644
index 00000000000000..0f129b66d3bec0
--- /dev/null
+++ b/docs/data/base/components/textarea-autosize/UnstyledTextarea/system/index.tsx
@@ -0,0 +1,59 @@
+import * as React from 'react';
+import TextareaAutosize from '@mui/base/TextareaAutosize';
+import { styled } from '@mui/system';
+
+export default function EmptyTextarea() {
+ const blue = {
+ 100: '#DAECFF',
+ 200: '#b6daff',
+ 400: '#3399FF',
+ 500: '#007FFF',
+ 600: '#0072E5',
+ 900: '#003A75',
+ };
+
+ const grey = {
+ 50: '#f6f8fa',
+ 100: '#eaeef2',
+ 200: '#d0d7de',
+ 300: '#afb8c1',
+ 400: '#8c959f',
+ 500: '#6e7781',
+ 600: '#57606a',
+ 700: '#424a53',
+ 800: '#32383f',
+ 900: '#24292f',
+ };
+
+ const StyledTextarea = styled(TextareaAutosize)(
+ ({ theme }) => `
+ width: 320px;
+ font-family: IBM Plex Sans, sans-serif;
+ font-size: 0.875rem;
+ font-weight: 400;
+ line-height: 1.5;
+ padding: 12px;
+ border-radius: 12px 12px 0 12px;
+ color: ${theme.palette.mode === 'dark' ? grey[300] : grey[900]};
+ background: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'};
+ border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]};
+ box-shadow: 0px 2px 2px ${theme.palette.mode === 'dark' ? grey[900] : grey[50]};
+
+ &:hover {
+ border-color: ${blue[400]};
+ }
+
+ &:focus {
+ border-color: ${blue[400]};
+ box-shadow: 0 0 0 3px ${theme.palette.mode === 'dark' ? blue[500] : blue[200]};
+ }
+
+ // firefox
+ &:focus-visible {
+ outline: 0;
+ }
+ `,
+ );
+
+ return ;
+}
diff --git a/docs/data/base/components/textarea-autosize/UnstyledTextarea/system/index.tsx.preview b/docs/data/base/components/textarea-autosize/UnstyledTextarea/system/index.tsx.preview
new file mode 100644
index 00000000000000..eda12bcc18a053
--- /dev/null
+++ b/docs/data/base/components/textarea-autosize/UnstyledTextarea/system/index.tsx.preview
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/docs/data/base/components/textarea-autosize/UnstyledTextarea/tailwind/index.js b/docs/data/base/components/textarea-autosize/UnstyledTextarea/tailwind/index.js
new file mode 100644
index 00000000000000..b8c3086e530359
--- /dev/null
+++ b/docs/data/base/components/textarea-autosize/UnstyledTextarea/tailwind/index.js
@@ -0,0 +1,23 @@
+import * as React from 'react';
+import TextareaAutosize from '@mui/base/TextareaAutosize';
+import { useTheme } from '@mui/system';
+
+function useIsDarkMode() {
+ const theme = useTheme();
+ return theme.palette.mode === 'dark';
+}
+
+export default function UnstyledTextareaAutosize() {
+ // Replace this with your app logic for determining dark modes
+ const isDarkMode = useIsDarkMode();
+
+ return (
+
+
+
+ );
+}
diff --git a/docs/data/base/components/textarea-autosize/UnstyledTextarea/tailwind/index.tsx b/docs/data/base/components/textarea-autosize/UnstyledTextarea/tailwind/index.tsx
new file mode 100644
index 00000000000000..b8c3086e530359
--- /dev/null
+++ b/docs/data/base/components/textarea-autosize/UnstyledTextarea/tailwind/index.tsx
@@ -0,0 +1,23 @@
+import * as React from 'react';
+import TextareaAutosize from '@mui/base/TextareaAutosize';
+import { useTheme } from '@mui/system';
+
+function useIsDarkMode() {
+ const theme = useTheme();
+ return theme.palette.mode === 'dark';
+}
+
+export default function UnstyledTextareaAutosize() {
+ // Replace this with your app logic for determining dark modes
+ const isDarkMode = useIsDarkMode();
+
+ return (
+
+
+
+ );
+}
diff --git a/docs/data/base/components/textarea-autosize/UnstyledTextarea/tailwind/index.tsx.preview b/docs/data/base/components/textarea-autosize/UnstyledTextarea/tailwind/index.tsx.preview
new file mode 100644
index 00000000000000..f9fe223952f199
--- /dev/null
+++ b/docs/data/base/components/textarea-autosize/UnstyledTextarea/tailwind/index.tsx.preview
@@ -0,0 +1,5 @@
+
\ No newline at end of file
diff --git a/docs/data/base/components/textarea-autosize/textarea-autosize.md b/docs/data/base/components/textarea-autosize/textarea-autosize.md
index c79a435b96a314..62b534329fd52c 100644
--- a/docs/data/base/components/textarea-autosize/textarea-autosize.md
+++ b/docs/data/base/components/textarea-autosize/textarea-autosize.md
@@ -41,7 +41,7 @@ Textarea Autosize behaves similarly to the native HTML`