- 
          
 - 
                Notifications
    
You must be signed in to change notification settings  - Fork 32.7k
 
Open
Labels
component: BoxThe React component.The React component.docsImprovements or additions to the documentation.Improvements or additions to the documentation.scope: systemThe system, the design tokens / styling foundations used across components. eg. @mui/system with MUIThe system, the design tokens / styling foundations used across components. eg. @mui/system with MUIsupport: docs-feedbackFeedback from documentation page.Feedback from documentation page.
Description
Related page
https://mui.com/material-ui/migration/upgrade-to-v6/#breaking-changes-affecting-types
Kind of issue
Unclear explanations
Issue description
What to do if I have:
 const StyledBox = styled(Box)<{ $customProp: string }>`
   color: white;
`;
?
Context
Example of a real 2-y/o piece of code that I'm trying to migrate from v5 to v6:
const FeatureDot = styled(Box)<{ $direction: "row" | "row-reverse" }>`
	position: absolute;
	${({ theme, $direction }) =>
		$direction === "row"
			? css`
					left: ${theme.spacing(dotHorizontalOffset.xs)};
					${theme.breakpoints.up("sm")} {
						left: ${theme.spacing(dotHorizontalOffset.sm)};
					}
					${theme.breakpoints.up("lg")} {
						left: ${theme.spacing(dotHorizontalOffset.lg)};
					}
				`
			: css`
					right: ${theme.spacing(dotHorizontalOffset.xs)};
					${theme.breakpoints.up("sm")} {
						right: ${theme.spacing(dotHorizontalOffset.sm)};
					}
					${theme.breakpoints.up("lg")} {
						right: ${theme.spacing(dotHorizontalOffset.lg)};
					}
				`};
	top: calc(50% - ${({ theme }) => theme.spacing(dotSize / 2)});
	height: ${({ theme }) => theme.spacing(dotSize)};
	width: ${({ theme }) => theme.spacing(dotSize)};
	border-radius: ${({ theme }) => theme.spacing(99)};
	transition: ${({ theme }) =>
		theme.transitions.create("background-color", {
			easing: theme.transitions.easing.easeOut,
			duration: theme.transitions.duration.shortest
		})};
`;That is later used as
<FeatureDot
	bgcolor={dotReached ? progressColor : "grey.500"}
	$direction={direction}
	component="span"
	ref={dotRef}
/>So I have the combination of
a) custom prop
b) system prop (will be sx)
c) component.
If I use styled("span"), then I loose the system prop (or sx).
If i use styled(Box) as typeof Box then I loose the type for custom prop.
What do I do?
Search keywords: Box component styled custom props
Metadata
Metadata
Assignees
Labels
component: BoxThe React component.The React component.docsImprovements or additions to the documentation.Improvements or additions to the documentation.scope: systemThe system, the design tokens / styling foundations used across components. eg. @mui/system with MUIThe system, the design tokens / styling foundations used across components. eg. @mui/system with MUIsupport: docs-feedbackFeedback from documentation page.Feedback from documentation page.