diff --git a/.gitignore b/.gitignore
index 9af505a5ed3c2c..9eff13488417df 100644
--- a/.gitignore
+++ b/.gitignore
@@ -47,6 +47,7 @@ screenshots
packed
test-results
.env
+.claude/worktrees
# typescript
*.tsbuildinfo
diff --git a/docs/data/material/components/accordion/AccordionExpandDefault.js b/docs/data/material/components/accordion/AccordionExpandDefault.js
index 1365ba63a3fc86..c045b66a3ed68d 100644
--- a/docs/data/material/components/accordion/AccordionExpandDefault.js
+++ b/docs/data/material/components/accordion/AccordionExpandDefault.js
@@ -1,3 +1,4 @@
+import * as React from 'react';
import Accordion from '@mui/material/Accordion';
import AccordionSummary from '@mui/material/AccordionSummary';
import AccordionDetails from '@mui/material/AccordionDetails';
@@ -5,13 +6,14 @@ import Typography from '@mui/material/Typography';
import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
export default function AccordionExpandDefault() {
+ const id = React.useId();
return (
}
- aria-controls="panel1-content"
- id="panel1-header"
+ aria-controls={`${id}-panel1-content`}
+ id={`${id}-panel1-header`}
>
Expanded by default
@@ -25,8 +27,8 @@ export default function AccordionExpandDefault() {
}
- aria-controls="panel2-content"
- id="panel2-header"
+ aria-controls={`${id}-panel2-content`}
+ id={`${id}-panel2-header`}
>
Header
diff --git a/docs/data/material/components/accordion/AccordionExpandDefault.tsx b/docs/data/material/components/accordion/AccordionExpandDefault.tsx
index 1365ba63a3fc86..c045b66a3ed68d 100644
--- a/docs/data/material/components/accordion/AccordionExpandDefault.tsx
+++ b/docs/data/material/components/accordion/AccordionExpandDefault.tsx
@@ -1,3 +1,4 @@
+import * as React from 'react';
import Accordion from '@mui/material/Accordion';
import AccordionSummary from '@mui/material/AccordionSummary';
import AccordionDetails from '@mui/material/AccordionDetails';
@@ -5,13 +6,14 @@ import Typography from '@mui/material/Typography';
import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
export default function AccordionExpandDefault() {
+ const id = React.useId();
return (
}
- aria-controls="panel1-content"
- id="panel1-header"
+ aria-controls={`${id}-panel1-content`}
+ id={`${id}-panel1-header`}
>
Expanded by default
@@ -25,8 +27,8 @@ export default function AccordionExpandDefault() {
}
- aria-controls="panel2-content"
- id="panel2-header"
+ aria-controls={`${id}-panel2-content`}
+ id={`${id}-panel2-header`}
>
Header
diff --git a/docs/data/material/components/accordion/AccordionExpandIcon.js b/docs/data/material/components/accordion/AccordionExpandIcon.js
index b9cc822bf50327..459816b921a056 100644
--- a/docs/data/material/components/accordion/AccordionExpandIcon.js
+++ b/docs/data/material/components/accordion/AccordionExpandIcon.js
@@ -1,3 +1,4 @@
+import * as React from 'react';
import Accordion from '@mui/material/Accordion';
import AccordionSummary from '@mui/material/AccordionSummary';
import AccordionDetails from '@mui/material/AccordionDetails';
@@ -6,13 +7,14 @@ import ArrowDownwardIcon from '@mui/icons-material/ArrowDownward';
import ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';
export default function AccordionExpandIcon() {
+ const id = React.useId();
return (
}
- aria-controls="panel1-content"
- id="panel1-header"
+ aria-controls={`${id}-panel1-content`}
+ id={`${id}-panel1-header`}
>
Accordion 1
@@ -26,8 +28,8 @@ export default function AccordionExpandIcon() {
}
- aria-controls="panel2-content"
- id="panel2-header"
+ aria-controls={`${id}-panel2-content`}
+ id={`${id}-panel2-header`}
>
Accordion 2
diff --git a/docs/data/material/components/accordion/AccordionExpandIcon.tsx b/docs/data/material/components/accordion/AccordionExpandIcon.tsx
index b9cc822bf50327..459816b921a056 100644
--- a/docs/data/material/components/accordion/AccordionExpandIcon.tsx
+++ b/docs/data/material/components/accordion/AccordionExpandIcon.tsx
@@ -1,3 +1,4 @@
+import * as React from 'react';
import Accordion from '@mui/material/Accordion';
import AccordionSummary from '@mui/material/AccordionSummary';
import AccordionDetails from '@mui/material/AccordionDetails';
@@ -6,13 +7,14 @@ import ArrowDownwardIcon from '@mui/icons-material/ArrowDownward';
import ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';
export default function AccordionExpandIcon() {
+ const id = React.useId();
return (
}
- aria-controls="panel1-content"
- id="panel1-header"
+ aria-controls={`${id}-panel1-content`}
+ id={`${id}-panel1-header`}
>
Accordion 1
@@ -26,8 +28,8 @@ export default function AccordionExpandIcon() {
}
- aria-controls="panel2-content"
- id="panel2-header"
+ aria-controls={`${id}-panel2-content`}
+ id={`${id}-panel2-header`}
>
Accordion 2
diff --git a/docs/data/material/components/accordion/AccordionTransition.js b/docs/data/material/components/accordion/AccordionTransition.js
index b0a39321fdbb8e..3dd5ca18842b80 100644
--- a/docs/data/material/components/accordion/AccordionTransition.js
+++ b/docs/data/material/components/accordion/AccordionTransition.js
@@ -9,6 +9,7 @@ import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
import Fade from '@mui/material/Fade';
export default function AccordionTransition() {
+ const id = React.useId();
const [expanded, setExpanded] = React.useState(false);
const handleExpansion = () => {
@@ -44,8 +45,8 @@ export default function AccordionTransition() {
>
}
- aria-controls="panel1-content"
- id="panel1-header"
+ aria-controls={`${id}-panel1-content`}
+ id={`${id}-panel1-header`}
>
Custom transition using Fade
@@ -59,8 +60,8 @@ export default function AccordionTransition() {
}
- aria-controls="panel2-content"
- id="panel2-header"
+ aria-controls={`${id}-panel2-content`}
+ id={`${id}-panel2-header`}
>
Default transition using Collapse
diff --git a/docs/data/material/components/accordion/AccordionTransition.tsx b/docs/data/material/components/accordion/AccordionTransition.tsx
index 85620309beecd9..3c3ebce28e5d97 100644
--- a/docs/data/material/components/accordion/AccordionTransition.tsx
+++ b/docs/data/material/components/accordion/AccordionTransition.tsx
@@ -12,6 +12,7 @@ import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
import Fade from '@mui/material/Fade';
export default function AccordionTransition() {
+ const id = React.useId();
const [expanded, setExpanded] = React.useState(false);
const handleExpansion = () => {
@@ -47,8 +48,8 @@ export default function AccordionTransition() {
>
}
- aria-controls="panel1-content"
- id="panel1-header"
+ aria-controls={`${id}-panel1-content`}
+ id={`${id}-panel1-header`}
>
Custom transition using Fade
@@ -62,8 +63,8 @@ export default function AccordionTransition() {
}
- aria-controls="panel2-content"
- id="panel2-header"
+ aria-controls={`${id}-panel2-content`}
+ id={`${id}-panel2-header`}
>
Default transition using Collapse
diff --git a/docs/data/material/components/accordion/AccordionUsage.js b/docs/data/material/components/accordion/AccordionUsage.js
index c467be54359ec7..26deb503ece3f5 100644
--- a/docs/data/material/components/accordion/AccordionUsage.js
+++ b/docs/data/material/components/accordion/AccordionUsage.js
@@ -1,3 +1,4 @@
+import * as React from 'react';
import Accordion from '@mui/material/Accordion';
import AccordionActions from '@mui/material/AccordionActions';
import AccordionSummary from '@mui/material/AccordionSummary';
@@ -7,13 +8,14 @@ import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
import Button from '@mui/material/Button';
export default function AccordionUsage() {
+ const id = React.useId();
return (
}
- aria-controls="panel1-content"
- id="panel1-header"
+ aria-controls={`${id}-panel1-content`}
+ id={`${id}-panel1-header`}
>
Accordion 1
@@ -25,8 +27,8 @@ export default function AccordionUsage() {
}
- aria-controls="panel2-content"
- id="panel2-header"
+ aria-controls={`${id}-panel2-content`}
+ id={`${id}-panel2-header`}
>
Accordion 2
@@ -38,8 +40,8 @@ export default function AccordionUsage() {
}
- aria-controls="panel3-content"
- id="panel3-header"
+ aria-controls={`${id}-panel3-content`}
+ id={`${id}-panel3-header`}
>
Accordion Actions
diff --git a/docs/data/material/components/accordion/AccordionUsage.tsx b/docs/data/material/components/accordion/AccordionUsage.tsx
index c467be54359ec7..26deb503ece3f5 100644
--- a/docs/data/material/components/accordion/AccordionUsage.tsx
+++ b/docs/data/material/components/accordion/AccordionUsage.tsx
@@ -1,3 +1,4 @@
+import * as React from 'react';
import Accordion from '@mui/material/Accordion';
import AccordionActions from '@mui/material/AccordionActions';
import AccordionSummary from '@mui/material/AccordionSummary';
@@ -7,13 +8,14 @@ import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
import Button from '@mui/material/Button';
export default function AccordionUsage() {
+ const id = React.useId();
return (
}
- aria-controls="panel1-content"
- id="panel1-header"
+ aria-controls={`${id}-panel1-content`}
+ id={`${id}-panel1-header`}
>
Accordion 1
@@ -25,8 +27,8 @@ export default function AccordionUsage() {
}
- aria-controls="panel2-content"
- id="panel2-header"
+ aria-controls={`${id}-panel2-content`}
+ id={`${id}-panel2-header`}
>
Accordion 2
@@ -38,8 +40,8 @@ export default function AccordionUsage() {
}
- aria-controls="panel3-content"
- id="panel3-header"
+ aria-controls={`${id}-panel3-content`}
+ id={`${id}-panel3-header`}
>
Accordion Actions
diff --git a/docs/data/material/components/accordion/DisabledAccordion.js b/docs/data/material/components/accordion/DisabledAccordion.js
index 3ed005eac738de..ef1cf954db88f2 100644
--- a/docs/data/material/components/accordion/DisabledAccordion.js
+++ b/docs/data/material/components/accordion/DisabledAccordion.js
@@ -1,3 +1,4 @@
+import * as React from 'react';
import Accordion from '@mui/material/Accordion';
import AccordionSummary from '@mui/material/AccordionSummary';
import AccordionDetails from '@mui/material/AccordionDetails';
@@ -5,13 +6,14 @@ import Typography from '@mui/material/Typography';
import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
export default function DisabledAccordion() {
+ const id = React.useId();
return (
}
- aria-controls="panel1-content"
- id="panel1-header"
+ aria-controls={`${id}-panel1-content`}
+ id={`${id}-panel1-header`}
>
Accordion 1
@@ -25,8 +27,8 @@ export default function DisabledAccordion() {
}
- aria-controls="panel2-content"
- id="panel2-header"
+ aria-controls={`${id}-panel2-content`}
+ id={`${id}-panel2-header`}
>
Accordion 2
@@ -40,8 +42,8 @@ export default function DisabledAccordion() {
}
- aria-controls="panel3-content"
- id="panel3-header"
+ aria-controls={`${id}-panel3-content`}
+ id={`${id}-panel3-header`}
>
Disabled Accordion
diff --git a/docs/data/material/components/accordion/DisabledAccordion.tsx b/docs/data/material/components/accordion/DisabledAccordion.tsx
index 3ed005eac738de..ef1cf954db88f2 100644
--- a/docs/data/material/components/accordion/DisabledAccordion.tsx
+++ b/docs/data/material/components/accordion/DisabledAccordion.tsx
@@ -1,3 +1,4 @@
+import * as React from 'react';
import Accordion from '@mui/material/Accordion';
import AccordionSummary from '@mui/material/AccordionSummary';
import AccordionDetails from '@mui/material/AccordionDetails';
@@ -5,13 +6,14 @@ import Typography from '@mui/material/Typography';
import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
export default function DisabledAccordion() {
+ const id = React.useId();
return (
}
- aria-controls="panel1-content"
- id="panel1-header"
+ aria-controls={`${id}-panel1-content`}
+ id={`${id}-panel1-header`}
>
Accordion 1
@@ -25,8 +27,8 @@ export default function DisabledAccordion() {
}
- aria-controls="panel2-content"
- id="panel2-header"
+ aria-controls={`${id}-panel2-content`}
+ id={`${id}-panel2-header`}
>
Accordion 2
@@ -40,8 +42,8 @@ export default function DisabledAccordion() {
}
- aria-controls="panel3-content"
- id="panel3-header"
+ aria-controls={`${id}-panel3-content`}
+ id={`${id}-panel3-header`}
>
Disabled Accordion
diff --git a/docs/data/material/components/menus/BasicMenu.js b/docs/data/material/components/menus/BasicMenu.js
index d76a67c0f37968..68eeab246a6949 100644
--- a/docs/data/material/components/menus/BasicMenu.js
+++ b/docs/data/material/components/menus/BasicMenu.js
@@ -4,6 +4,9 @@ import Menu from '@mui/material/Menu';
import MenuItem from '@mui/material/MenuItem';
export default function BasicMenu() {
+ const id = React.useId();
+ const buttonId = `${id}-button`;
+ const menuId = `${id}-menu`;
const [anchorEl, setAnchorEl] = React.useState(null);
const open = Boolean(anchorEl);
const handleClick = (event) => {
@@ -16,8 +19,8 @@ export default function BasicMenu() {
return (