From cffa30d753020d7aeecd0632d6ff367e6b3c9163 Mon Sep 17 00:00:00 2001 From: Anton Evzhakov Date: Mon, 26 Jan 2026 22:01:17 +0200 Subject: [PATCH] fix(react): restore styled intrinsic typing --- .changeset/fix-styled-jsx-intrinsics.md | 5 +++++ packages/react/src/styled.ts | 16 ++++++++-------- 2 files changed, 13 insertions(+), 8 deletions(-) create mode 100644 .changeset/fix-styled-jsx-intrinsics.md diff --git a/.changeset/fix-styled-jsx-intrinsics.md b/.changeset/fix-styled-jsx-intrinsics.md new file mode 100644 index 000000000..f7d968d0e --- /dev/null +++ b/.changeset/fix-styled-jsx-intrinsics.md @@ -0,0 +1,5 @@ +--- +"@linaria/react": patch +--- + +Fix `styled.` typings in environments where only the React JSX runtime types are available (e.g. `jsx: react-jsx`). diff --git a/packages/react/src/styled.ts b/packages/react/src/styled.ts index 290a7489a..586487d20 100644 --- a/packages/react/src/styled.ts +++ b/packages/react/src/styled.ts @@ -116,16 +116,16 @@ declare global { let idx = 0; -// eslint-disable-next-line @typescript-eslint/consistent-type-imports -type ReactIntrinsicElements = typeof import('react') extends { - JSX: { IntrinsicElements: infer T }; +type GlobalJSXIntrinsicElements = JSX.IntrinsicElements; + +declare module 'react' { + // eslint-disable-next-line @typescript-eslint/no-namespace + namespace JSX { + interface IntrinsicElements extends GlobalJSXIntrinsicElements {} + } } - ? T - : never; -type IntrinsicElements = [ReactIntrinsicElements] extends [never] - ? JSX.IntrinsicElements - : ReactIntrinsicElements; +type IntrinsicElements = React.JSX.IntrinsicElements; // Components with props are not allowed function styled(