mui / mui/material-ui

Types and Interfaces are ignored in mui/system styled function

Open
#37,214 7 comments 0 reactions 1 assignee View on GitHub

@mnajdova is already working on this.

Since May 9, 2023.

package: styled-engine-sc scope: system type: bug typescript
Dominant language
JavaScript
Stars
99.1k
Forks
32.5k
Avg merge
2d 17h
Merged PRs (30d)
106

Description

Duplicates
  • I have searched the existing issues
Latest version
  • I have tested the latest version
Steps to reproduce 🕹

Link to live example:

Steps:

  1. Download this project:
curl https://codeload.github.com/mui/material-ui/tar.gz/master | tar -xz --strip=2 material-ui-master/examples/material-cra-styled-components-ts
cd material-cra-styled-components-ts
npm install
  1. Copy the following code:
import { styled } from '@mui/system';

interface ParagraphProps {
  color: 'green' | 'blue';
}

export const Paragraph = styled('p')<ParagraphProps>(({ color }) => ({
  color: color || '#000',
  fontSize: '18px',
  fontWeight: 'bold',
}));

Paragraph({ color: 'red' });
Current behavior 😯

No errors shown

Expected behavior 🤔

Last line throws

Type '"red"' is not assignable to type '"green" | "blue"'.ts(2769)
Context 🔦

I am trying to provide an Interface/type around which properties and values a MUI Styled Component should admit to avoid issues during the development process and its maintenance, which is one of the key points within the CSS-in-JS concept.

Your environment 🌎
npx @mui/envinfo
  Don't forget to mention which browser you used.
  Output from `npx @mui/envinfo` goes here.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.