diff --git a/.eslintrc.js b/.eslintrc.js
index 23dec113db66..3b63941e2183 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -10,12 +10,13 @@ module.exports = {
parserOptions: {
requireConfigFile: false,
babelOptions: {
- presets: ['@babel/preset-react'],
+ presets: [['@babel/preset-react', { runtime: 'automatic', importSource: '@emotion/react' }]],
},
},
extends: [
'eslint:recommended',
'plugin:react/recommended',
+ 'plugin:react/jsx-runtime',
'plugin:cypress/recommended',
'prettier',
'plugin:import/recommended',
@@ -84,6 +85,7 @@ module.exports = {
extends: [
'eslint:recommended',
'plugin:react/recommended',
+ 'plugin:react/jsx-runtime',
'plugin:cypress/recommended',
'plugin:@typescript-eslint/recommended',
'prettier',
diff --git a/babel.config.js b/babel.config.js
index 496b0af1bea1..505a624298b9 100644
--- a/babel.config.js
+++ b/babel.config.js
@@ -9,7 +9,15 @@ const isESM = process.env.NODE_ENV === 'esm';
console.log('Build Package:', path.basename(process.cwd()));
// Always enabled plugins
-const basePlugins = ['babel-plugin-inline-json-import'];
+const basePlugins = [
+ 'babel-plugin-inline-json-import',
+ [
+ '@emotion/babel-plugin',
+ {
+ autoLabel: 'always',
+ },
+ ],
+];
// All legacy transforms have been removed as they are now included in @babel/preset-env
// Features like class properties, optional chaining, nullish coalescing are now standard in modern JS
@@ -29,17 +37,31 @@ const svgo = {
],
};
+const slateSerializerSpec =
+ /packages[\\/]decap-cms-widget-(markdown|richtext)[\\/]src[\\/]serializers[\\/]__tests__[\\/]slate\.spec\.js$/;
+
+const automaticReactPreset = [
+ '@babel/preset-react',
+ {
+ runtime: 'automatic',
+ importSource: '@emotion/react',
+ },
+];
+
function presets() {
+ return [...(!isESM ? [['@babel/preset-env', {}]] : []), '@babel/preset-typescript'];
+}
+
+function overrides() {
return [
- '@babel/preset-react',
- ...(!isESM ? [['@babel/preset-env', {}]] : []),
- [
- '@emotion/babel-preset-css-prop',
- {
- autoLabel: 'always',
- },
- ],
- '@babel/preset-typescript',
+ {
+ exclude: slateSerializerSpec,
+ presets: [automaticReactPreset],
+ },
+ {
+ test: slateSerializerSpec,
+ presets: [['@babel/preset-react', { runtime: 'classic', pragma: 'h' }]],
+ },
];
}
@@ -91,4 +113,5 @@ function plugins() {
module.exports = {
presets: presets(),
plugins: plugins(),
+ overrides: overrides(),
};
diff --git a/package-lock.json b/package-lock.json
index afb75680c02d..54e0799406dc 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -7,7 +7,6 @@
"": {
"version": "0.0.0",
"dependencies": {
- "@emotion/babel-preset-css-prop": "^11.11.0",
"buffer": "^6.0.3",
"emotion": "^11.0.0",
"eslint-config-prettier": "^8.0.0",
@@ -27,6 +26,7 @@
"@babel/preset-typescript": "^7.10.4",
"@commitlint/cli": "^18.6.1",
"@commitlint/config-conventional": "^18.6.3",
+ "@emotion/babel-plugin": "^11.13.5",
"@emotion/eslint-plugin": "^11.0.0",
"@emotion/jest": "^11.11.0",
"@octokit/rest": "^21.1.1",
@@ -239,6 +239,7 @@
},
"node_modules/@babel/helper-annotate-as-pure": {
"version": "7.27.3",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@babel/types": "^7.27.3"
@@ -399,6 +400,7 @@
"version": "7.28.6",
"resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz",
"integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=6.9.0"
@@ -702,6 +704,7 @@
},
"node_modules/@babel/plugin-syntax-jsx": {
"version": "7.27.1",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.27.1"
@@ -1435,6 +1438,7 @@
},
"node_modules/@babel/plugin-transform-react-jsx": {
"version": "7.27.1",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.27.1",
@@ -2396,33 +2400,10 @@
"stylis": "4.2.0"
}
},
- "node_modules/@emotion/babel-plugin-jsx-pragmatic": {
- "version": "0.3.0",
- "license": "MIT",
- "dependencies": {
- "@babel/plugin-syntax-jsx": "^7.17.12"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
"node_modules/@emotion/babel-plugin/node_modules/convert-source-map": {
"version": "1.9.0",
"license": "MIT"
},
- "node_modules/@emotion/babel-preset-css-prop": {
- "version": "11.12.0",
- "license": "MIT",
- "dependencies": {
- "@babel/plugin-transform-react-jsx": "^7.17.12",
- "@babel/runtime": "^7.18.3",
- "@emotion/babel-plugin": "^11.12.0",
- "@emotion/babel-plugin-jsx-pragmatic": "^0.3.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
"node_modules/@emotion/cache": {
"version": "11.14.0",
"license": "MIT",
@@ -31333,6 +31314,7 @@
"cross-env": "^7.0.0"
},
"peerDependencies": {
+ "@emotion/react": "^11.11.1",
"react": "^19.1.0"
}
},
@@ -31680,6 +31662,7 @@
"react-immutable-proptypes": "^2.1.0"
},
"peerDependencies": {
+ "@emotion/react": "^11.11.1",
"decap-cms-ui-default": "^3.0.0",
"immutable": "^3.7.6",
"prop-types": "^15.7.2",
@@ -31845,6 +31828,7 @@
"react-select": "^5.10.0"
},
"peerDependencies": {
+ "@emotion/react": "^11.11.1",
"decap-cms-lib-widgets": "^3.0.0",
"decap-cms-ui-default": "^3.0.0",
"immutable": "^3.7.6",
@@ -31857,6 +31841,7 @@
"version": "3.2.0",
"license": "MIT",
"peerDependencies": {
+ "@emotion/react": "^11.11.1",
"decap-cms-ui-default": "^3.0.0",
"prop-types": "^15.7.2",
"react": "^19.1.0"
@@ -31869,6 +31854,7 @@
"react-textarea-autosize": "^8.0.0"
},
"peerDependencies": {
+ "@emotion/react": "^11.11.1",
"decap-cms-ui-default": "^3.0.0",
"prop-types": "^15.7.2",
"react": "^19.1.0"
diff --git a/package.json b/package.json
index 8f45a86bce28..49d685f8627e 100644
--- a/package.json
+++ b/package.json
@@ -55,6 +55,7 @@
"@babel/preset-typescript": "^7.10.4",
"@commitlint/cli": "^18.6.1",
"@commitlint/config-conventional": "^18.6.3",
+ "@emotion/babel-plugin": "^11.13.5",
"@emotion/eslint-plugin": "^11.0.0",
"@emotion/jest": "^11.11.0",
"@octokit/rest": "^21.1.1",
@@ -145,7 +146,6 @@
},
"private": true,
"dependencies": {
- "@emotion/babel-preset-css-prop": "^11.11.0",
"buffer": "^6.0.3",
"emotion": "^11.0.0",
"eslint-config-prettier": "^8.0.0",
diff --git a/packages/decap-cms-backend-aws-cognito-github-proxy/src/implementation.tsx b/packages/decap-cms-backend-aws-cognito-github-proxy/src/implementation.tsx
index 2d0c44f46d00..034c4dbb9aa6 100644
--- a/packages/decap-cms-backend-aws-cognito-github-proxy/src/implementation.tsx
+++ b/packages/decap-cms-backend-aws-cognito-github-proxy/src/implementation.tsx
@@ -1,4 +1,3 @@
-import * as React from 'react';
import { GitHubBackend } from 'decap-cms-backend-github';
import { PKCEAuthenticationPage } from 'decap-cms-ui-auth';
diff --git a/packages/decap-cms-backend-github/src/implementation.tsx b/packages/decap-cms-backend-github/src/implementation.tsx
index 9262131303a6..26037c4e2040 100644
--- a/packages/decap-cms-backend-github/src/implementation.tsx
+++ b/packages/decap-cms-backend-github/src/implementation.tsx
@@ -1,4 +1,3 @@
-import * as React from 'react';
import semaphore from 'semaphore';
import trimStart from 'lodash/trimStart';
import { stripIndent } from 'common-tags';
diff --git a/packages/decap-cms-core/src/bootstrap.js b/packages/decap-cms-core/src/bootstrap.js
index fe5cf749b348..daf554faf6cf 100644
--- a/packages/decap-cms-core/src/bootstrap.js
+++ b/packages/decap-cms-core/src/bootstrap.js
@@ -1,5 +1,4 @@
import './lib/polyfill';
-import React from 'react';
import { createRoot } from 'react-dom/client';
import { Provider, connect } from 'react-redux';
import { Route, Router } from 'react-router-dom';
diff --git a/packages/decap-cms-core/src/components/App/NotFoundPage.js b/packages/decap-cms-core/src/components/App/NotFoundPage.js
index 0f404fd072b8..4255a2cda4b0 100644
--- a/packages/decap-cms-core/src/components/App/NotFoundPage.js
+++ b/packages/decap-cms-core/src/components/App/NotFoundPage.js
@@ -1,4 +1,3 @@
-import React from 'react';
import styled from '@emotion/styled';
import { translate } from 'react-polyglot';
import { lengths } from 'decap-cms-ui-default';
diff --git a/packages/decap-cms-core/src/components/Collection/CollectionControls.js b/packages/decap-cms-core/src/components/Collection/CollectionControls.js
index 40d491de5479..150c49f296b0 100644
--- a/packages/decap-cms-core/src/components/Collection/CollectionControls.js
+++ b/packages/decap-cms-core/src/components/Collection/CollectionControls.js
@@ -1,4 +1,3 @@
-import React from 'react';
import styled from '@emotion/styled';
import { lengths } from 'decap-cms-ui-default';
diff --git a/packages/decap-cms-core/src/components/Collection/CollectionTop.js b/packages/decap-cms-core/src/components/Collection/CollectionTop.js
index 1e5c7c53517b..0b029468f367 100644
--- a/packages/decap-cms-core/src/components/Collection/CollectionTop.js
+++ b/packages/decap-cms-core/src/components/Collection/CollectionTop.js
@@ -1,6 +1,5 @@
import PropTypes from 'prop-types';
import ImmutablePropTypes from 'react-immutable-proptypes';
-import React from 'react';
import styled from '@emotion/styled';
import { translate } from 'react-polyglot';
import { Link } from 'react-router-dom';
diff --git a/packages/decap-cms-core/src/components/Collection/ControlButton.js b/packages/decap-cms-core/src/components/Collection/ControlButton.js
index c4e0c5f0f488..8af979467258 100644
--- a/packages/decap-cms-core/src/components/Collection/ControlButton.js
+++ b/packages/decap-cms-core/src/components/Collection/ControlButton.js
@@ -1,4 +1,3 @@
-import React from 'react';
import { css } from '@emotion/react';
import styled from '@emotion/styled';
import { buttons, StyledDropdownButton, colors } from 'decap-cms-ui-default';
diff --git a/packages/decap-cms-core/src/components/Collection/Entries/Entries.js b/packages/decap-cms-core/src/components/Collection/Entries/Entries.js
index 97d463a68252..2ce639ab6ea4 100644
--- a/packages/decap-cms-core/src/components/Collection/Entries/Entries.js
+++ b/packages/decap-cms-core/src/components/Collection/Entries/Entries.js
@@ -1,5 +1,4 @@
import PropTypes from 'prop-types';
-import React from 'react';
import styled from '@emotion/styled';
import ImmutablePropTypes from 'react-immutable-proptypes';
import { translate } from 'react-polyglot';
diff --git a/packages/decap-cms-core/src/components/Collection/Entries/EntryCard.js b/packages/decap-cms-core/src/components/Collection/Entries/EntryCard.js
index 55e96fdbc662..c46872cd12c2 100644
--- a/packages/decap-cms-core/src/components/Collection/Entries/EntryCard.js
+++ b/packages/decap-cms-core/src/components/Collection/Entries/EntryCard.js
@@ -1,4 +1,4 @@
-import React, { useEffect, useState } from 'react';
+import { useEffect, useState } from 'react';
import styled from '@emotion/styled';
import { connect } from 'react-redux';
import { Link } from 'react-router-dom';
diff --git a/packages/decap-cms-core/src/components/Collection/Entries/__tests__/EntriesCollection.spec.js b/packages/decap-cms-core/src/components/Collection/Entries/__tests__/EntriesCollection.spec.js
index 8ef282154b15..2fe3845de290 100644
--- a/packages/decap-cms-core/src/components/Collection/Entries/__tests__/EntriesCollection.spec.js
+++ b/packages/decap-cms-core/src/components/Collection/Entries/__tests__/EntriesCollection.spec.js
@@ -1,4 +1,3 @@
-import React from 'react';
import { render } from '@testing-library/react';
import { Set, fromJS } from 'immutable';
import configureStore from 'redux-mock-store';
@@ -11,7 +10,6 @@ import ConnectedEntriesCollection, {
import Entries from '../Entries';
jest.mock('../Entries', () => {
- const React = require('react');
return jest.fn(props => );
});
diff --git a/packages/decap-cms-core/src/components/Collection/FilterControl.js b/packages/decap-cms-core/src/components/Collection/FilterControl.js
index ddd71f2249eb..1301d5494698 100644
--- a/packages/decap-cms-core/src/components/Collection/FilterControl.js
+++ b/packages/decap-cms-core/src/components/Collection/FilterControl.js
@@ -1,4 +1,3 @@
-import React from 'react';
import { translate } from 'react-polyglot';
import { Dropdown, DropdownCheckedItem } from 'decap-cms-ui-default';
diff --git a/packages/decap-cms-core/src/components/Collection/GroupControl.js b/packages/decap-cms-core/src/components/Collection/GroupControl.js
index 34b7e692c8d8..ef600813fc7d 100644
--- a/packages/decap-cms-core/src/components/Collection/GroupControl.js
+++ b/packages/decap-cms-core/src/components/Collection/GroupControl.js
@@ -1,4 +1,3 @@
-import React from 'react';
import { translate } from 'react-polyglot';
import { Dropdown, DropdownItem } from 'decap-cms-ui-default';
diff --git a/packages/decap-cms-core/src/components/Collection/SortControl.js b/packages/decap-cms-core/src/components/Collection/SortControl.js
index 698e547ca4c3..bab28e477c42 100644
--- a/packages/decap-cms-core/src/components/Collection/SortControl.js
+++ b/packages/decap-cms-core/src/components/Collection/SortControl.js
@@ -1,4 +1,3 @@
-import React from 'react';
import { translate } from 'react-polyglot';
import { Dropdown, DropdownItem } from 'decap-cms-ui-default';
diff --git a/packages/decap-cms-core/src/components/Collection/ViewStyleControl.js b/packages/decap-cms-core/src/components/Collection/ViewStyleControl.js
index f8218887d787..0723655a5301 100644
--- a/packages/decap-cms-core/src/components/Collection/ViewStyleControl.js
+++ b/packages/decap-cms-core/src/components/Collection/ViewStyleControl.js
@@ -1,4 +1,3 @@
-import React from 'react';
import styled from '@emotion/styled';
import { Icon, buttons, colors } from 'decap-cms-ui-default';
diff --git a/packages/decap-cms-core/src/components/Collection/__tests__/Collection.spec.js b/packages/decap-cms-core/src/components/Collection/__tests__/Collection.spec.js
index eca5af8d4023..c5f66e67a1e7 100644
--- a/packages/decap-cms-core/src/components/Collection/__tests__/Collection.spec.js
+++ b/packages/decap-cms-core/src/components/Collection/__tests__/Collection.spec.js
@@ -1,4 +1,3 @@
-import React from 'react';
import { render } from '@testing-library/react';
import { fromJS } from 'immutable';
import configureStore from 'redux-mock-store';
diff --git a/packages/decap-cms-core/src/components/Collection/__tests__/NestedCollection.spec.js b/packages/decap-cms-core/src/components/Collection/__tests__/NestedCollection.spec.js
index 7c17cd18c68e..7c24fbb67ee7 100644
--- a/packages/decap-cms-core/src/components/Collection/__tests__/NestedCollection.spec.js
+++ b/packages/decap-cms-core/src/components/Collection/__tests__/NestedCollection.spec.js
@@ -1,4 +1,3 @@
-import React from 'react';
import { MemoryRouter } from 'react-router-dom';
import { render, fireEvent } from '@testing-library/react';
import { fromJS } from 'immutable';
diff --git a/packages/decap-cms-core/src/components/Collection/__tests__/Sidebar.spec.js b/packages/decap-cms-core/src/components/Collection/__tests__/Sidebar.spec.js
index d94723964fb1..690d72b7f86b 100644
--- a/packages/decap-cms-core/src/components/Collection/__tests__/Sidebar.spec.js
+++ b/packages/decap-cms-core/src/components/Collection/__tests__/Sidebar.spec.js
@@ -1,4 +1,3 @@
-import React from 'react';
import { MemoryRouter } from 'react-router-dom';
import { render } from '@testing-library/react';
import { fromJS } from 'immutable';
diff --git a/packages/decap-cms-core/src/components/Editor/EditorInterface.js b/packages/decap-cms-core/src/components/Editor/EditorInterface.js
index a331510d4313..255df012fc9a 100644
--- a/packages/decap-cms-core/src/components/Editor/EditorInterface.js
+++ b/packages/decap-cms-core/src/components/Editor/EditorInterface.js
@@ -1,5 +1,5 @@
import PropTypes from 'prop-types';
-import React, { Component } from 'react';
+import { Component } from 'react';
import ImmutablePropTypes from 'react-immutable-proptypes';
import { css, Global } from '@emotion/react';
import styled from '@emotion/styled';
diff --git a/packages/decap-cms-core/src/components/Editor/EditorNotesPane/AddNoteForm.js b/packages/decap-cms-core/src/components/Editor/EditorNotesPane/AddNoteForm.js
index 108a510e1923..2b2524aa0410 100644
--- a/packages/decap-cms-core/src/components/Editor/EditorNotesPane/AddNoteForm.js
+++ b/packages/decap-cms-core/src/components/Editor/EditorNotesPane/AddNoteForm.js
@@ -1,5 +1,5 @@
import PropTypes from 'prop-types';
-import React, { Component } from 'react';
+import { Component } from 'react';
import styled from '@emotion/styled';
import { colors, transitions } from 'decap-cms-ui-default';
diff --git a/packages/decap-cms-core/src/components/Editor/EditorNotesPane/EditorNotesPane.js b/packages/decap-cms-core/src/components/Editor/EditorNotesPane/EditorNotesPane.js
index 3f4fff570965..0f61f7e17093 100644
--- a/packages/decap-cms-core/src/components/Editor/EditorNotesPane/EditorNotesPane.js
+++ b/packages/decap-cms-core/src/components/Editor/EditorNotesPane/EditorNotesPane.js
@@ -1,5 +1,5 @@
import PropTypes from 'prop-types';
-import React, { Component } from 'react';
+import { Component } from 'react';
import ImmutablePropTypes from 'react-immutable-proptypes';
import styled from '@emotion/styled';
import { List } from 'immutable';
diff --git a/packages/decap-cms-core/src/components/Editor/EditorNotesPane/NoteItem.js b/packages/decap-cms-core/src/components/Editor/EditorNotesPane/NoteItem.js
index db7fa4066fca..6ea06b2dafb6 100644
--- a/packages/decap-cms-core/src/components/Editor/EditorNotesPane/NoteItem.js
+++ b/packages/decap-cms-core/src/components/Editor/EditorNotesPane/NoteItem.js
@@ -1,5 +1,5 @@
import PropTypes from 'prop-types';
-import React, { Component } from 'react';
+import { Component } from 'react';
import ImmutablePropTypes from 'react-immutable-proptypes';
import styled from '@emotion/styled';
import { colors, transitions } from 'decap-cms-ui-default';
diff --git a/packages/decap-cms-core/src/components/Editor/EditorNotesPane/NotesList.js b/packages/decap-cms-core/src/components/Editor/EditorNotesPane/NotesList.js
index 509d74f43c8e..2c27b92b1e81 100644
--- a/packages/decap-cms-core/src/components/Editor/EditorNotesPane/NotesList.js
+++ b/packages/decap-cms-core/src/components/Editor/EditorNotesPane/NotesList.js
@@ -1,5 +1,4 @@
import PropTypes from 'prop-types';
-import React from 'react';
import ImmutablePropTypes from 'react-immutable-proptypes';
import styled from '@emotion/styled';
diff --git a/packages/decap-cms-core/src/components/Editor/__tests__/Editor.spec.js b/packages/decap-cms-core/src/components/Editor/__tests__/Editor.spec.js
index 05cf0e91f4c9..27a81d12c280 100644
--- a/packages/decap-cms-core/src/components/Editor/__tests__/Editor.spec.js
+++ b/packages/decap-cms-core/src/components/Editor/__tests__/Editor.spec.js
@@ -1,4 +1,3 @@
-import React from 'react';
import { render } from '@testing-library/react';
import { fromJS } from 'immutable';
diff --git a/packages/decap-cms-core/src/components/Editor/__tests__/EditorToolbar.spec.js b/packages/decap-cms-core/src/components/Editor/__tests__/EditorToolbar.spec.js
index 55736baee917..a846d6c188bd 100644
--- a/packages/decap-cms-core/src/components/Editor/__tests__/EditorToolbar.spec.js
+++ b/packages/decap-cms-core/src/components/Editor/__tests__/EditorToolbar.spec.js
@@ -1,4 +1,3 @@
-import React from 'react';
import { render } from '@testing-library/react';
import { fromJS } from 'immutable';
diff --git a/packages/decap-cms-core/src/components/EditorWidgets/Unknown/UnknownControl.js b/packages/decap-cms-core/src/components/EditorWidgets/Unknown/UnknownControl.js
index 638b9ea653fe..45d4fb506be8 100644
--- a/packages/decap-cms-core/src/components/EditorWidgets/Unknown/UnknownControl.js
+++ b/packages/decap-cms-core/src/components/EditorWidgets/Unknown/UnknownControl.js
@@ -1,4 +1,3 @@
-import React from 'react';
import { translate } from 'react-polyglot';
import ImmutablePropTypes from 'react-immutable-proptypes';
import PropTypes from 'prop-types';
diff --git a/packages/decap-cms-core/src/components/EditorWidgets/Unknown/UnknownPreview.js b/packages/decap-cms-core/src/components/EditorWidgets/Unknown/UnknownPreview.js
index 44a8ec0b5460..1dc4435abf67 100644
--- a/packages/decap-cms-core/src/components/EditorWidgets/Unknown/UnknownPreview.js
+++ b/packages/decap-cms-core/src/components/EditorWidgets/Unknown/UnknownPreview.js
@@ -1,4 +1,3 @@
-import React from 'react';
import { translate } from 'react-polyglot';
import ImmutablePropTypes from 'react-immutable-proptypes';
import PropTypes from 'prop-types';
diff --git a/packages/decap-cms-core/src/components/MediaLibrary/EmptyMessage.js b/packages/decap-cms-core/src/components/MediaLibrary/EmptyMessage.js
index 024181c47de8..c91b475ac638 100644
--- a/packages/decap-cms-core/src/components/MediaLibrary/EmptyMessage.js
+++ b/packages/decap-cms-core/src/components/MediaLibrary/EmptyMessage.js
@@ -1,4 +1,3 @@
-import React from 'react';
import PropTypes from 'prop-types';
import styled from '@emotion/styled';
import { colors } from 'decap-cms-ui-default';
diff --git a/packages/decap-cms-core/src/components/MediaLibrary/MediaLibraryCardGrid.js b/packages/decap-cms-core/src/components/MediaLibrary/MediaLibraryCardGrid.js
index f8d7b04d4d40..d2831e56ae63 100644
--- a/packages/decap-cms-core/src/components/MediaLibrary/MediaLibraryCardGrid.js
+++ b/packages/decap-cms-core/src/components/MediaLibrary/MediaLibraryCardGrid.js
@@ -1,4 +1,3 @@
-import React from 'react';
import PropTypes from 'prop-types';
import styled from '@emotion/styled';
import { Waypoint } from 'react-waypoint';
diff --git a/packages/decap-cms-core/src/components/MediaLibrary/MediaLibraryHeader.js b/packages/decap-cms-core/src/components/MediaLibrary/MediaLibraryHeader.js
index 9239fc0464e3..ca83aeb7f21f 100644
--- a/packages/decap-cms-core/src/components/MediaLibrary/MediaLibraryHeader.js
+++ b/packages/decap-cms-core/src/components/MediaLibrary/MediaLibraryHeader.js
@@ -1,4 +1,3 @@
-import React from 'react';
import PropTypes from 'prop-types';
import styled from '@emotion/styled';
import { Icon, shadows, colors, buttons } from 'decap-cms-ui-default';
diff --git a/packages/decap-cms-core/src/components/MediaLibrary/MediaLibraryModal.js b/packages/decap-cms-core/src/components/MediaLibrary/MediaLibraryModal.js
index 6648d5b5abdf..625f6c62fe1c 100644
--- a/packages/decap-cms-core/src/components/MediaLibrary/MediaLibraryModal.js
+++ b/packages/decap-cms-core/src/components/MediaLibrary/MediaLibraryModal.js
@@ -1,4 +1,3 @@
-import React from 'react';
import PropTypes from 'prop-types';
import styled from '@emotion/styled';
import { Map } from 'immutable';
diff --git a/packages/decap-cms-core/src/components/MediaLibrary/MediaLibrarySearch.js b/packages/decap-cms-core/src/components/MediaLibrary/MediaLibrarySearch.js
index ec49a871a2c0..6c8533892239 100644
--- a/packages/decap-cms-core/src/components/MediaLibrary/MediaLibrarySearch.js
+++ b/packages/decap-cms-core/src/components/MediaLibrary/MediaLibrarySearch.js
@@ -1,4 +1,3 @@
-import React from 'react';
import PropTypes from 'prop-types';
import styled from '@emotion/styled';
import { Icon, lengths, colors, zIndex } from 'decap-cms-ui-default';
diff --git a/packages/decap-cms-core/src/components/MediaLibrary/MediaLibraryTop.js b/packages/decap-cms-core/src/components/MediaLibrary/MediaLibraryTop.js
index 88491dbee906..c64c1d708355 100644
--- a/packages/decap-cms-core/src/components/MediaLibrary/MediaLibraryTop.js
+++ b/packages/decap-cms-core/src/components/MediaLibrary/MediaLibraryTop.js
@@ -1,4 +1,3 @@
-import React from 'react';
import PropTypes from 'prop-types';
import { css } from '@emotion/react';
import styled from '@emotion/styled';
diff --git a/packages/decap-cms-core/src/components/MediaLibrary/__tests__/MediaLibraryButtons.spec.js b/packages/decap-cms-core/src/components/MediaLibrary/__tests__/MediaLibraryButtons.spec.js
index 9761933283b5..9acc834c3a31 100644
--- a/packages/decap-cms-core/src/components/MediaLibrary/__tests__/MediaLibraryButtons.spec.js
+++ b/packages/decap-cms-core/src/components/MediaLibrary/__tests__/MediaLibraryButtons.spec.js
@@ -1,4 +1,3 @@
-import React from 'react';
import { render } from '@testing-library/react';
import { CopyToClipBoardButton } from '../MediaLibraryButtons';
diff --git a/packages/decap-cms-core/src/components/MediaLibrary/__tests__/MediaLibraryCard.spec.js b/packages/decap-cms-core/src/components/MediaLibrary/__tests__/MediaLibraryCard.spec.js
index d0516c87d28e..fee162a2a21c 100644
--- a/packages/decap-cms-core/src/components/MediaLibrary/__tests__/MediaLibraryCard.spec.js
+++ b/packages/decap-cms-core/src/components/MediaLibrary/__tests__/MediaLibraryCard.spec.js
@@ -1,4 +1,3 @@
-import React from 'react';
import { Map } from 'immutable';
import { render } from '@testing-library/react';
diff --git a/packages/decap-cms-core/src/components/UI/FileUploadButton.js b/packages/decap-cms-core/src/components/UI/FileUploadButton.js
index 3746e6e57a37..88f3cd2e5d18 100644
--- a/packages/decap-cms-core/src/components/UI/FileUploadButton.js
+++ b/packages/decap-cms-core/src/components/UI/FileUploadButton.js
@@ -1,4 +1,3 @@
-import React from 'react';
import PropTypes from 'prop-types';
export function FileUploadButton({ label, imagesOnly, onChange, disabled, className }) {
diff --git a/packages/decap-cms-core/src/components/UI/Notifications.tsx b/packages/decap-cms-core/src/components/UI/Notifications.tsx
index 664888157c78..f946e9a8da01 100644
--- a/packages/decap-cms-core/src/components/UI/Notifications.tsx
+++ b/packages/decap-cms-core/src/components/UI/Notifications.tsx
@@ -1,5 +1,4 @@
-// eslint-disable-next-line no-unused-vars
-import React, { useEffect } from 'react';
+import { useEffect, useState } from 'react';
// import { translate } from 'react-polyglot';
import { injectStyle } from 'react-toastify/dist/inject-style';
import { toast, ToastContainer } from 'react-toastify';
@@ -25,7 +24,7 @@ type IdMap = {
function Notifications({ notifications }: Props) {
const t = useTranslate();
const dispatch = useDispatch();
- const [idMap, setIdMap] = React.useState({});
+ const [idMap, setIdMap] = useState({});
useEffect(() => {
notifications
diff --git a/packages/decap-cms-core/src/components/UI/SettingsDropdown.js b/packages/decap-cms-core/src/components/UI/SettingsDropdown.js
index 30d7d31c29cf..85e965381ceb 100644
--- a/packages/decap-cms-core/src/components/UI/SettingsDropdown.js
+++ b/packages/decap-cms-core/src/components/UI/SettingsDropdown.js
@@ -1,4 +1,3 @@
-import React from 'react';
import PropTypes from 'prop-types';
import { css } from '@emotion/react';
import styled from '@emotion/styled';
diff --git a/packages/decap-cms-core/src/components/UI/__tests__/ErrorBoundary.spec.js b/packages/decap-cms-core/src/components/UI/__tests__/ErrorBoundary.spec.js
index ea11b0997b4a..b25d9e9dd652 100644
--- a/packages/decap-cms-core/src/components/UI/__tests__/ErrorBoundary.spec.js
+++ b/packages/decap-cms-core/src/components/UI/__tests__/ErrorBoundary.spec.js
@@ -1,4 +1,3 @@
-import React from 'react';
import { render } from '@testing-library/react';
import { oneLineTrim } from 'common-tags';
diff --git a/packages/decap-cms-core/src/components/Workflow/Workflow.js b/packages/decap-cms-core/src/components/Workflow/Workflow.js
index c98569b655d9..1e8058c06251 100644
--- a/packages/decap-cms-core/src/components/Workflow/Workflow.js
+++ b/packages/decap-cms-core/src/components/Workflow/Workflow.js
@@ -1,5 +1,5 @@
import PropTypes from 'prop-types';
-import React, { Component } from 'react';
+import { Component } from 'react';
import ImmutablePropTypes from 'react-immutable-proptypes';
import styled from '@emotion/styled';
import { OrderedMap } from 'immutable';
diff --git a/packages/decap-cms-core/src/components/Workflow/WorkflowCard.js b/packages/decap-cms-core/src/components/Workflow/WorkflowCard.js
index 1c6e8a670dbb..7569cd210c9d 100644
--- a/packages/decap-cms-core/src/components/Workflow/WorkflowCard.js
+++ b/packages/decap-cms-core/src/components/Workflow/WorkflowCard.js
@@ -1,4 +1,3 @@
-import React from 'react';
import PropTypes from 'prop-types';
import { css } from '@emotion/react';
import styled from '@emotion/styled';
diff --git a/packages/decap-cms-core/src/constants/fieldInference.tsx b/packages/decap-cms-core/src/constants/fieldInference.tsx
index 56c49aa7440c..8f755608b6b6 100644
--- a/packages/decap-cms-core/src/constants/fieldInference.tsx
+++ b/packages/decap-cms-core/src/constants/fieldInference.tsx
@@ -1,4 +1,4 @@
-import React from 'react';
+import type { ReactNode } from 'react';
export const IDENTIFIER_FIELDS = ['title', 'path'] as const;
@@ -9,7 +9,7 @@ export const INFERABLE_FIELDS = {
type: 'string',
secondaryTypes: [],
synonyms: ['title', 'name', 'label', 'headline', 'header'],
- defaultPreview: (value: React.ReactNode) => {value}
, // eslint-disable-line react/display-name
+ defaultPreview: (value: ReactNode) => {value}
, // eslint-disable-line react/display-name
fallbackToFirstField: true,
showError: true,
},
@@ -17,7 +17,7 @@ export const INFERABLE_FIELDS = {
type: 'string',
secondaryTypes: [],
synonyms: ['short_title', 'shortTitle', 'short'],
- defaultPreview: (value: React.ReactNode) => {value}
, // eslint-disable-line react/display-name
+ defaultPreview: (value: ReactNode) => {value}
, // eslint-disable-line react/display-name
fallbackToFirstField: false,
showError: false,
},
@@ -25,7 +25,7 @@ export const INFERABLE_FIELDS = {
type: 'string',
secondaryTypes: [],
synonyms: ['author', 'name', 'by', 'byline', 'owner'],
- defaultPreview: (value: React.ReactNode) => {value}, // eslint-disable-line react/display-name
+ defaultPreview: (value: ReactNode) => {value}, // eslint-disable-line react/display-name
fallbackToFirstField: false,
showError: false,
},
@@ -33,7 +33,7 @@ export const INFERABLE_FIELDS = {
type: 'datetime',
secondaryTypes: ['date'],
synonyms: ['date', 'publishDate', 'publish_date'],
- defaultPreview: (value: React.ReactNode) => value,
+ defaultPreview: (value: ReactNode) => value,
fallbackToFirstField: false,
showError: false,
},
@@ -53,7 +53,7 @@ export const INFERABLE_FIELDS = {
'bio',
'summary',
],
- defaultPreview: (value: React.ReactNode) => value,
+ defaultPreview: (value: ReactNode) => value,
fallbackToFirstField: false,
showError: false,
},
@@ -71,7 +71,7 @@ export const INFERABLE_FIELDS = {
'hero',
'logo',
],
- defaultPreview: (value: React.ReactNode) => value,
+ defaultPreview: (value: ReactNode) => value,
fallbackToFirstField: false,
showError: false,
},
diff --git a/packages/decap-cms-editor-component-image/package.json b/packages/decap-cms-editor-component-image/package.json
index 5282acf73908..51267a4da579 100644
--- a/packages/decap-cms-editor-component-image/package.json
+++ b/packages/decap-cms-editor-component-image/package.json
@@ -22,6 +22,7 @@
"cross-env": "^7.0.0"
},
"peerDependencies": {
+ "@emotion/react": "^11.11.1",
"react": "^19.1.0"
}
}
diff --git a/packages/decap-cms-editor-component-image/src/index.js b/packages/decap-cms-editor-component-image/src/index.js
index 9541d2236e48..8a5df0e2ded0 100644
--- a/packages/decap-cms-editor-component-image/src/index.js
+++ b/packages/decap-cms-editor-component-image/src/index.js
@@ -1,5 +1,3 @@
-import React from 'react';
-
const image = {
label: 'Image',
id: 'image',
diff --git a/packages/decap-cms-ui-auth/src/__tests__/NetlifyAuthenticationPage.spec.js b/packages/decap-cms-ui-auth/src/__tests__/NetlifyAuthenticationPage.spec.js
index 31411fb6774a..0419ef7c0971 100644
--- a/packages/decap-cms-ui-auth/src/__tests__/NetlifyAuthenticationPage.spec.js
+++ b/packages/decap-cms-ui-auth/src/__tests__/NetlifyAuthenticationPage.spec.js
@@ -1,4 +1,3 @@
-import React from 'react';
import { render } from '@testing-library/react';
import NetlifyAuthenticationPage from '../NetlifyAuthenticationPage';
diff --git a/packages/decap-cms-ui-default/src/AuthenticationPage.js b/packages/decap-cms-ui-default/src/AuthenticationPage.js
index 5ce5539ad3d9..d9d15e39cc28 100644
--- a/packages/decap-cms-ui-default/src/AuthenticationPage.js
+++ b/packages/decap-cms-ui-default/src/AuthenticationPage.js
@@ -1,4 +1,3 @@
-import React from 'react';
import PropTypes from 'prop-types';
import styled from '@emotion/styled';
diff --git a/packages/decap-cms-ui-default/src/Dropdown.js b/packages/decap-cms-ui-default/src/Dropdown.js
index be3113b28819..52e0c867f3bb 100644
--- a/packages/decap-cms-ui-default/src/Dropdown.js
+++ b/packages/decap-cms-ui-default/src/Dropdown.js
@@ -1,4 +1,4 @@
-import React, { useState } from 'react';
+import { useState } from 'react';
import PropTypes from 'prop-types';
import { css } from '@emotion/react';
import styled from '@emotion/styled';
diff --git a/packages/decap-cms-ui-default/src/Icon.js b/packages/decap-cms-ui-default/src/Icon.js
index 11da3de53959..29f47988d65c 100644
--- a/packages/decap-cms-ui-default/src/Icon.js
+++ b/packages/decap-cms-ui-default/src/Icon.js
@@ -1,4 +1,3 @@
-import React from 'react';
import PropTypes from 'prop-types';
import styled from '@emotion/styled';
@@ -54,6 +53,8 @@ const sizes = {
function Icon({ type, direction, size = 'medium', className }) {
const IconSvg = icons[type].image;
+ // inline-react-svg stores root SVG attributes here, but React 19 no longer applies them.
+ const iconProps = IconSvg.defaultProps || {};
return (
-
+
);
}
diff --git a/packages/decap-cms-ui-default/src/IconButton.js b/packages/decap-cms-ui-default/src/IconButton.js
index 1a87e1e7dfa8..cc87d2141782 100644
--- a/packages/decap-cms-ui-default/src/IconButton.js
+++ b/packages/decap-cms-ui-default/src/IconButton.js
@@ -1,4 +1,3 @@
-import React from 'react';
import styled from '@emotion/styled';
import Icon from './Icon';
diff --git a/packages/decap-cms-ui-default/src/ListItemTopBar.js b/packages/decap-cms-ui-default/src/ListItemTopBar.js
index 4fd56abf4448..2d6dff147356 100644
--- a/packages/decap-cms-ui-default/src/ListItemTopBar.js
+++ b/packages/decap-cms-ui-default/src/ListItemTopBar.js
@@ -1,4 +1,3 @@
-import React from 'react';
import PropTypes from 'prop-types';
import styled from '@emotion/styled';
diff --git a/packages/decap-cms-ui-default/src/Toggle.js b/packages/decap-cms-ui-default/src/Toggle.js
index 46a4d25b9c39..b605c7deba08 100644
--- a/packages/decap-cms-ui-default/src/Toggle.js
+++ b/packages/decap-cms-ui-default/src/Toggle.js
@@ -1,4 +1,4 @@
-import React, { useState } from 'react';
+import { useState } from 'react';
import PropTypes from 'prop-types';
import styled from '@emotion/styled';
import { css } from '@emotion/react';
diff --git a/packages/decap-cms-ui-default/src/styles.js b/packages/decap-cms-ui-default/src/styles.js
index 704331bcf495..ebeb756d617f 100644
--- a/packages/decap-cms-ui-default/src/styles.js
+++ b/packages/decap-cms-ui-default/src/styles.js
@@ -1,4 +1,3 @@
-import React from 'react';
import { css, Global } from '@emotion/react';
/**
diff --git a/packages/decap-cms-widget-code/src/CodePreview.js b/packages/decap-cms-widget-code/src/CodePreview.js
index f8f3d16a0e7f..b360c772f464 100644
--- a/packages/decap-cms-widget-code/src/CodePreview.js
+++ b/packages/decap-cms-widget-code/src/CodePreview.js
@@ -1,4 +1,3 @@
-import React from 'react';
import PropTypes from 'prop-types';
import { Map } from 'immutable';
import isString from 'lodash/isString';
diff --git a/packages/decap-cms-widget-code/src/SettingsButton.js b/packages/decap-cms-widget-code/src/SettingsButton.js
index 2744ff342f99..dd519758bfed 100644
--- a/packages/decap-cms-widget-code/src/SettingsButton.js
+++ b/packages/decap-cms-widget-code/src/SettingsButton.js
@@ -1,4 +1,3 @@
-import React from 'react';
import styled from '@emotion/styled';
import { Icon, buttons, shadows, zIndex } from 'decap-cms-ui-default';
diff --git a/packages/decap-cms-widget-code/src/SettingsPane.js b/packages/decap-cms-widget-code/src/SettingsPane.js
index 3f83671709f2..cb4a41c942b1 100644
--- a/packages/decap-cms-widget-code/src/SettingsPane.js
+++ b/packages/decap-cms-widget-code/src/SettingsPane.js
@@ -1,4 +1,3 @@
-import React from 'react';
import styled from '@emotion/styled';
import Select from 'react-select';
import isHotkey from 'is-hotkey';
diff --git a/packages/decap-cms-widget-colorstring/src/ColorPreview.js b/packages/decap-cms-widget-colorstring/src/ColorPreview.js
index 6b6271572435..7beb3bf0386d 100644
--- a/packages/decap-cms-widget-colorstring/src/ColorPreview.js
+++ b/packages/decap-cms-widget-colorstring/src/ColorPreview.js
@@ -1,4 +1,3 @@
-import React from 'react';
import PropTypes from 'prop-types';
import { WidgetPreviewContainer } from 'decap-cms-ui-default';
diff --git a/packages/decap-cms-widget-datetime/src/DateTimeControl.js b/packages/decap-cms-widget-datetime/src/DateTimeControl.js
index c6057a3be8ae..7f20288fc8b9 100644
--- a/packages/decap-cms-widget-datetime/src/DateTimeControl.js
+++ b/packages/decap-cms-widget-datetime/src/DateTimeControl.js
@@ -1,7 +1,6 @@
-/** @jsx jsx */
import React from 'react';
import PropTypes from 'prop-types';
-import { jsx, css } from '@emotion/react';
+import { css } from '@emotion/react';
import dayjs from 'dayjs';
import customParseFormat from 'dayjs/plugin/customParseFormat';
import localizedFormat from 'dayjs/plugin/localizedFormat';
diff --git a/packages/decap-cms-widget-datetime/src/DateTimePreview.js b/packages/decap-cms-widget-datetime/src/DateTimePreview.js
index bf7017df71be..1fe34df1bfc7 100644
--- a/packages/decap-cms-widget-datetime/src/DateTimePreview.js
+++ b/packages/decap-cms-widget-datetime/src/DateTimePreview.js
@@ -1,4 +1,3 @@
-import React from 'react';
import PropTypes from 'prop-types';
import { WidgetPreviewContainer } from 'decap-cms-ui-default';
diff --git a/packages/decap-cms-widget-datetime/src/__tests__/DateTimeControl.spec.js b/packages/decap-cms-widget-datetime/src/__tests__/DateTimeControl.spec.js
index 9e1e021d9bf7..754709f7ae2b 100644
--- a/packages/decap-cms-widget-datetime/src/__tests__/DateTimeControl.spec.js
+++ b/packages/decap-cms-widget-datetime/src/__tests__/DateTimeControl.spec.js
@@ -1,4 +1,3 @@
-import React from 'react';
import { render, fireEvent } from '@testing-library/react';
import dayjs from 'dayjs';
diff --git a/packages/decap-cms-widget-file/src/FilePreview.js b/packages/decap-cms-widget-file/src/FilePreview.js
index 0017b54d8de6..7cbaac69763e 100644
--- a/packages/decap-cms-widget-file/src/FilePreview.js
+++ b/packages/decap-cms-widget-file/src/FilePreview.js
@@ -1,4 +1,3 @@
-import React from 'react';
import PropTypes from 'prop-types';
import styled from '@emotion/styled';
import { List } from 'immutable';
diff --git a/packages/decap-cms-widget-image/src/ImagePreview.js b/packages/decap-cms-widget-image/src/ImagePreview.js
index f34f90636b94..eb97074d5582 100644
--- a/packages/decap-cms-widget-image/src/ImagePreview.js
+++ b/packages/decap-cms-widget-image/src/ImagePreview.js
@@ -1,4 +1,4 @@
-import React, { useEffect, useState } from 'react';
+import { useEffect, useState } from 'react';
import PropTypes from 'prop-types';
import styled from '@emotion/styled';
import { List } from 'immutable';
diff --git a/packages/decap-cms-widget-list/src/__tests__/ListControl.spec.js b/packages/decap-cms-widget-list/src/__tests__/ListControl.spec.js
index 72825ccb7d19..bf9e3345d35e 100644
--- a/packages/decap-cms-widget-list/src/__tests__/ListControl.spec.js
+++ b/packages/decap-cms-widget-list/src/__tests__/ListControl.spec.js
@@ -1,4 +1,3 @@
-import React from 'react';
import { fireEvent, render } from '@testing-library/react';
import { fromJS } from 'immutable';
diff --git a/packages/decap-cms-widget-map/src/MapPreview.js b/packages/decap-cms-widget-map/src/MapPreview.js
index 1e0f57b4f8a5..3f7821f2257a 100644
--- a/packages/decap-cms-widget-map/src/MapPreview.js
+++ b/packages/decap-cms-widget-map/src/MapPreview.js
@@ -1,4 +1,3 @@
-import React from 'react';
import PropTypes from 'prop-types';
import { WidgetPreviewContainer } from 'decap-cms-ui-default';
diff --git a/packages/decap-cms-widget-markdown/src/MarkdownControl/RawEditor.js b/packages/decap-cms-widget-markdown/src/MarkdownControl/RawEditor.js
index be007246a58e..081705cc1e69 100644
--- a/packages/decap-cms-widget-markdown/src/MarkdownControl/RawEditor.js
+++ b/packages/decap-cms-widget-markdown/src/MarkdownControl/RawEditor.js
@@ -1,4 +1,4 @@
-import React, { useEffect, useMemo, useState } from 'react';
+import { useEffect, useMemo, useState } from 'react';
import PropTypes from 'prop-types';
import ImmutablePropTypes from 'react-immutable-proptypes';
import { ClassNames } from '@emotion/react';
diff --git a/packages/decap-cms-widget-markdown/src/MarkdownControl/ToolbarButton.js b/packages/decap-cms-widget-markdown/src/MarkdownControl/ToolbarButton.js
index c75a2dbb53c0..9886b2710b6c 100644
--- a/packages/decap-cms-widget-markdown/src/MarkdownControl/ToolbarButton.js
+++ b/packages/decap-cms-widget-markdown/src/MarkdownControl/ToolbarButton.js
@@ -1,4 +1,3 @@
-import React from 'react';
import PropTypes from 'prop-types';
import styled from '@emotion/styled';
import { Icon, buttons } from 'decap-cms-ui-default';
diff --git a/packages/decap-cms-widget-markdown/src/MarkdownControl/VisualEditor.js b/packages/decap-cms-widget-markdown/src/MarkdownControl/VisualEditor.js
index bb3555a14e58..efe10c3dc131 100644
--- a/packages/decap-cms-widget-markdown/src/MarkdownControl/VisualEditor.js
+++ b/packages/decap-cms-widget-markdown/src/MarkdownControl/VisualEditor.js
@@ -1,5 +1,5 @@
// @refresh reset
-import React, { useCallback, useEffect, useMemo, useState } from 'react';
+import { useCallback, useEffect, useMemo, useState } from 'react';
import PropTypes from 'prop-types';
import ImmutablePropTypes from 'react-immutable-proptypes';
import { ClassNames, css as coreCss } from '@emotion/react';
diff --git a/packages/decap-cms-widget-markdown/src/MarkdownControl/components/Shortcode.js b/packages/decap-cms-widget-markdown/src/MarkdownControl/components/Shortcode.js
index 7a835796de22..5c4ba28a46fb 100644
--- a/packages/decap-cms-widget-markdown/src/MarkdownControl/components/Shortcode.js
+++ b/packages/decap-cms-widget-markdown/src/MarkdownControl/components/Shortcode.js
@@ -1,5 +1,5 @@
/* eslint-disable react/prop-types */
-import React, { useState } from 'react';
+import { useState } from 'react';
import { css } from '@emotion/react';
import { fromJS } from 'immutable';
import omit from 'lodash/omit';
diff --git a/packages/decap-cms-widget-markdown/src/MarkdownControl/components/VoidBlock.js b/packages/decap-cms-widget-markdown/src/MarkdownControl/components/VoidBlock.js
index ad2b0a7b9ef0..a23cfd49c1d5 100644
--- a/packages/decap-cms-widget-markdown/src/MarkdownControl/components/VoidBlock.js
+++ b/packages/decap-cms-widget-markdown/src/MarkdownControl/components/VoidBlock.js
@@ -1,5 +1,4 @@
/* eslint-disable react/prop-types */
-import React from 'react';
import { css } from '@emotion/react';
import { zIndex } from 'decap-cms-ui-default';
import { ReactEditor, useSlate } from 'slate-react';
diff --git a/packages/decap-cms-widget-markdown/src/MarkdownControl/renderers.js b/packages/decap-cms-widget-markdown/src/MarkdownControl/renderers.js
index 10b0fc0217e4..fbddd3842675 100644
--- a/packages/decap-cms-widget-markdown/src/MarkdownControl/renderers.js
+++ b/packages/decap-cms-widget-markdown/src/MarkdownControl/renderers.js
@@ -1,5 +1,4 @@
/* eslint-disable react/display-name */
-import React from 'react';
import { css } from '@emotion/react';
import styled from '@emotion/styled';
import { colors, lengths } from 'decap-cms-ui-default';
diff --git a/packages/decap-cms-widget-markdown/src/__tests__/renderer.spec.js b/packages/decap-cms-widget-markdown/src/__tests__/renderer.spec.js
index 73eb3c7324db..85f8f46374d1 100644
--- a/packages/decap-cms-widget-markdown/src/__tests__/renderer.spec.js
+++ b/packages/decap-cms-widget-markdown/src/__tests__/renderer.spec.js
@@ -1,4 +1,3 @@
-import React from 'react';
import { render, screen } from '@testing-library/react';
import padStart from 'lodash/padStart';
import { Map } from 'immutable';
diff --git a/packages/decap-cms-widget-markdown/src/serializers/__tests__/slate.spec.js b/packages/decap-cms-widget-markdown/src/serializers/__tests__/slate.spec.js
index a0bb78b64dfb..ccfd5acb72cd 100644
--- a/packages/decap-cms-widget-markdown/src/serializers/__tests__/slate.spec.js
+++ b/packages/decap-cms-widget-markdown/src/serializers/__tests__/slate.spec.js
@@ -1,7 +1,9 @@
+/** @jsxRuntime classic */
/** @jsx h */
import flow from 'lodash/flow';
+// eslint-disable-next-line no-unused-vars
import h from '../../../test-helpers/h';
import { markdownToSlate, slateToMarkdown } from '../index';
diff --git a/packages/decap-cms-widget-number/package.json b/packages/decap-cms-widget-number/package.json
index d15d64b5d5f0..c5ad089638b4 100644
--- a/packages/decap-cms-widget-number/package.json
+++ b/packages/decap-cms-widget-number/package.json
@@ -23,6 +23,7 @@
"react-immutable-proptypes": "^2.1.0"
},
"peerDependencies": {
+ "@emotion/react": "^11.11.1",
"decap-cms-ui-default": "^3.0.0",
"immutable": "^3.7.6",
"prop-types": "^15.7.2",
diff --git a/packages/decap-cms-widget-number/src/NumberPreview.js b/packages/decap-cms-widget-number/src/NumberPreview.js
index 397de228edd3..d71fe42b795f 100644
--- a/packages/decap-cms-widget-number/src/NumberPreview.js
+++ b/packages/decap-cms-widget-number/src/NumberPreview.js
@@ -1,4 +1,3 @@
-import React from 'react';
import PropTypes from 'prop-types';
import { WidgetPreviewContainer } from 'decap-cms-ui-default';
diff --git a/packages/decap-cms-widget-object/src/ObjectPreview.js b/packages/decap-cms-widget-object/src/ObjectPreview.js
index 5209503eb75e..6ee443127b7f 100644
--- a/packages/decap-cms-widget-object/src/ObjectPreview.js
+++ b/packages/decap-cms-widget-object/src/ObjectPreview.js
@@ -1,4 +1,3 @@
-import React from 'react';
import ImmutablePropTypes from 'react-immutable-proptypes';
import { WidgetPreviewContainer } from 'decap-cms-ui-default';
import { fromJS } from 'immutable';
diff --git a/packages/decap-cms-widget-relation/src/RelationPreview.js b/packages/decap-cms-widget-relation/src/RelationPreview.js
index c4c5a96356ec..18b3710c67ad 100644
--- a/packages/decap-cms-widget-relation/src/RelationPreview.js
+++ b/packages/decap-cms-widget-relation/src/RelationPreview.js
@@ -1,4 +1,3 @@
-import React from 'react';
import PropTypes from 'prop-types';
import { WidgetPreviewContainer } from 'decap-cms-ui-default';
diff --git a/packages/decap-cms-widget-richtext/src/RichtextControl/RawEditor.js b/packages/decap-cms-widget-richtext/src/RichtextControl/RawEditor.js
index 336c75403cc4..913d2ef7d16c 100644
--- a/packages/decap-cms-widget-richtext/src/RichtextControl/RawEditor.js
+++ b/packages/decap-cms-widget-richtext/src/RichtextControl/RawEditor.js
@@ -1,4 +1,4 @@
-import React, { useEffect } from 'react';
+import { useEffect } from 'react';
import PropTypes from 'prop-types';
import ImmutablePropTypes from 'react-immutable-proptypes';
import { css, ClassNames } from '@emotion/react';
diff --git a/packages/decap-cms-widget-richtext/src/RichtextControl/VisualEditor.js b/packages/decap-cms-widget-richtext/src/RichtextControl/VisualEditor.js
index f19def1031a1..78e13d983f8d 100644
--- a/packages/decap-cms-widget-richtext/src/RichtextControl/VisualEditor.js
+++ b/packages/decap-cms-widget-richtext/src/RichtextControl/VisualEditor.js
@@ -1,4 +1,4 @@
-import React, { useEffect } from 'react';
+import { useEffect } from 'react';
import { KEYS } from 'platejs';
import { usePlateEditor, Plate, ParagraphPlugin, PlateLeaf } from 'platejs/react';
import {
diff --git a/packages/decap-cms-widget-richtext/src/RichtextControl/components/Editor.js b/packages/decap-cms-widget-richtext/src/RichtextControl/components/Editor.js
index c729ce43229f..8ed4e73b943b 100644
--- a/packages/decap-cms-widget-richtext/src/RichtextControl/components/Editor.js
+++ b/packages/decap-cms-widget-richtext/src/RichtextControl/components/Editor.js
@@ -1,4 +1,3 @@
-import React from 'react';
import { PlateContent } from 'platejs/react';
import { ClassNames } from '@emotion/react';
diff --git a/packages/decap-cms-widget-richtext/src/RichtextControl/components/Element/BlockquoteElement.js b/packages/decap-cms-widget-richtext/src/RichtextControl/components/Element/BlockquoteElement.js
index c99ce7aa14f0..ee6ee85c71e3 100644
--- a/packages/decap-cms-widget-richtext/src/RichtextControl/components/Element/BlockquoteElement.js
+++ b/packages/decap-cms-widget-richtext/src/RichtextControl/components/Element/BlockquoteElement.js
@@ -1,4 +1,3 @@
-import React from 'react';
import styled from '@emotion/styled';
import { colors } from 'decap-cms-ui-default';
import { PlateElement } from 'platejs/react';
diff --git a/packages/decap-cms-widget-richtext/src/RichtextControl/components/Element/BreakElement.js b/packages/decap-cms-widget-richtext/src/RichtextControl/components/Element/BreakElement.js
index 17c7ee1319b6..38ee1159b85d 100644
--- a/packages/decap-cms-widget-richtext/src/RichtextControl/components/Element/BreakElement.js
+++ b/packages/decap-cms-widget-richtext/src/RichtextControl/components/Element/BreakElement.js
@@ -1,4 +1,3 @@
-import React from 'react';
import { PlateElement } from 'platejs/react';
function BreakElement(props) {
diff --git a/packages/decap-cms-widget-richtext/src/RichtextControl/components/Element/HeadingElement.js b/packages/decap-cms-widget-richtext/src/RichtextControl/components/Element/HeadingElement.js
index 8c4e025bd938..26b23fb0561e 100644
--- a/packages/decap-cms-widget-richtext/src/RichtextControl/components/Element/HeadingElement.js
+++ b/packages/decap-cms-widget-richtext/src/RichtextControl/components/Element/HeadingElement.js
@@ -1,4 +1,3 @@
-import React from 'react';
import styled from '@emotion/styled';
const headingVariants = {
diff --git a/packages/decap-cms-widget-richtext/src/RichtextControl/components/Element/ImageElement.js b/packages/decap-cms-widget-richtext/src/RichtextControl/components/Element/ImageElement.js
index 0236dff2844e..f5a925c0bd40 100644
--- a/packages/decap-cms-widget-richtext/src/RichtextControl/components/Element/ImageElement.js
+++ b/packages/decap-cms-widget-richtext/src/RichtextControl/components/Element/ImageElement.js
@@ -1,4 +1,3 @@
-import React from 'react';
import { PlateElement } from 'platejs/react';
function isAbsoluteAssetUrl(url) {
diff --git a/packages/decap-cms-widget-richtext/src/RichtextControl/components/Element/LinkElement.js b/packages/decap-cms-widget-richtext/src/RichtextControl/components/Element/LinkElement.js
index 1257b915f0a4..6c452c735eff 100644
--- a/packages/decap-cms-widget-richtext/src/RichtextControl/components/Element/LinkElement.js
+++ b/packages/decap-cms-widget-richtext/src/RichtextControl/components/Element/LinkElement.js
@@ -1,4 +1,3 @@
-import React from 'react';
import { PlateElement } from 'platejs/react';
import { useLink } from '@platejs/link/react';
diff --git a/packages/decap-cms-widget-richtext/src/RichtextControl/components/Element/ListElement.js b/packages/decap-cms-widget-richtext/src/RichtextControl/components/Element/ListElement.js
index acd3e05a6c56..103a93ade294 100644
--- a/packages/decap-cms-widget-richtext/src/RichtextControl/components/Element/ListElement.js
+++ b/packages/decap-cms-widget-richtext/src/RichtextControl/components/Element/ListElement.js
@@ -1,4 +1,3 @@
-import React from 'react';
import styled from '@emotion/styled';
import { PlateElement } from 'platejs/react';
diff --git a/packages/decap-cms-widget-richtext/src/RichtextControl/components/Element/ShortcodeElement.js b/packages/decap-cms-widget-richtext/src/RichtextControl/components/Element/ShortcodeElement.js
index 1008f43f383b..beda51467d77 100644
--- a/packages/decap-cms-widget-richtext/src/RichtextControl/components/Element/ShortcodeElement.js
+++ b/packages/decap-cms-widget-richtext/src/RichtextControl/components/Element/ShortcodeElement.js
@@ -1,4 +1,4 @@
-import React, { useState } from 'react';
+import { useState } from 'react';
import styled from '@emotion/styled';
import { fromJS } from 'immutable';
import { omit } from 'lodash';
diff --git a/packages/decap-cms-widget-richtext/src/RichtextControl/components/Element/TableCellElement.js b/packages/decap-cms-widget-richtext/src/RichtextControl/components/Element/TableCellElement.js
index ee98decc5231..e9bbe60fe612 100644
--- a/packages/decap-cms-widget-richtext/src/RichtextControl/components/Element/TableCellElement.js
+++ b/packages/decap-cms-widget-richtext/src/RichtextControl/components/Element/TableCellElement.js
@@ -1,4 +1,3 @@
-import React from 'react';
import styled from '@emotion/styled';
const StyledTd = styled.td`
diff --git a/packages/decap-cms-widget-richtext/src/RichtextControl/components/Element/TableElement.js b/packages/decap-cms-widget-richtext/src/RichtextControl/components/Element/TableElement.js
index 9654e6a46238..50d64b85612e 100644
--- a/packages/decap-cms-widget-richtext/src/RichtextControl/components/Element/TableElement.js
+++ b/packages/decap-cms-widget-richtext/src/RichtextControl/components/Element/TableElement.js
@@ -1,4 +1,3 @@
-import React from 'react';
import styled from '@emotion/styled';
const StyledTable = styled.table`
diff --git a/packages/decap-cms-widget-richtext/src/RichtextControl/components/Element/TableRowElement.js b/packages/decap-cms-widget-richtext/src/RichtextControl/components/Element/TableRowElement.js
index bdc3d65b6a4c..b75e54fc3a30 100644
--- a/packages/decap-cms-widget-richtext/src/RichtextControl/components/Element/TableRowElement.js
+++ b/packages/decap-cms-widget-richtext/src/RichtextControl/components/Element/TableRowElement.js
@@ -1,5 +1,3 @@
-import React from 'react';
-
function TableRowElement({ children, attributes, nodeProps }) {
return (
diff --git a/packages/decap-cms-widget-richtext/src/RichtextControl/components/Leaf/CodeLeaf.js b/packages/decap-cms-widget-richtext/src/RichtextControl/components/Leaf/CodeLeaf.js
index 66fd0033e93c..60ce96e4aae5 100644
--- a/packages/decap-cms-widget-richtext/src/RichtextControl/components/Leaf/CodeLeaf.js
+++ b/packages/decap-cms-widget-richtext/src/RichtextControl/components/Leaf/CodeLeaf.js
@@ -1,4 +1,3 @@
-import React from 'react';
import styled from '@emotion/styled';
import { colors, lengths } from 'decap-cms-ui-default';
diff --git a/packages/decap-cms-widget-richtext/src/RichtextControl/components/Toolbar/BlockquoteToolbarButton.js b/packages/decap-cms-widget-richtext/src/RichtextControl/components/Toolbar/BlockquoteToolbarButton.js
index ac70ac191f99..876aaf71133c 100644
--- a/packages/decap-cms-widget-richtext/src/RichtextControl/components/Toolbar/BlockquoteToolbarButton.js
+++ b/packages/decap-cms-widget-richtext/src/RichtextControl/components/Toolbar/BlockquoteToolbarButton.js
@@ -1,4 +1,3 @@
-import React from 'react';
import { useEditorRef, useEditorSelector } from 'platejs/react';
import { BlockquotePlugin } from '@platejs/basic-nodes/react';
import { unwrapList } from '@platejs/list-classic';
diff --git a/packages/decap-cms-widget-richtext/src/RichtextControl/components/Toolbar/EditorComponentsToolbarButton.js b/packages/decap-cms-widget-richtext/src/RichtextControl/components/Toolbar/EditorComponentsToolbarButton.js
index c2c4d7c68dd4..afa9185c322a 100644
--- a/packages/decap-cms-widget-richtext/src/RichtextControl/components/Toolbar/EditorComponentsToolbarButton.js
+++ b/packages/decap-cms-widget-richtext/src/RichtextControl/components/Toolbar/EditorComponentsToolbarButton.js
@@ -1,4 +1,4 @@
-import React, { useCallback } from 'react';
+import { useCallback } from 'react';
import PropTypes from 'prop-types';
import styled from '@emotion/styled';
import { Dropdown, DropdownButton, DropdownItem } from 'decap-cms-ui-default';
diff --git a/packages/decap-cms-widget-richtext/src/RichtextControl/components/Toolbar/HeadingToolbarButton.js b/packages/decap-cms-widget-richtext/src/RichtextControl/components/Toolbar/HeadingToolbarButton.js
index 8e4141f679f7..0668761bd2a4 100644
--- a/packages/decap-cms-widget-richtext/src/RichtextControl/components/Toolbar/HeadingToolbarButton.js
+++ b/packages/decap-cms-widget-richtext/src/RichtextControl/components/Toolbar/HeadingToolbarButton.js
@@ -1,4 +1,3 @@
-import React from 'react';
import PropTypes from 'prop-types';
import styled from '@emotion/styled';
import { unwrapList } from '@platejs/list-classic';
diff --git a/packages/decap-cms-widget-richtext/src/RichtextControl/components/Toolbar/LinkToolbarButton.js b/packages/decap-cms-widget-richtext/src/RichtextControl/components/Toolbar/LinkToolbarButton.js
index 000c605a38bc..ee0fb5245b83 100644
--- a/packages/decap-cms-widget-richtext/src/RichtextControl/components/Toolbar/LinkToolbarButton.js
+++ b/packages/decap-cms-widget-richtext/src/RichtextControl/components/Toolbar/LinkToolbarButton.js
@@ -1,4 +1,3 @@
-import React from 'react';
import { useEditorRef } from 'platejs/react';
import { useLinkToolbarButton, useLinkToolbarButtonState } from '@platejs/link/react';
diff --git a/packages/decap-cms-widget-richtext/src/RichtextControl/components/Toolbar/ListToolbarButton.js b/packages/decap-cms-widget-richtext/src/RichtextControl/components/Toolbar/ListToolbarButton.js
index 730c7918f446..027c6273bb6e 100644
--- a/packages/decap-cms-widget-richtext/src/RichtextControl/components/Toolbar/ListToolbarButton.js
+++ b/packages/decap-cms-widget-richtext/src/RichtextControl/components/Toolbar/ListToolbarButton.js
@@ -1,4 +1,3 @@
-import React from 'react';
import { useListToolbarButton, useListToolbarButtonState } from '@platejs/list-classic/react';
import ToolbarButton from './ToolbarButton';
diff --git a/packages/decap-cms-widget-richtext/src/RichtextControl/components/Toolbar/MarkToolbarButton.js b/packages/decap-cms-widget-richtext/src/RichtextControl/components/Toolbar/MarkToolbarButton.js
index f594ce99630f..0c69aaef366c 100644
--- a/packages/decap-cms-widget-richtext/src/RichtextControl/components/Toolbar/MarkToolbarButton.js
+++ b/packages/decap-cms-widget-richtext/src/RichtextControl/components/Toolbar/MarkToolbarButton.js
@@ -1,4 +1,3 @@
-import React from 'react';
import { useMarkToolbarButton, useMarkToolbarButtonState } from 'platejs/react';
import ToolbarButton from './ToolbarButton';
diff --git a/packages/decap-cms-widget-richtext/src/RichtextControl/components/Toolbar/Toolbar.js b/packages/decap-cms-widget-richtext/src/RichtextControl/components/Toolbar/Toolbar.js
index 7ac7f596358b..00bb26bffd75 100644
--- a/packages/decap-cms-widget-richtext/src/RichtextControl/components/Toolbar/Toolbar.js
+++ b/packages/decap-cms-widget-richtext/src/RichtextControl/components/Toolbar/Toolbar.js
@@ -1,4 +1,3 @@
-import React from 'react';
import PropTypes from 'prop-types';
import styled from '@emotion/styled';
import { List } from 'immutable';
diff --git a/packages/decap-cms-widget-richtext/src/RichtextControl/components/Toolbar/ToolbarButton.js b/packages/decap-cms-widget-richtext/src/RichtextControl/components/Toolbar/ToolbarButton.js
index 8db168b01ed2..1aaa1628af0f 100644
--- a/packages/decap-cms-widget-richtext/src/RichtextControl/components/Toolbar/ToolbarButton.js
+++ b/packages/decap-cms-widget-richtext/src/RichtextControl/components/Toolbar/ToolbarButton.js
@@ -1,4 +1,3 @@
-import React from 'react';
import PropTypes from 'prop-types';
import styled from '@emotion/styled';
import { Icon, buttons } from 'decap-cms-ui-default';
diff --git a/packages/decap-cms-widget-richtext/src/RichtextControl/editorContext.js b/packages/decap-cms-widget-richtext/src/RichtextControl/editorContext.js
index 6ceb6806efbf..d5e9d1c2b436 100644
--- a/packages/decap-cms-widget-richtext/src/RichtextControl/editorContext.js
+++ b/packages/decap-cms-widget-richtext/src/RichtextControl/editorContext.js
@@ -1,4 +1,4 @@
-import React, { createContext, useContext } from 'react';
+import { createContext, useContext } from 'react';
const EditorContext = createContext(null);
diff --git a/packages/decap-cms-widget-richtext/src/RichtextPreview.js b/packages/decap-cms-widget-richtext/src/RichtextPreview.js
index 749278216f1d..5b2622fd548e 100644
--- a/packages/decap-cms-widget-richtext/src/RichtextPreview.js
+++ b/packages/decap-cms-widget-richtext/src/RichtextPreview.js
@@ -1,4 +1,3 @@
-import React from 'react';
import PropTypes from 'prop-types';
import { WidgetPreviewContainer } from 'decap-cms-ui-default';
import ImmutablePropTypes from 'react-immutable-proptypes';
diff --git a/packages/decap-cms-widget-richtext/src/__tests__/renderer.spec.js b/packages/decap-cms-widget-richtext/src/__tests__/renderer.spec.js
index 2de193e8a07b..b3829077c466 100644
--- a/packages/decap-cms-widget-richtext/src/__tests__/renderer.spec.js
+++ b/packages/decap-cms-widget-richtext/src/__tests__/renderer.spec.js
@@ -1,4 +1,3 @@
-import React from 'react';
import { render, screen } from '@testing-library/react';
import padStart from 'lodash/padStart';
import { Map } from 'immutable';
diff --git a/packages/decap-cms-widget-richtext/src/serializers/__tests__/slate.spec.js b/packages/decap-cms-widget-richtext/src/serializers/__tests__/slate.spec.js
index 1b9d00e83d03..844513dd8d9b 100644
--- a/packages/decap-cms-widget-richtext/src/serializers/__tests__/slate.spec.js
+++ b/packages/decap-cms-widget-richtext/src/serializers/__tests__/slate.spec.js
@@ -1,7 +1,9 @@
+/** @jsxRuntime classic */
/** @jsx h */
import flow from 'lodash/flow';
+// eslint-disable-next-line no-unused-vars
import h from '../../../test-helpers/h';
import { markdownToSlate, slateToMarkdown } from '../index';
diff --git a/packages/decap-cms-widget-select/package.json b/packages/decap-cms-widget-select/package.json
index a22dd9293ee7..214d95ba10a5 100644
--- a/packages/decap-cms-widget-select/package.json
+++ b/packages/decap-cms-widget-select/package.json
@@ -22,6 +22,7 @@
"build:esm": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward"
},
"peerDependencies": {
+ "@emotion/react": "^11.11.1",
"decap-cms-lib-widgets": "^3.0.0",
"decap-cms-ui-default": "^3.0.0",
"immutable": "^3.7.6",
diff --git a/packages/decap-cms-widget-select/src/SelectPreview.js b/packages/decap-cms-widget-select/src/SelectPreview.js
index ea20f7b5eb1d..34d38f50a771 100644
--- a/packages/decap-cms-widget-select/src/SelectPreview.js
+++ b/packages/decap-cms-widget-select/src/SelectPreview.js
@@ -1,5 +1,4 @@
import PropTypes from 'prop-types';
-import React from 'react';
import { List } from 'immutable';
import ImmutablePropTypes from 'react-immutable-proptypes';
import { WidgetPreviewContainer } from 'decap-cms-ui-default';
diff --git a/packages/decap-cms-widget-string/package.json b/packages/decap-cms-widget-string/package.json
index f47f3a3cc5c2..6d3a63b06498 100644
--- a/packages/decap-cms-widget-string/package.json
+++ b/packages/decap-cms-widget-string/package.json
@@ -20,6 +20,7 @@
"build:esm": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward"
},
"peerDependencies": {
+ "@emotion/react": "^11.11.1",
"decap-cms-ui-default": "^3.0.0",
"prop-types": "^15.7.2",
"react": "^19.1.0"
diff --git a/packages/decap-cms-widget-string/src/StringPreview.js b/packages/decap-cms-widget-string/src/StringPreview.js
index f475c0ab2aff..5f3c94516cbd 100644
--- a/packages/decap-cms-widget-string/src/StringPreview.js
+++ b/packages/decap-cms-widget-string/src/StringPreview.js
@@ -1,4 +1,3 @@
-import React from 'react';
import PropTypes from 'prop-types';
import { WidgetPreviewContainer } from 'decap-cms-ui-default';
diff --git a/packages/decap-cms-widget-text/package.json b/packages/decap-cms-widget-text/package.json
index d589ec955f46..d6711ce5d57c 100644
--- a/packages/decap-cms-widget-text/package.json
+++ b/packages/decap-cms-widget-text/package.json
@@ -26,6 +26,7 @@
"react-textarea-autosize": "^8.0.0"
},
"peerDependencies": {
+ "@emotion/react": "^11.11.1",
"decap-cms-ui-default": "^3.0.0",
"prop-types": "^15.7.2",
"react": "^19.1.0"
diff --git a/packages/decap-cms-widget-text/src/TextPreview.js b/packages/decap-cms-widget-text/src/TextPreview.js
index 8ce1bf1ffd5c..3e0cd8e8be18 100644
--- a/packages/decap-cms-widget-text/src/TextPreview.js
+++ b/packages/decap-cms-widget-text/src/TextPreview.js
@@ -1,4 +1,3 @@
-import React from 'react';
import PropTypes from 'prop-types';
import { WidgetPreviewContainer } from 'decap-cms-ui-default';
diff --git a/tsconfig.json b/tsconfig.json
index f953092fe550..e927bf2a0937 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -1,7 +1,8 @@
{
"compilerOptions": {
"declaration": true,
- "jsx": "react",
+ "jsx": "react-jsx",
+ "jsxImportSource": "@emotion/react",
"target": "esnext",
"module": "nodenext",
"moduleResolution": "nodenext",
@@ -21,7 +22,7 @@
"decap-cms-backend-gitlab": ["packages/decap-cms-backend-gitlab/src"],
"decap-cms-lib-util": ["packages/decap-cms-lib-util/src"],
"decap-cms-lib-widgets": ["packages/decap-cms-lib-widgets/src"],
- "decap-cms-ui-default": ["packages/decap-cms-ui-default/src"],
+ "decap-cms-ui-default": ["packages/decap-cms-ui-default/src"]
}
},
"include": ["**/src/**/*"],