Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
a6dd834
Update @types/node, eslint, rollup, ace-build, bootstrap
jvega190 Sep 16, 2025
9affd0a
Update @mui/*, @types/jquery, @babel/cli, monaco-editor, webpack, @ba…
jvega190 Sep 16, 2025
0d3b71d
Update marked, query-string, @typescript-eslint/eslint-plugin, @types…
jvega190 Sep 16, 2025
c2e0d17
Update marked, query-string, @typescript-eslint/eslint-plugin, @types…
jvega190 Sep 17, 2025
d1456f4
Update vite, @swc/core
jvega190 Sep 17, 2025
e8b5b9a
Merge remote-tracking branch 'origin/npm_and_yarn/support/4.x/all-ui-…
jvega190 Sep 17, 2025
9cf9f99
Update highlight.js, rimraf
jvega190 Sep 17, 2025
0d0add9
Update uuid
jvega190 Sep 17, 2025
3f43efb
Update react, @types/react, react-dom, @types/react-dom, react-is, @t…
jvega190 Sep 17, 2025
5b75412
Update react-router-dom => react-router
jvega190 Sep 17, 2025
8d31d42
Yarn dedupe, update CHANGELOG
jvega190 Sep 17, 2025
56559b3
Add @types/react to ui/app/package.json
jvega190 Sep 18, 2025
634790c
Update @craftercms/classes, @craftercms/content
jvega190 Sep 18, 2025
4a5a2bb
Update @mui/x
jvega190 Sep 18, 2025
b3dc29d
yarn dedupe
jvega190 Sep 18, 2025
a651535
CHANGELOG update
jvega190 Sep 18, 2025
1ba3171
Merge branch 'support/4.x' of https://github.com/craftercms/studio-ui…
jvega190 Sep 19, 2025
295383b
Update @eslint/compat, @rollup/plugin-node-resolve, @rollup/plugin-re…
jvega190 Nov 19, 2025
7f159eb
Update ace-builds, js-yaml, monaco-editor, monaco-editor-webpack-plugin
jvega190 Nov 19, 2025
926a7a9
Update @babel/preset-env, @babel/preset-react, @mui/*
jvega190 Nov 19, 2025
3dba300
Update @stomp/stompjs, fast-xml-parser, graphql, marked-highlight, na…
jvega190 Nov 19, 2025
4428014
Update react, @types/react, react-dom, @types/react-dom, react-hotkey…
jvega190 Nov 19, 2025
8e340ae
Update @formajs/cli, @typescript-eslint/eslint-plugin, @typescript-es…
jvega190 Nov 19, 2025
c091ac9
Update typescript, vite, react-is, @types/react-is, @swc/core, @swc/cli
jvega190 Nov 19, 2025
88799c8
Update marked, eslint-plugin-react-hooks, @rollup/plugin-alias, @roll…
jvega190 Nov 19, 2025
592b502
Update @reduxjs/toolkit
jvega190 Nov 19, 2025
b49e09f
Move @types/react and @types/react-dom to devDeps
jvega190 Nov 27, 2025
0877328
Update replace-in-file, update guest scripts to be ESM
jvega190 Nov 27, 2025
fb36285
Update @mui/x, marked, video.js, rimraf, vite
jvega190 Nov 27, 2025
5c95101
Update @types/react, @typescript-eslint/eslint-plugin, @typescript-es…
jvega190 Nov 27, 2025
54b8590
Update @eslint/compat
jvega190 Nov 27, 2025
b1ee94c
Update css-loader
jvega190 Nov 27, 2025
5d9d435
Move @types/react-dom and typescript to devDependencies
jvega190 Dec 16, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -80,20 +80,20 @@
"bom:remove": "rimraf ./target/bom.json ./ui/**/target"
},
"devDependencies": {
"@eslint/compat": "^1.3.2",
"@rollup/plugin-commonjs": "^28.0.6",
"@rollup/plugin-node-resolve": "^16.0.1",
"@rollup/plugin-replace": "^6.0.2",
"@types/node": "^24.2.1",
"@eslint/compat": "^2.0.0",
"@rollup/plugin-commonjs": "^29.0.0",
"@rollup/plugin-node-resolve": "^16.0.3",
"@rollup/plugin-replace": "^6.0.3",
"@types/node": "^24.10.1",
"@types/rimraf": "^4.0.5",
"build-if-changed": "^1.5.5",
"eslint": "^9.33.0",
"eslint": "^9.39.1",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-prettier": "^5.5.4",
"glob-gitignore": "^1.0.15",
"npm-run-all": "^4.1.5",
"rimraf": "^5.0.7",
"rollup": "^4.46.2",
"rimraf": "^6.1.2",
"rollup": "^4.53.3",
"rollup-plugin-copy": "^3.5.0",
"yargs": "^17.7.2"
},
Expand Down
80 changes: 40 additions & 40 deletions ui/app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -59,78 +59,78 @@
"@emotion/react": "^11.14.0",
"@emotion/styled": "^11.14.1",
"@graphiql/plugin-explorer": "^3.0.1",
"@mui/icons-material": "^7.3.1",
"@mui/lab": "7.0.0-beta.16",
"@mui/material": "^7.3.1",
"@mui/x-data-grid": "^8.10.0",
"@mui/x-date-pickers": "^8.10.0",
"@mui/x-tree-view": "^8.10.0",
"@mui/icons-material": "^7.3.5",
"@mui/lab": "7.0.1-beta.19",
"@mui/material": "^7.3.5",
"@mui/x-data-grid": "^8.20.0",
"@mui/x-date-pickers": "^8.19.0",
"@mui/x-tree-view": "^8.19.0",
"@prettier/plugin-xml": "3.3.0",
"@reduxjs/toolkit": "^2.2.5",
"@stomp/stompjs": "^7.1.1",
"@reduxjs/toolkit": "^2.10.1",
"@stomp/stompjs": "^7.2.1",
"@types/ace": "^0.0.52",
"@types/react": "^18.3.20",
"@types/react-dom": "^18.3.5",
"@types/react-swipeable-views": "^0.13.6",
"@types/video.js": "^7.3.58",
"autosuggest-highlight": "^3.3.4",
"clsx": "^2.1.1",
"fast-xml-parser": "^5.2.5",
"fast-xml-parser": "^5.3.2",
"graphiql": "^3.2.2",
"graphql": "^16.11.0",
"graphql": "^16.12.0",
"graphql-ws": "^6.0.6",
"highlight.js": "^11.9.0",
"highlight.js": "^11.11.1",
"jabber": "^1.5.3",
"js-cookie": "^3.0.5",
"marked": "^16.1.2",
"marked-highlight": "^2.2.2",
"marked": "^17.0.1",
"marked-highlight": "^2.2.3",
"moment-timezone": "^0.6.0",
"nanoid": "^5.1.5",
"nanoid": "^5.1.6",
"notistack": "3.0.2",
"prettier": "^3.6.2",
"query-string": "^9.2.2",
"react": "18.3.1",
"query-string": "^9.3.1",
"react": "19.2.0",
"react-animations": "^1.0.0",
"react-dom": "18.3.1",
"react-hotkeys-hook": "^5.1.0",
"react-dom": "19.2.0",
"react-hotkeys-hook": "^5.2.1",
"react-infinite-scroller": "^1.2.6",
"react-intl": "^7.1.11",
"react-intl": "^7.1.14",
"react-redux": "^9.2.0",
"react-router-dom": "^6.23.1",
"react-swipeable-views": "^0.14.0",
"react-swipeable-views-utils": "^0.14.0",
"react-router": "^7.9.6",
"react-swipeable-views": "^0.14.1",
"react-swipeable-views-utils": "^0.14.1",
"redux": "^5.0.1",
"redux-observable": "^3.0.0-rc.2",
"rxjs": "^7.8.1",
"slugify": "^1.6.6",
"tss-react": "^4.9.19",
"uppy": "^3.27.3",
"uuid": "^11.1.0",
"video.js": "^8.23.4",
"uuid": "^13.0.0",
"video.js": "^8.23.6",
"zxcvbn": "^4.4.2"
},
"devDependencies": {
"@formatjs/cli": "^6.7.2",
"@formatjs/cli": "^6.7.4",
"@rollup/plugin-swc": "^0.4.0",
"@types/js-cookie": "^3.0.6",
"@types/react": "^19.2.7",
"@types/react-dom": "^19.2.3",
"@types/react-infinite-scroller": "^1.2.5",
"@types/zxcvbn": "^4.4.5",
"@typescript-eslint/eslint-plugin": "^8.39.1",
"@typescript-eslint/parser": "^8.39.1",
"@vitejs/plugin-react": "^5.0.0",
"@vitejs/plugin-react-swc": "^4.0.0",
"babel-plugin-formatjs": "^10.5.39",
"@typescript-eslint/eslint-plugin": "^8.48.0",
"@typescript-eslint/parser": "^8.48.0",
"@vitejs/plugin-react": "^5.1.1",
"@vitejs/plugin-react-swc": "^4.2.2",
"babel-plugin-formatjs": "^10.5.41",
"build-if-changed": "^1.5.5",
"eslint": "^9.33.0",
"eslint-plugin-formatjs": "^5.4.0",
"eslint-plugin-react-hooks": "^5.2.0",
"eslint-plugin-react-refresh": "^0.4.20",
"eslint": "^9.39.1",
"eslint-plugin-formatjs": "^5.4.2",
"eslint-plugin-react-hooks": "^7.0.1",
"eslint-plugin-react-refresh": "^0.4.24",
"ncp": "^2.0.0",
"npm-run-all": "^4.1.5",
"prop-types": "^15.8.1",
"rimraf": "^6.0.1",
"rollup": "^4.46.2",
"typescript": "^5.9.2",
"vite": "^7.1.2"
"rimraf": "^6.1.2",
"rollup": "^4.53.3",
"typescript": "^5.9.3",
"vite": "^7.2.4"
}
}
6 changes: 6 additions & 0 deletions ui/app/src/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,12 @@
## 5.0.1 (CrafterCMS 4.5.0)
* [components]
* `SearchBar`: Update the default DecoratorIcon to select the search input on click.
* Upgraded:
* react to 19.1.1
* react-dom to 19.1.1
* react-router to 7.9.1
* uuid to 13.0.0
* and a host of other deps. See [4639](https://github.com/craftercms/studio-ui/pull/4639)

## 5.0.0 (CrafterCMS 4.4.3)
* Version 5.0.0 should be paired with CrafterCMS 4.4.3 or later.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -538,7 +538,6 @@ export function ActivityDashlet(props: ActivityDashletProps) {
</SizedTimelineSeparator>
<TimelineContent sx={emptyTimelineContentSx} />
</CustomTimelineItem>
{/* @ts-expect-error - TS2786: InfiniteScroll cannot be used as a JSX component. Lib Types are not compatible with the latest react types. */}
<InfiniteScroll
initialLoad={false}
pageStart={0}
Expand Down
2 changes: 1 addition & 1 deletion ui/app/src/components/GlobalApp/GlobalApp.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ import {
RouterProvider,
useLocation,
Outlet
} from 'react-router-dom';
} from 'react-router';
import SiteManagement from '../SiteManagement';
import { getLauncherSectionLink, urlMapping } from '../LauncherSection/utils';
import EmptyState from '../EmptyState/EmptyState';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ import useActiveUser from '../../hooks/useActiveUser';
import { batchActions, dispatchDOMEvent } from '../../state/actions/misc';
import { closeConfirmDialog, showConfirmDialog } from '../../state/actions/dialogs';
import { createCustomDocumentEventListener } from '../../utils/dom';
import { useBeforeUnload, useNavigate } from 'react-router-dom';
import { useBeforeUnload, useNavigate } from 'react-router';
import { GlobalRoutes } from '../../env/routes';

const translations = defineMessages({
Expand Down
2 changes: 1 addition & 1 deletion ui/app/src/components/Preview/Preview.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ import Box from '@mui/material/Box';
import { useDispatch } from 'react-redux';
import queryString from 'query-string';
import { useIntl } from 'react-intl';
import { useLocation, useNavigate } from 'react-router-dom';
import { useLocation, useNavigate } from 'react-router';
import usePreviewNavigation from '../../hooks/usePreviewNavigation';
import useSiteLookup from '../../hooks/useSiteLookup';
import useActiveSiteId from '../../hooks/useActiveSiteId';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,14 @@
import Avatar from '@mui/material/Avatar';
import CloudUploadOutlined from '@mui/icons-material/CloudUploadOutlined';
import * as React from 'react';
import { CSSProperties } from 'react';
import { PublishingStatus, PublishingStatusCodes } from '../../models/Publishing';
import { makeStyles } from 'tss-react/mui';
import { getPublishingStatusCodeColor } from './util';
import { CSSObject } from 'tss-react';

type PublishingStatusAvatarClassKey = 'root' | 'icon';

type PublishingStatusAvatarStyles = Partial<Record<PublishingStatusAvatarClassKey, CSSProperties>>;
type PublishingStatusAvatarStyles = Partial<Record<PublishingStatusAvatarClassKey, CSSObject>>;

export interface PublishingStatusAvatarProps extends Pick<PublishingStatus, 'enabled' | 'status'> {
className?: string;
Expand All @@ -35,7 +35,7 @@ export interface PublishingStatusAvatarProps extends Pick<PublishingStatus, 'ena

const useStyles = makeStyles<{ styles: PublishingStatusAvatarStyles; stylingTarget: 'backgroundColor' | 'color' }>()((
theme,
{ styles, stylingTarget } = {} as any
{ styles, stylingTarget } = {} as { styles: PublishingStatusAvatarStyles; stylingTarget: 'backgroundColor' | 'color' }
) => {
return {
root: {
Expand Down
2 changes: 1 addition & 1 deletion ui/app/src/components/Search/URLDrivenSearch.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ import {
} from './utils';
import SearchUI from '../SearchUI';
import { UNDEFINED } from '../../utils/constants';
import { useLocation, useNavigate } from 'react-router-dom';
import { useLocation, useNavigate } from 'react-router';

export function URLDrivenSearch(props: URLDrivenSearchProps) {
const { mode = 'default', onSelect, embedded = false, onAcceptSelection, onClose } = props;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import useActiveSiteId from '../../../hooks/useActiveSiteId';
import useEnv from '../../../hooks/useEnv';
import SiteTools, { Tool } from '../SiteTools';
import { getSystemLink } from '../../../utils/system';
import { useLocation, useNavigate } from 'react-router-dom';
import { useLocation, useNavigate } from 'react-router';
import { SiteToolsContext, SiteToolsContextProps } from '../siteToolsContext';

interface UrlDrivenSiteToolsProps {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,6 @@ export function TransferListColumn(props: TransferListColumnProps) {
}
/>
) : (
// @ts-expect-error - TS2786: InfiniteScroll cannot be used as a JSX component. Lib Types are not compatible with the latest react types.
<InfiniteScroll
initialLoad={false}
pageStart={0}
Expand Down
2 changes: 1 addition & 1 deletion ui/app/src/pages/Preview.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import React from 'react';
import { createHashRouter, createRoutesFromElements, Route, RouterProvider } from 'react-router-dom';
import { createHashRouter, createRoutesFromElements, Route, RouterProvider } from 'react-router';
import PreviewComponent from '../components/Preview/Preview';

export default function Preview() {
Expand Down
2 changes: 1 addition & 1 deletion ui/app/src/pages/Search.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import React from 'react';
import { createHashRouter, createRoutesFromElements, Route, RouterProvider, useParams } from 'react-router-dom';
import { createHashRouter, createRoutesFromElements, Route, RouterProvider, useParams } from 'react-router';
import URLDrivenSearch from '../components/Search/URLDrivenSearch';

export default function SearchApp(topProps: any) {
Expand Down
2 changes: 1 addition & 1 deletion ui/app/src/pages/SiteTools.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
*/

import React from 'react';
import { HashRouter } from 'react-router-dom';
import { HashRouter } from 'react-router';
import { GlobalAppContextProvider } from '../components/GlobalApp';
import UrlDrivenSiteTools from '../components/SiteTools/UrlDrivenSiteTools/UrlDrivenSiteTools';

Expand Down
2 changes: 1 addition & 1 deletion ui/app/src/utils/system.ts
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ export function withMonaco(onReady: (api: Monaco) => void): void {
if (!monaco$) {
monaco$ = new ReplaySubject(1);
const script = document.createElement('script');
script.src = '/studio/static-assets/libs/monaco/monaco.0.52.2.js';
script.src = '/studio/static-assets/libs/monaco/monaco.0.54.0.js';
script.onload = () => {
// @ts-ignore
monaco$.next(window.monaco);
Expand Down
39 changes: 20 additions & 19 deletions ui/guest/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -50,46 +50,47 @@
"lint": "eslint ."
},
"dependencies": {
"@craftercms/classes": "^4.3.0",
"@craftercms/content": "^4.3.0",
"@craftercms/classes": "^4.4.0",
"@craftercms/content": "^4.4.2",
"@craftercms/ice": "^4.3.0",
"@craftercms/npm-content": "workspace:^",
"@craftercms/search": "^4.3.0",
"@craftercms/studio-ui": "workspace:^",
"@emotion/css": "^11.13.5",
"@emotion/react": "^11.14.0",
"@emotion/styled": "^11.14.1",
"@mui/icons-material": "^7.3.1",
"@mui/material": "^7.3.1",
"@reduxjs/toolkit": "^2.2.5",
"@rollup/plugin-alias": "^5.1.1",
"@types/react-dom": "^18.3.5",
"@mui/icons-material": "^7.3.5",
"@mui/material": "^7.3.5",
"@reduxjs/toolkit": "^2.10.1",
"@rollup/plugin-alias": "^6.0.0",
"js-cookie": "^3.0.5",
"prop-types": "^15.8.1",
"react": "18.3.1",
"react-dom": "18.3.1",
"react-hotkeys-hook": "^5.1.0",
"react-is": "^19.0.0",
"react": "19.2.0",
"react-dom": "19.2.0",
"react-hotkeys-hook": "^5.2.1",
"react-is": "^19.2.0",
"react-redux": "^9.2.0",
"redux": "^5.0.1",
"redux-observable": "^3.0.0-rc.2",
"rxjs": "^7.8.1",
"typescript": "^5.9.2",
"uuid": "^11.1.0"
"uuid": "^13.0.0"
},
"devDependencies": {
"@rollup/plugin-swc": "^0.4.0",
"@swc/core": "^1.13.3",
"@types/jquery": "^3.5.32",
"@swc/core": "^1.15.3",
"@types/jquery": "^3.5.33",
"@types/js-cookie": "^3.0.6",
"@types/prop-types": "^15.7.15",
"@types/react-is": "^18.3.1",
"@types/react-dom": "^19.2.3",
"@types/react-is": "^19.2.0",
"build-if-changed": "^1.5.5",
"npm-run-all": "^4.1.5",
"replace-in-file": "^7.1.0",
"rollup": "^4.46.2",
"replace-in-file": "^8.3.0",
"rollup": "^4.53.3",
"rollup-plugin-swc3": "^0.12.1",
"tinymce": "^7.1.1",
"typescript": "^5.9.3",
"yargs": "^17.7.2"
}
},
"type": "module"
}
7 changes: 3 additions & 4 deletions ui/guest/scripts/package.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,9 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

const pkg = require('../../app/package.json');

const path = require('path');
const fse = require('fs-extra');
import pkg from '../../app/package.json' with { type: 'json' };
import path from 'path';
import fse from 'fs-extra';

const packagePath = process.cwd();
const appPath = path.resolve(packagePath, '../app');
Expand Down
8 changes: 4 additions & 4 deletions ui/guest/scripts/replaceEnvVersion.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,14 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

const pkg = require('../package.json');
const path = require('path');
import pkg from '../package.json' with { type: 'json' };
import path from 'path';
const packagePath = process.cwd();
const buildPath = path.join(packagePath, './build_tsc');

const replace = require('replace-in-file');
import { replaceInFile } from 'replace-in-file';

replace({
replaceInFile({
files: `${buildPath}/**/*.js`,
from: ['process.env.VERSION', 'process.env.MIN_STUDIO_VERSION'],
to: [`'${pkg.version}'`, `'${pkg.craftercms.minStudioVersion}'`]
Expand Down
Loading