From 6f05db82b1ff42d5cc7a7f9ed348b21aba3f8d43 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 17 Apr 2026 14:34:20 +0000 Subject: [PATCH 1/6] chore(deps): bump the yarn-major group across 1 directory with 11 updates Bumps the yarn-major group with 11 updates in the / directory: | Package | From | To | | --- | --- | --- | | [@mui/icons-material](https://github.com/mui/material-ui/tree/HEAD/packages/mui-icons-material) | `7.3.9` | `9.0.0` | | [@mui/material](https://github.com/mui/material-ui/tree/HEAD/packages/mui-material) | `7.3.9` | `9.0.0` | | [@mui/material-nextjs](https://github.com/mui/material-ui/tree/HEAD/packages/mui-material-nextjs) | `7.3.9` | `9.0.0` | | [@mui/styled-engine](https://github.com/mui/material-ui/tree/HEAD/packages/mui-styled-engine) | `7.3.9` | `9.0.0` | | [@mui/system](https://github.com/mui/material-ui/tree/HEAD/packages/mui-system) | `7.3.9` | `9.0.0` | | [@mui/x-date-pickers](https://github.com/mui/mui-x/tree/HEAD/packages/x-date-pickers) | `8.27.2` | `9.0.0` | | [@mui/x-tree-view](https://github.com/mui/mui-x/tree/HEAD/packages/x-tree-view) | `8.27.2` | `9.0.1` | | [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) | `9.39.4` | `10.0.1` | | [eslint](https://github.com/eslint/eslint) | `9.39.4` | `10.2.0` | | [eslint-plugin-cypress](https://github.com/cypress-io/eslint-plugin-cypress) | `5.4.0` | `6.3.0` | | [typescript](https://github.com/microsoft/TypeScript) | `5.9.3` | `6.0.2` | Updates `@mui/icons-material` from 7.3.9 to 9.0.0 - [Release notes](https://github.com/mui/material-ui/releases) - [Changelog](https://github.com/mui/material-ui/blob/master/CHANGELOG.md) - [Commits](https://github.com/mui/material-ui/commits/v9.0.0/packages/mui-icons-material) Updates `@mui/material` from 7.3.9 to 9.0.0 - [Release notes](https://github.com/mui/material-ui/releases) - [Changelog](https://github.com/mui/material-ui/blob/master/CHANGELOG.md) - [Commits](https://github.com/mui/material-ui/commits/v9.0.0/packages/mui-material) Updates `@mui/material-nextjs` from 7.3.9 to 9.0.0 - [Release notes](https://github.com/mui/material-ui/releases) - [Changelog](https://github.com/mui/material-ui/blob/master/CHANGELOG.md) - [Commits](https://github.com/mui/material-ui/commits/v9.0.0/packages/mui-material-nextjs) Updates `@mui/styled-engine` from 7.3.9 to 9.0.0 - [Release notes](https://github.com/mui/material-ui/releases) - [Changelog](https://github.com/mui/material-ui/blob/master/CHANGELOG.md) - [Commits](https://github.com/mui/material-ui/commits/v9.0.0/packages/mui-styled-engine) Updates `@mui/system` from 7.3.9 to 9.0.0 - [Release notes](https://github.com/mui/material-ui/releases) - [Changelog](https://github.com/mui/material-ui/blob/master/CHANGELOG.md) - [Commits](https://github.com/mui/material-ui/commits/v9.0.0/packages/mui-system) Updates `@mui/x-date-pickers` from 8.27.2 to 9.0.0 - [Release notes](https://github.com/mui/mui-x/releases) - [Changelog](https://github.com/mui/mui-x/blob/master/CHANGELOG.md) - [Commits](https://github.com/mui/mui-x/commits/v9.0.0/packages/x-date-pickers) Updates `@mui/x-tree-view` from 8.27.2 to 9.0.1 - [Release notes](https://github.com/mui/mui-x/releases) - [Changelog](https://github.com/mui/mui-x/blob/master/CHANGELOG.md) - [Commits](https://github.com/mui/mui-x/commits/v9.0.1/packages/x-tree-view) Updates `@eslint/js` from 9.39.4 to 10.0.1 - [Release notes](https://github.com/eslint/eslint/releases) - [Commits](https://github.com/eslint/eslint/commits/v10.0.1/packages/js) Updates `eslint` from 9.39.4 to 10.2.0 - [Release notes](https://github.com/eslint/eslint/releases) - [Commits](https://github.com/eslint/eslint/compare/v9.39.4...v10.2.0) Updates `eslint-plugin-cypress` from 5.4.0 to 6.3.0 - [Release notes](https://github.com/cypress-io/eslint-plugin-cypress/releases) - [Commits](https://github.com/cypress-io/eslint-plugin-cypress/compare/v5.4.0...v6.3.0) Updates `typescript` from 5.9.3 to 6.0.2 - [Release notes](https://github.com/microsoft/TypeScript/releases) - [Commits](https://github.com/microsoft/TypeScript/compare/v5.9.3...v6.0.2) --- updated-dependencies: - dependency-name: "@mui/icons-material" dependency-version: 9.0.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: yarn-major - dependency-name: "@mui/material" dependency-version: 9.0.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: yarn-major - dependency-name: "@mui/material-nextjs" dependency-version: 9.0.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: yarn-major - dependency-name: "@mui/styled-engine" dependency-version: 9.0.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: yarn-major - dependency-name: "@mui/system" dependency-version: 9.0.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: yarn-major - dependency-name: "@mui/x-date-pickers" dependency-version: 9.0.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: yarn-major - dependency-name: "@mui/x-tree-view" dependency-version: 9.0.1 dependency-type: direct:production update-type: version-update:semver-major dependency-group: yarn-major - dependency-name: "@eslint/js" dependency-version: 10.0.1 dependency-type: direct:development update-type: version-update:semver-major dependency-group: yarn-major - dependency-name: eslint dependency-version: 10.2.0 dependency-type: direct:development update-type: version-update:semver-major dependency-group: yarn-major - dependency-name: eslint-plugin-cypress dependency-version: 6.3.0 dependency-type: direct:development update-type: version-update:semver-major dependency-group: yarn-major - dependency-name: typescript dependency-version: 6.0.2 dependency-type: direct:development update-type: version-update:semver-major dependency-group: yarn-major ... Signed-off-by: dependabot[bot] --- package.json | 22 +-- yarn.lock | 389 +++++++++++++++++++++++---------------------------- 2 files changed, 185 insertions(+), 226 deletions(-) diff --git a/package.json b/package.json index 907d6fdd..9b3340a9 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "node": "^24.13.0" }, "devDependencies": { - "@eslint/js": "^9.39.1", + "@eslint/js": "^10.0.1", "@jest/globals": "^30.2.0", "@next/eslint-plugin-next": "^16.2.3", "@swc/core": "^1.15.24", @@ -27,9 +27,9 @@ "cypress-junit-reporter": "^1.3.1", "cypress-split": "^1.24.31", "dotenv": "^17.4.1", - "eslint": "^9.39", + "eslint": "^10.2", "eslint-config-next": "16.2.3", - "eslint-plugin-cypress": "^5.2.1", + "eslint-plugin-cypress": "^6.3.1", "eslint-plugin-formatjs": "^6.4.4", "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^7.0.1", @@ -38,7 +38,7 @@ "prettier": "^3.8.2", "prisma": "^7.7.0", "ts-node": "^10.9.2", - "typescript": "~5.9", + "typescript": "~6.0", "typescript-eslint": "^8.58.1" }, "dependencies": { @@ -48,13 +48,13 @@ "@fontsource/noto-sans": "^5.2.10", "@fontsource/saira": "^5.2.10", "@influxdata/influxdb-client-browser": "^1.33.2", - "@mui/icons-material": "^7.3.7", - "@mui/material": "^7.3.7", - "@mui/material-nextjs": "^7.3.7", - "@mui/styled-engine": "^7.3.7", - "@mui/system": "^7.1.0", - "@mui/x-date-pickers": "^8.26.0", - "@mui/x-tree-view": "^8.10.2", + "@mui/icons-material": "^9.0.0", + "@mui/material": "^9.0.0", + "@mui/material-nextjs": "^9.0.0", + "@mui/styled-engine": "^9.0.0", + "@mui/system": "^9.0.0", + "@mui/x-date-pickers": "^9.0.2", + "@mui/x-tree-view": "^9.0.2", "@prisma/adapter-better-sqlite3": "^7.7.0", "@prisma/client": "^7.7.0", "@svgr/webpack": "^8.1.0", diff --git a/yarn.lock b/yarn.lock index a7a1bfb8..2d37ed46 100644 --- a/yarn.lock +++ b/yarn.lock @@ -984,10 +984,10 @@ "@babel/plugin-transform-modules-commonjs" "^7.27.1" "@babel/plugin-transform-typescript" "^7.28.5" -"@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.13", "@babel/runtime@^7.28.4", "@babel/runtime@^7.28.6", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.28.6.tgz#d267a43cb1836dc4d182cce93ae75ba954ef6d2b" - integrity sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA== +"@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.13", "@babel/runtime@^7.28.6", "@babel/runtime@^7.29.2", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7": + version "7.29.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.29.2.tgz#9a6e2d05f4b6692e1801cd4fb176ad823930ed5e" + integrity sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g== "@babel/template@^7.28.6": version "7.28.6" @@ -1019,13 +1019,13 @@ "@babel/helper-string-parser" "^7.27.1" "@babel/helper-validator-identifier" "^7.28.5" -"@base-ui/utils@^0.2.3": - version "0.2.5" - resolved "https://registry.yarnpkg.com/@base-ui/utils/-/utils-0.2.5.tgz#09ac6e73b7ff4a934c20b7541e654900b74d178a" - integrity sha512-oYC7w0gp76RI5MxprlGLV0wze0SErZaRl3AAkeP3OnNB/UBMb6RqNf6ZSIlxOc9Qp68Ab3C2VOcJQyRs7Xc7Vw== +"@base-ui/utils@^0.2.6": + version "0.2.7" + resolved "https://registry.yarnpkg.com/@base-ui/utils/-/utils-0.2.7.tgz#a7a57d08af6d02a905c0ca5e87b6dde85597046d" + integrity sha512-nXYKhiL/0JafyJE8PfcflipGftOftlIwKd72rU15iZ1M5yqgg5J9P8NHU71GReDuXco5MJA/eVQqUT5WRqX9sA== dependencies: - "@babel/runtime" "^7.28.6" - "@floating-ui/utils" "^0.2.10" + "@babel/runtime" "^7.29.2" + "@floating-ui/utils" "^0.2.11" reselect "^5.1.1" use-sync-external-store "^1.6.0" @@ -1390,68 +1390,53 @@ dependencies: eslint-visitor-keys "^3.4.3" -"@eslint-community/regexpp@^4.12.1", "@eslint-community/regexpp@^4.12.2": +"@eslint-community/regexpp@^4.12.2": version "4.12.2" resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.2.tgz#bccdf615bcf7b6e8db830ec0b8d21c9a25de597b" integrity sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew== -"@eslint/config-array@^0.21.2": - version "0.21.2" - resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.21.2.tgz#f29e22057ad5316cf23836cee9a34c81fffcb7e6" - integrity sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw== +"@eslint/config-array@^0.23.4": + version "0.23.5" + resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.23.5.tgz#56e86d243049195d8acc0c06a1b3dfdc3fa3de95" + integrity sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA== dependencies: - "@eslint/object-schema" "^2.1.7" + "@eslint/object-schema" "^3.0.5" debug "^4.3.1" - minimatch "^3.1.5" + minimatch "^10.2.4" -"@eslint/config-helpers@^0.4.2": - version "0.4.2" - resolved "https://registry.yarnpkg.com/@eslint/config-helpers/-/config-helpers-0.4.2.tgz#1bd006ceeb7e2e55b2b773ab318d300e1a66aeda" - integrity sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw== +"@eslint/config-helpers@^0.5.4": + version "0.5.5" + resolved "https://registry.yarnpkg.com/@eslint/config-helpers/-/config-helpers-0.5.5.tgz#ae16134e4792ac5fbdc533548a24ac1ea9f7f3ae" + integrity sha512-eIJYKTCECbP/nsKaaruF6LW967mtbQbsw4JTtSVkUQc9MneSkbrgPJAbKl9nWr0ZeowV8BfsarBmPpBzGelA2w== dependencies: - "@eslint/core" "^0.17.0" + "@eslint/core" "^1.2.1" -"@eslint/core@^0.17.0": - version "0.17.0" - resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.17.0.tgz#77225820413d9617509da9342190a2019e78761c" - integrity sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ== +"@eslint/core@^1.2.0", "@eslint/core@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@eslint/core/-/core-1.2.1.tgz#c1da7cd1b82fa8787f98b5629fb811848a1b63ce" + integrity sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ== dependencies: "@types/json-schema" "^7.0.15" -"@eslint/eslintrc@^3.3.5": - version "3.3.5" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.3.5.tgz#c131793cfc1a7b96f24a83e0a8bbd4b881558c60" - integrity sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg== - dependencies: - ajv "^6.14.0" - debug "^4.3.2" - espree "^10.0.1" - globals "^14.0.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.1" - minimatch "^3.1.5" - strip-json-comments "^3.1.1" +"@eslint/js@^10.0.1": + version "10.0.1" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-10.0.1.tgz#1e8a876f50117af8ab67e47d5ad94d38d6622583" + integrity sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA== -"@eslint/js@9.39.4", "@eslint/js@^9.39.1": - version "9.39.4" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.39.4.tgz#a3f83bfc6fd9bf33a853dfacd0b49b398eb596c1" - integrity sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw== - -"@eslint/object-schema@^2.1.7": - version "2.1.7" - resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.7.tgz#6e2126a1347e86a4dedf8706ec67ff8e107ebbad" - integrity sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA== +"@eslint/object-schema@^3.0.5": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-3.0.5.tgz#88e9bf4d11d2b19c082e78ebe7ce88724a5eb091" + integrity sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw== -"@eslint/plugin-kit@^0.4.1": - version "0.4.1" - resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz#9779e3fd9b7ee33571a57435cf4335a1794a6cb2" - integrity sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA== +"@eslint/plugin-kit@^0.7.0": + version "0.7.1" + resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.7.1.tgz#c4125fd015eceeb09b793109fdbcd4dd0a02d346" + integrity sha512-rZAP3aVgB9ds9KOeUSL+zZ21hPmo8dh6fnIFwRQj5EAZl9gzR7wxYbYXYysAM8CTqGmUGyp2S4kUdV17MnGuWQ== dependencies: - "@eslint/core" "^0.17.0" + "@eslint/core" "^1.2.1" levn "^0.4.1" -"@floating-ui/utils@^0.2.10": +"@floating-ui/utils@^0.2.11": version "0.2.11" resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.11.tgz#a269e055e40e2f45873bae9d1a2fdccbd314ea3f" integrity sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg== @@ -2052,129 +2037,129 @@ resolved "https://registry.yarnpkg.com/@kurkle/color/-/color-0.3.4.tgz#4d4ff677e1609214fc71c580125ddddd86abcabf" integrity sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w== -"@mui/core-downloads-tracker@^7.3.9": - version "7.3.9" - resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-7.3.9.tgz#d944e385f8f7f5e680e5ba479b39ff8602bd4939" - integrity sha512-MOkOCTfbMJwLshlBCKJ59V2F/uaLYfmKnN76kksj6jlGUVdI25A9Hzs08m+zjBRdLv+sK7Rqdsefe8X7h/6PCw== +"@mui/core-downloads-tracker@^9.0.0": + version "9.0.0" + resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-9.0.0.tgz#b2df0488117bc892d08715de7857fc7d8637dfc0" + integrity sha512-uwQNGkhv0lf7ufxw6QXev77BW6pWbW+7uxYjU5+rfp4lBkFtMEgJCsarTM3Tn+i0lGx6+Ol2u88JdGXr0GDskA== -"@mui/icons-material@^7.3.7": - version "7.3.9" - resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-7.3.9.tgz#4f6dc62bfe8954f3848b0eecb3650cff10f6a7ec" - integrity sha512-BT+zPJXss8Hg/oEMRmHl17Q97bPACG4ufFSfGEdhiE96jOyR5Dz1ty7ZWt1fVGR0y1p+sSgEwQT/MNZQmoWDCw== +"@mui/icons-material@^9.0.0": + version "9.0.0" + resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-9.0.0.tgz#85fb0c59b12e745792c3c6c598bf0550e98968e8" + integrity sha512-oDwyvI6LgjWRC9MBcSGvLkPud9S9ELgSBQFYxa1rYcZn6Br55dn22SyvsPDMsn0G8OndFk53iMT45W5mNqrogw== dependencies: - "@babel/runtime" "^7.28.6" + "@babel/runtime" "^7.29.2" -"@mui/material-nextjs@^7.3.7": - version "7.3.9" - resolved "https://registry.yarnpkg.com/@mui/material-nextjs/-/material-nextjs-7.3.9.tgz#0e3efd5342ab8788481eb4f3f4cd8a4746e2d958" - integrity sha512-ahCIvEhRnX4/xznSr/bn6cLzPppcLohfVc65k7AFAIDazWMGo9yVCCSdL7fqvwluDTZiIyqnweb30xOZMTeyRg== +"@mui/material-nextjs@^9.0.0": + version "9.0.0" + resolved "https://registry.yarnpkg.com/@mui/material-nextjs/-/material-nextjs-9.0.0.tgz#f9952db1177841c0fc7d293a44e5100634057fc4" + integrity sha512-HBVg7zkKh9isbENwmWnJAKmUVH+h18ZYqX8HJIDMTejXzs1+3qmZE3z1KpQFnYRDanq7dwOlWWUfQq6z5sXtng== dependencies: - "@babel/runtime" "^7.28.6" + "@babel/runtime" "^7.29.2" -"@mui/material@^7.3.7": - version "7.3.9" - resolved "https://registry.yarnpkg.com/@mui/material/-/material-7.3.9.tgz#b3bf698b4b82ad630422df55f3d5f4e44a7bad11" - integrity sha512-I8yO3t4T0y7bvDiR1qhIN6iBWZOTBfVOnmLlM7K6h3dx5YX2a7rnkuXzc2UkZaqhxY9NgTnEbdPlokR1RxCNRQ== +"@mui/material@^9.0.0": + version "9.0.0" + resolved "https://registry.yarnpkg.com/@mui/material/-/material-9.0.0.tgz#30d19aa0ccf3b1868179870ced72d720e347a95a" + integrity sha512-+VP/oQCDhDR87NQQgXnNBG8dwy6GNuQLnenS1pZvkbn2dKFSxRSRMybTpH9xUxXP+316mlYDy5CSbYtusnCWtw== dependencies: - "@babel/runtime" "^7.28.6" - "@mui/core-downloads-tracker" "^7.3.9" - "@mui/system" "^7.3.9" - "@mui/types" "^7.4.12" - "@mui/utils" "^7.3.9" + "@babel/runtime" "^7.29.2" + "@mui/core-downloads-tracker" "^9.0.0" + "@mui/system" "^9.0.0" + "@mui/types" "^9.0.0" + "@mui/utils" "^9.0.0" "@popperjs/core" "^2.11.8" "@types/react-transition-group" "^4.4.12" clsx "^2.1.1" csstype "^3.2.3" prop-types "^15.8.1" - react-is "^19.2.3" + react-is "^19.2.4" react-transition-group "^4.4.5" -"@mui/private-theming@^7.3.9": - version "7.3.9" - resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-7.3.9.tgz#c785dc429b7ed62cf3952140be703cbe95704a13" - integrity sha512-ErIyRQvsiQEq7Yvcvfw9UDHngaqjMy9P3JDPnRAaKG5qhpl2C4tX/W1S4zJvpu+feihmZJStjIyvnv6KDbIrlw== +"@mui/private-theming@^9.0.0": + version "9.0.0" + resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-9.0.0.tgz#2617a4fa2045e0644429556afebe87aeaa0ea966" + integrity sha512-JtuZoaiCqwD6vjgYu6Xp3T7DZkrxJlgtDz5yESzhI34fEX5hHMh2VJUbuL9UOg8xrfIFMrq6dcYoH/7Zi4G0RA== dependencies: - "@babel/runtime" "^7.28.6" - "@mui/utils" "^7.3.9" + "@babel/runtime" "^7.29.2" + "@mui/utils" "^9.0.0" prop-types "^15.8.1" -"@mui/styled-engine@^7.3.7", "@mui/styled-engine@^7.3.9": - version "7.3.9" - resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-7.3.9.tgz#e425ca7b5cb559bde01b8fa4a7a842e9b5916f53" - integrity sha512-JqujWt5bX4okjUPGpVof/7pvgClqh7HvIbsIBIOOlCh2u3wG/Bwp4+E1bc1dXSwkrkp9WUAoNdI5HEC+5HKvMw== +"@mui/styled-engine@^9.0.0": + version "9.0.0" + resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-9.0.0.tgz#ab7b1c25c0193a796ced29da3662191d53ae339b" + integrity sha512-9RLGdX4Jg0aQPRuvqh/OLzYSPlgd5zyEw5/1HIRfdavSiOd03WtUaGZH9/w1RoTYuRKwpgy0hpIFaMHIqPVIWg== dependencies: - "@babel/runtime" "^7.28.6" + "@babel/runtime" "^7.29.2" "@emotion/cache" "^11.14.0" "@emotion/serialize" "^1.3.3" "@emotion/sheet" "^1.4.0" csstype "^3.2.3" prop-types "^15.8.1" -"@mui/system@^7.1.0", "@mui/system@^7.3.9": - version "7.3.9" - resolved "https://registry.yarnpkg.com/@mui/system/-/system-7.3.9.tgz#d8181dd9ad8c5e9afdf50eb7009062c506976ab1" - integrity sha512-aL1q9am8XpRrSabv9qWf5RHhJICJql34wnrc1nz0MuOglPRYF/liN+c8VqZdTvUn9qg+ZjRVbKf4sJVFfIDtmg== +"@mui/system@^9.0.0": + version "9.0.0" + resolved "https://registry.yarnpkg.com/@mui/system/-/system-9.0.0.tgz#a95509127a7df264692105abebaf5a4a965401d5" + integrity sha512-YnC5Zg6j04IxiLc/boAKs0464jfZlLFVa7mf5E8lF0XOtZVUvG6R6gJK50lgUYdaaLdyLfxF6xR7LaPuEpeT/g== dependencies: - "@babel/runtime" "^7.28.6" - "@mui/private-theming" "^7.3.9" - "@mui/styled-engine" "^7.3.9" - "@mui/types" "^7.4.12" - "@mui/utils" "^7.3.9" + "@babel/runtime" "^7.29.2" + "@mui/private-theming" "^9.0.0" + "@mui/styled-engine" "^9.0.0" + "@mui/types" "^9.0.0" + "@mui/utils" "^9.0.0" clsx "^2.1.1" csstype "^3.2.3" prop-types "^15.8.1" -"@mui/types@^7.4.12": - version "7.4.12" - resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.4.12.tgz#e4eba37a7506419ea5c5e0604322ba82b271bf46" - integrity sha512-iKNAF2u9PzSIj40CjvKJWxFXJo122jXVdrmdh0hMYd+FR+NuJMkr/L88XwWLCRiJ5P1j+uyac25+Kp6YC4hu6w== +"@mui/types@^9.0.0": + version "9.0.0" + resolved "https://registry.yarnpkg.com/@mui/types/-/types-9.0.0.tgz#92d8c64e72cb863ee59108cb20cc476d648a3ab9" + integrity sha512-i1cuFCAWN44b3AJWO7mh7tuh1sqbQSeVr/94oG0TX5uXivac8XalgE4/6fQZcmGZigzbQ35IXxj/4jLpRIBYZg== dependencies: - "@babel/runtime" "^7.28.6" + "@babel/runtime" "^7.29.2" -"@mui/utils@^7.3.5", "@mui/utils@^7.3.9": - version "7.3.9" - resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-7.3.9.tgz#8af5093fc93c2e582fa3d047f561c7b690509bc2" - integrity sha512-U6SdZaGbfb65fqTsH3V5oJdFj9uYwyLE2WVuNvmbggTSDBb8QHrFsqY8BN3taK9t3yJ8/BPHD/kNvLNyjwM7Yw== +"@mui/utils@9.0.0", "@mui/utils@^9.0.0": + version "9.0.0" + resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-9.0.0.tgz#25b563ccbf537feba5f89c37a00cb8e6eea45ad0" + integrity sha512-bQcqyg/gjULUqTuyUjSAFr6LQGLvtkNtDbJerAtoUn9kGZ0hg5QJiN1PLHMLbeFpe3te1831uq7GFl2ITokGdg== dependencies: - "@babel/runtime" "^7.28.6" - "@mui/types" "^7.4.12" + "@babel/runtime" "^7.29.2" + "@mui/types" "^9.0.0" "@types/prop-types" "^15.7.15" clsx "^2.1.1" prop-types "^15.8.1" - react-is "^19.2.3" + react-is "^19.2.4" -"@mui/x-date-pickers@^8.26.0": - version "8.27.2" - resolved "https://registry.yarnpkg.com/@mui/x-date-pickers/-/x-date-pickers-8.27.2.tgz#5ada1fb3adffff3e0fd0fee7702fba7f770dca68" - integrity sha512-06LFkHFRXJ2O9DMXtWAA3kY0jpbL7XH8iqa8L5cBlN+8bRx/UVLKlZYlhGv06C88jF9kuZWY1bUgrv/EoY/2Ww== +"@mui/x-date-pickers@^9.0.2": + version "9.0.2" + resolved "https://registry.yarnpkg.com/@mui/x-date-pickers/-/x-date-pickers-9.0.2.tgz#ac601e4655ce3017185d652f9f91a2914bb6e63a" + integrity sha512-rnyc2wFPnprTS5i8Lq9aX2Rlx+ZRvNZERTd7sPMErf/8HnMCYzxwErITbd+TuImlvo2vaLF1gNynqT8AJMusYw== dependencies: - "@babel/runtime" "^7.28.4" - "@mui/utils" "^7.3.5" - "@mui/x-internals" "8.26.0" + "@babel/runtime" "^7.28.6" + "@mui/utils" "9.0.0" + "@mui/x-internals" "^9.0.0" "@types/react-transition-group" "^4.4.12" clsx "^2.1.1" prop-types "^15.8.1" react-transition-group "^4.4.5" -"@mui/x-internals@8.26.0": - version "8.26.0" - resolved "https://registry.yarnpkg.com/@mui/x-internals/-/x-internals-8.26.0.tgz#49caacac954c29a1b10425c67418310ceb9c8cfa" - integrity sha512-B9OZau5IQUvIxwpJZhoFJKqRpmWf5r0yMmSXjQuqb5WuqM755EuzWJOenY48denGoENzMLT8hQpA0hRTeU2IPA== +"@mui/x-internals@^9.0.0": + version "9.0.0" + resolved "https://registry.yarnpkg.com/@mui/x-internals/-/x-internals-9.0.0.tgz#8851a058e09b719690b4f398319805239e923855" + integrity sha512-E/4rdg69JjhyybpPGypCjAKSKLLnSdCFM+O6P/nkUg47+qt3uftxQEhjQO53rcn6ahHl6du/uNZ9BLgeY6kYxQ== dependencies: - "@babel/runtime" "^7.28.4" - "@mui/utils" "^7.3.5" + "@babel/runtime" "^7.28.6" + "@mui/utils" "9.0.0" reselect "^5.1.1" use-sync-external-store "^1.6.0" -"@mui/x-tree-view@^8.10.2": - version "8.27.2" - resolved "https://registry.yarnpkg.com/@mui/x-tree-view/-/x-tree-view-8.27.2.tgz#8f4dccd505cfbda5721d33a99655d0c865f638a1" - integrity sha512-gceKjUEqKHBVt5BV0Yscx2NKgbI9z6IgEx3BHToeAupNCIZ7kAlnZUtk+FyIIcN+Vr6CFz5J0zxjnPgfHjbj2A== +"@mui/x-tree-view@^9.0.2": + version "9.0.2" + resolved "https://registry.yarnpkg.com/@mui/x-tree-view/-/x-tree-view-9.0.2.tgz#1764b1d0979d044d94f525edd22945c2c82f8fa2" + integrity sha512-7Af7PLJDIYjRXwZ96xI8ge02R/h/eRCsnZXoxhD6rk5t4NnpeNmoRCNBR+wj3WHSzek1hNtXfJ14+CjbbLkQCQ== dependencies: - "@babel/runtime" "^7.28.4" - "@base-ui/utils" "^0.2.3" - "@mui/utils" "^7.3.5" - "@mui/x-internals" "8.26.0" + "@babel/runtime" "^7.28.6" + "@base-ui/utils" "^0.2.6" + "@mui/utils" "9.0.0" + "@mui/x-internals" "^9.0.0" "@types/react-transition-group" "^4.4.12" clsx "^2.1.1" prop-types "^15.8.1" @@ -2990,7 +2975,12 @@ resolved "https://registry.yarnpkg.com/@types/d3-timer/-/d3-timer-3.0.2.tgz#70bbda77dc23aa727413e22e214afa3f0e852f70" integrity sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw== -"@types/estree@^1.0.6": +"@types/esrecurse@^4.3.1": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@types/esrecurse/-/esrecurse-4.3.1.tgz#6f636af962fbe6191b830bd676ba5986926bccec" + integrity sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw== + +"@types/estree@^1.0.6", "@types/estree@^1.0.8": version "1.0.8" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== @@ -3434,7 +3424,7 @@ acorn-walk@^8.1.1, acorn-walk@^8.2.0: dependencies: acorn "^8.11.0" -acorn@^8.11.0, acorn@^8.15.0, acorn@^8.4.1: +acorn@^8.11.0, acorn@^8.16.0, acorn@^8.4.1: version "8.16.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.16.0.tgz#4ce79c89be40afe7afe8f3adb902a1f1ce9ac08a" integrity sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw== @@ -3922,13 +3912,6 @@ brace-expansion@^2.0.2: dependencies: balanced-match "^1.0.0" -brace-expansion@^5.0.2: - version "5.0.4" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-5.0.4.tgz#614daaecd0a688f660bbbc909a8748c3d80d4336" - integrity sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg== - dependencies: - balanced-match "^4.0.2" - brace-expansion@^5.0.5: version "5.0.5" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-5.0.5.tgz#dcc3a37116b79f3e1b46db994ced5d570e930fdb" @@ -4066,7 +4049,7 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== -chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: +chalk@^4.1.0, chalk@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -5291,12 +5274,12 @@ eslint-module-utils@^2.12.1: dependencies: debug "^3.2.7" -eslint-plugin-cypress@^5.2.1: - version "5.4.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-cypress/-/eslint-plugin-cypress-5.4.0.tgz#548ec5e249ee3078f8859b74e295e65e7159cf43" - integrity sha512-XAQYuzMpLWJdFRQorPO3GDx4XHqI362qr1/XIp0N6SNTAa8lyzmpTA26qNRc99I53NnqX9l0SHwbHXX7TAKIkg== +eslint-plugin-cypress@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-cypress/-/eslint-plugin-cypress-6.3.1.tgz#b0a4ce9073f39412c3f2b5b8b452a75c1885fec1" + integrity sha512-iTJtdIZbyCUlagEI4YlVcwgPFV7X379Qi/upujaD4kvOaQkMvzmpt90vfSnaqgqprp/HPIvhnzv3fdI7mYV4QQ== dependencies: - globals "^17.3.0" + globals "^17.5.0" eslint-plugin-formatjs@^6.4.4: version "6.4.4" @@ -5391,11 +5374,13 @@ eslint-plugin-react@^7.37.0, eslint-plugin-react@^7.37.5: string.prototype.matchall "^4.0.12" string.prototype.repeat "^1.0.0" -eslint-scope@^8.4.0: - version "8.4.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.4.0.tgz#88e646a207fad61436ffa39eb505147200655c82" - integrity sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg== +eslint-scope@^9.1.2: + version "9.1.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-9.1.2.tgz#b9de6ace2fab1cff24d2e58d85b74c8fcea39802" + integrity sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ== dependencies: + "@types/esrecurse" "^4.3.1" + "@types/estree" "^1.0.8" esrecurse "^4.3.0" estraverse "^5.2.0" @@ -5404,42 +5389,34 @@ eslint-visitor-keys@^3.4.3: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== -eslint-visitor-keys@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz#4cfea60fe7dd0ad8e816e1ed026c1d5251b512c1" - integrity sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ== - -eslint-visitor-keys@^5.0.0: +eslint-visitor-keys@^5.0.0, eslint-visitor-keys@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz#9e3c9489697824d2d4ce3a8ad12628f91e9f59be" integrity sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA== -eslint@^9.39: - version "9.39.4" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.39.4.tgz#855da1b2e2ad66dc5991195f35e262bcec8117b5" - integrity sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ== +eslint@^10.2: + version "10.2.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-10.2.0.tgz#711c80d32fc3fdd3a575bb93977df43887c3ec8e" + integrity sha512-+L0vBFYGIpSNIt/KWTpFonPrqYvgKw1eUI5Vn7mEogrQcWtWYtNQ7dNqC+px/J0idT3BAkiWrhfS7k+Tum8TUA== dependencies: "@eslint-community/eslint-utils" "^4.8.0" - "@eslint-community/regexpp" "^4.12.1" - "@eslint/config-array" "^0.21.2" - "@eslint/config-helpers" "^0.4.2" - "@eslint/core" "^0.17.0" - "@eslint/eslintrc" "^3.3.5" - "@eslint/js" "9.39.4" - "@eslint/plugin-kit" "^0.4.1" + "@eslint-community/regexpp" "^4.12.2" + "@eslint/config-array" "^0.23.4" + "@eslint/config-helpers" "^0.5.4" + "@eslint/core" "^1.2.0" + "@eslint/plugin-kit" "^0.7.0" "@humanfs/node" "^0.16.6" "@humanwhocodes/module-importer" "^1.0.1" "@humanwhocodes/retry" "^0.4.2" "@types/estree" "^1.0.6" ajv "^6.14.0" - chalk "^4.0.0" cross-spawn "^7.0.6" debug "^4.3.2" escape-string-regexp "^4.0.0" - eslint-scope "^8.4.0" - eslint-visitor-keys "^4.2.1" - espree "^10.4.0" - esquery "^1.5.0" + eslint-scope "^9.1.2" + eslint-visitor-keys "^5.0.1" + espree "^11.2.0" + esquery "^1.7.0" esutils "^2.0.2" fast-deep-equal "^3.1.3" file-entry-cache "^8.0.0" @@ -5449,26 +5426,25 @@ eslint@^9.39: imurmurhash "^0.1.4" is-glob "^4.0.0" json-stable-stringify-without-jsonify "^1.0.1" - lodash.merge "^4.6.2" - minimatch "^3.1.5" + minimatch "^10.2.4" natural-compare "^1.4.0" optionator "^0.9.3" -espree@^10.0.1, espree@^10.4.0: - version "10.4.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-10.4.0.tgz#d54f4949d4629005a1fa168d937c3ff1f7e2a837" - integrity sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ== +espree@^11.2.0: + version "11.2.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-11.2.0.tgz#01d5e47dc332aaba3059008362454a8cc34ccaa5" + integrity sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw== dependencies: - acorn "^8.15.0" + acorn "^8.16.0" acorn-jsx "^5.3.2" - eslint-visitor-keys "^4.2.1" + eslint-visitor-keys "^5.0.1" esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.5.0: +esquery@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.7.0.tgz#08d048f261f0ddedb5bae95f46809463d9c9496d" integrity sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g== @@ -6064,15 +6040,10 @@ globals@16.4.0: resolved "https://registry.yarnpkg.com/globals/-/globals-16.4.0.tgz#574bc7e72993d40cf27cf6c241f324ee77808e51" integrity sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw== -globals@^14.0.0: - version "14.0.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" - integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== - -globals@^17.3.0: - version "17.4.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-17.4.0.tgz#33d7d297ed1536b388a0e2f4bcd0ff19c8ff91b5" - integrity sha512-hjrNztw/VajQwOLsMNT1cbJiH2muO3OROCHnbehc8eY5JyD2gqz4AcMHPqgaOR59DjgUjYAYLeH699g/eWi2jw== +globals@^17.5.0: + version "17.5.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-17.5.0.tgz#a82c641d898f8dfbe0e81f66fdff7d0de43f88c6" + integrity sha512-qoV+HK2yFl/366t2/Cb3+xxPUo5BuMynomoDmiaZBIdbs+0pYbjfZU+twLhGKp4uCZ/+NbtpVepH5bGCxRyy2g== globalthis@^1.0.4: version "1.0.4" @@ -7123,7 +7094,7 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" -js-yaml@^4.1.0, js-yaml@^4.1.1: +js-yaml@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.1.tgz#854c292467705b699476e1a2decc0c8a3458806b" integrity sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA== @@ -7406,11 +7377,6 @@ lodash.isstring@^4.0.1: resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" integrity sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw== -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - lodash.once@^4.0.0, lodash.once@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" @@ -7587,21 +7553,14 @@ min-indent@^1.0.0: resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== -minimatch@^10.2.2: - version "10.2.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.2.4.tgz#465b3accbd0218b8281f5301e27cedc697f96fde" - integrity sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg== - dependencies: - brace-expansion "^5.0.2" - -minimatch@^10.2.4: +minimatch@^10.2.2, minimatch@^10.2.4: version "10.2.5" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.2.5.tgz#bd48687a0be38ed2961399105600f832095861d1" integrity sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg== dependencies: brace-expansion "^5.0.5" -minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2, minimatch@^3.1.5: +minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.5" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.5.tgz#580c88f8d5445f2bd6aa8f3cadefa0de79fbd69e" integrity sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w== @@ -8578,10 +8537,10 @@ react-is@^18.3.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== -react-is@^19.2.3: - version "19.2.4" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-19.2.4.tgz#a080758243c572ccd4a63386537654298c99d135" - integrity sha512-W+EWGn2v0ApPKgKKCy/7s7WHXkboGcsrXE+2joLyVxkbyVQfO3MUEaUQDHoSmb8TFFrSKYa9mw64WZHNHSDzYA== +react-is@^19.2.4: + version "19.2.5" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-19.2.5.tgz#7e7b54143e9313fed787b23fd4295d5a23872ad9" + integrity sha512-Dn0t8IQhCmeIT3wu+Apm1/YVsJXsGWi6k4sPdnBIdqMVtHtv0IGi6dcpNpNkNac0zB2uUAqNX3MHzN8c+z2rwQ== "react-redux@8.x.x || 9.x.x": version "9.2.0" @@ -9781,12 +9740,12 @@ typescript-eslint@^8.46.0, typescript-eslint@^8.58.1: "@typescript-eslint/typescript-estree" "8.58.1" "@typescript-eslint/utils" "8.58.1" -"typescript@^5.6 || 6": - version "6.0.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-6.0.2.tgz#0b1bfb15f68c64b97032f3d78abbf98bdbba501f" - integrity sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ== +"typescript@^5.6 || 6", typescript@~6.0: + version "6.0.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-6.0.3.tgz#90251dc007916e972786cb94d74d15b185577d21" + integrity sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw== -typescript@^5.7.3, typescript@^5.9.3, typescript@~5.9: +typescript@^5.7.3, typescript@^5.9.3: version "5.9.3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.9.3.tgz#5b4f59e15310ab17a216f5d6cf53ee476ede670f" integrity sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw== From 45cfa4fdbdea87d81e94aa3ebb514d5c6e9dabb5 Mon Sep 17 00:00:00 2001 From: Luis Schweinberger Date: Fri, 8 May 2026 15:47:27 +0200 Subject: [PATCH 2/6] chore: update mui icon imports from Outline to Outlined variants for mui v9 --- .../target-information/WildcardOrStringArrayInput.tsx | 4 ++-- .../edit-components/file/FileEditComponent.tsx | 6 +++--- .../mapping-info/MappingInfoEditComponent.tsx | 6 +++--- .../edit-components/multi-lang/MultiLangEditComponent.tsx | 6 +++--- .../multiplicity/MultiplicityEditComponent.tsx | 6 +++--- .../edit-components/property/PropertyEditComponent.tsx | 6 +++--- 6 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/app/[locale]/settings/_components/role-settings/target-information/WildcardOrStringArrayInput.tsx b/src/app/[locale]/settings/_components/role-settings/target-information/WildcardOrStringArrayInput.tsx index 15dd2d36..055ca3ae 100644 --- a/src/app/[locale]/settings/_components/role-settings/target-information/WildcardOrStringArrayInput.tsx +++ b/src/app/[locale]/settings/_components/role-settings/target-information/WildcardOrStringArrayInput.tsx @@ -1,7 +1,7 @@ import { useState } from 'react'; import { Box, Button, Checkbox, FormControlLabel, IconButton, TextField, Typography } from '@mui/material'; import ControlPointIcon from '@mui/icons-material/ControlPoint'; -import RemoveCircleOutlineIcon from '@mui/icons-material/RemoveCircleOutline'; +import RemoveCircleOutlinedIcon from '@mui/icons-material/RemoveCircleOutlined'; import { Control, Controller, useFieldArray, UseFormGetValues, UseFormSetValue } from 'react-hook-form'; import { useTranslations } from 'next-intl'; import { RuleFormModel } from 'app/[locale]/settings/_components/role-settings/RuleForm'; @@ -74,7 +74,7 @@ export const WildcardOrStringArrayInput = (props: WildcardOrStringArrayInputProp /> - { if (idx === 0) { diff --git a/src/app/[locale]/templates/_components/blueprint-edit/edit-components/file/FileEditComponent.tsx b/src/app/[locale]/templates/_components/blueprint-edit/edit-components/file/FileEditComponent.tsx index 561614a8..4cc7dcf0 100644 --- a/src/app/[locale]/templates/_components/blueprint-edit/edit-components/file/FileEditComponent.tsx +++ b/src/app/[locale]/templates/_components/blueprint-edit/edit-components/file/FileEditComponent.tsx @@ -1,4 +1,4 @@ -import { AddCircleOutline, RemoveCircleOutline } from '@mui/icons-material'; +import { AddCircleOutlined, RemoveCircleOutlined } from '@mui/icons-material'; import { Button, FormControl, InputLabel, MenuItem, Select, TextField } from '@mui/material'; import React from 'react'; import { BlueprintEditSectionHeading } from 'app/[locale]/templates/_components/blueprint-edit/BlueprintEditSectionHeading'; @@ -62,12 +62,12 @@ export function FileEditComponent(props: FileEditComponentProps) { onChange={(e) => onTextChange(e)} fullWidth /> - ) : ( - )} diff --git a/src/app/[locale]/templates/_components/blueprint-edit/edit-components/mapping-info/MappingInfoEditComponent.tsx b/src/app/[locale]/templates/_components/blueprint-edit/edit-components/mapping-info/MappingInfoEditComponent.tsx index 32181b08..b3bb2e1a 100644 --- a/src/app/[locale]/templates/_components/blueprint-edit/edit-components/mapping-info/MappingInfoEditComponent.tsx +++ b/src/app/[locale]/templates/_components/blueprint-edit/edit-components/mapping-info/MappingInfoEditComponent.tsx @@ -1,4 +1,4 @@ -import { AddCircleOutline, RemoveCircleOutline } from '@mui/icons-material'; +import { AddCircleOutlined, RemoveCircleOutlined } from '@mui/icons-material'; import { Box, Button, IconButton, TextField } from '@mui/material'; import { BlueprintEditSectionHeading } from 'app/[locale]/templates/_components/blueprint-edit/BlueprintEditSectionHeading'; import { Qualifier, Submodel, SubmodelElementChoice } from 'lib/api/aas/models'; @@ -72,11 +72,11 @@ export function MappingInfoEditComponent(props: MappingInfoEditComponentProps) { fullWidth /> - + ) : ( - )} diff --git a/src/app/[locale]/templates/_components/blueprint-edit/edit-components/multi-lang/MultiLangEditComponent.tsx b/src/app/[locale]/templates/_components/blueprint-edit/edit-components/multi-lang/MultiLangEditComponent.tsx index 73133156..6e40c944 100644 --- a/src/app/[locale]/templates/_components/blueprint-edit/edit-components/multi-lang/MultiLangEditComponent.tsx +++ b/src/app/[locale]/templates/_components/blueprint-edit/edit-components/multi-lang/MultiLangEditComponent.tsx @@ -1,4 +1,4 @@ -import { AddCircleOutline, RemoveCircleOutline } from '@mui/icons-material'; +import { AddCircleOutlined, RemoveCircleOutlined } from '@mui/icons-material'; import { Autocomplete, Box, Button, IconButton, TextField } from '@mui/material'; import { BlueprintEditSectionHeading } from 'app/[locale]/templates/_components/blueprint-edit/BlueprintEditSectionHeading'; import options from './language-suggestions.json'; @@ -67,11 +67,11 @@ export function MultiLangEditComponent(props: MultiLangEditComponentProps) { fullWidth /> onRemove(i)}> - + ))} - diff --git a/src/app/[locale]/templates/_components/blueprint-edit/edit-components/multiplicity/MultiplicityEditComponent.tsx b/src/app/[locale]/templates/_components/blueprint-edit/edit-components/multiplicity/MultiplicityEditComponent.tsx index f6205c21..4d9e8925 100644 --- a/src/app/[locale]/templates/_components/blueprint-edit/edit-components/multiplicity/MultiplicityEditComponent.tsx +++ b/src/app/[locale]/templates/_components/blueprint-edit/edit-components/multiplicity/MultiplicityEditComponent.tsx @@ -1,4 +1,4 @@ -import { AddCircleOutline, RemoveCircleOutline } from '@mui/icons-material'; +import { AddCircleOutlined, RemoveCircleOutlined } from '@mui/icons-material'; import { Box, Button, FormControl, IconButton, InputLabel, MenuItem, Select } from '@mui/material'; import { useState } from 'react'; import { BlueprintEditSectionHeading } from 'app/[locale]/templates/_components/blueprint-edit/BlueprintEditSectionHeading'; @@ -105,7 +105,7 @@ export function MultiplicityEditComponent(props: MultiplicityEditComponentProps) onRemove()} sx={{ alignSelf: 'center', ml: 1 }}> - + ) : ( @@ -115,7 +115,7 @@ export function MultiplicityEditComponent(props: MultiplicityEditComponentProps) ) : ( )} From 89f63c6192e79e309a97c65883fe42040e5cac4b Mon Sep 17 00:00:00 2001 From: Moritz Hofer Date: Fri, 15 May 2026 16:14:12 +0200 Subject: [PATCH 3/6] Undo MUI change and fix linting errors --- package.json | 14 +- .../WildcardOrStringArrayInput.tsx | 4 +- .../file/FileEditComponent.tsx | 6 +- .../mapping-info/MappingInfoEditComponent.tsx | 6 +- .../multi-lang/MultiLangEditComponent.tsx | 6 +- .../MultiplicityEditComponent.tsx | 6 +- .../property/PropertyEditComponent.tsx | 6 +- .../HierarchicalStructuresDetail.tsx | 6 +- src/lib/api/serverFetch.ts | 2 +- src/lib/hooks/UseAasDataLoader.ts | 10 +- src/lib/services/list-service/ListService.ts | 2 +- tsconfig.json | 9 +- yarn.lock | 172 +++++++++--------- 13 files changed, 123 insertions(+), 126 deletions(-) diff --git a/package.json b/package.json index 9b3340a9..61802bc8 100644 --- a/package.json +++ b/package.json @@ -48,13 +48,13 @@ "@fontsource/noto-sans": "^5.2.10", "@fontsource/saira": "^5.2.10", "@influxdata/influxdb-client-browser": "^1.33.2", - "@mui/icons-material": "^9.0.0", - "@mui/material": "^9.0.0", - "@mui/material-nextjs": "^9.0.0", - "@mui/styled-engine": "^9.0.0", - "@mui/system": "^9.0.0", - "@mui/x-date-pickers": "^9.0.2", - "@mui/x-tree-view": "^9.0.2", + "@mui/icons-material": "^7.3.7", + "@mui/material": "^7.3.7", + "@mui/material-nextjs": "^7.3.7", + "@mui/styled-engine": "^7.3.7", + "@mui/system": "^7.1.0", + "@mui/x-date-pickers": "^8.26.0", + "@mui/x-tree-view": "^8.10.2", "@prisma/adapter-better-sqlite3": "^7.7.0", "@prisma/client": "^7.7.0", "@svgr/webpack": "^8.1.0", diff --git a/src/app/[locale]/settings/_components/role-settings/target-information/WildcardOrStringArrayInput.tsx b/src/app/[locale]/settings/_components/role-settings/target-information/WildcardOrStringArrayInput.tsx index 055ca3ae..15dd2d36 100644 --- a/src/app/[locale]/settings/_components/role-settings/target-information/WildcardOrStringArrayInput.tsx +++ b/src/app/[locale]/settings/_components/role-settings/target-information/WildcardOrStringArrayInput.tsx @@ -1,7 +1,7 @@ import { useState } from 'react'; import { Box, Button, Checkbox, FormControlLabel, IconButton, TextField, Typography } from '@mui/material'; import ControlPointIcon from '@mui/icons-material/ControlPoint'; -import RemoveCircleOutlinedIcon from '@mui/icons-material/RemoveCircleOutlined'; +import RemoveCircleOutlineIcon from '@mui/icons-material/RemoveCircleOutline'; import { Control, Controller, useFieldArray, UseFormGetValues, UseFormSetValue } from 'react-hook-form'; import { useTranslations } from 'next-intl'; import { RuleFormModel } from 'app/[locale]/settings/_components/role-settings/RuleForm'; @@ -74,7 +74,7 @@ export const WildcardOrStringArrayInput = (props: WildcardOrStringArrayInputProp /> - { if (idx === 0) { diff --git a/src/app/[locale]/templates/_components/blueprint-edit/edit-components/file/FileEditComponent.tsx b/src/app/[locale]/templates/_components/blueprint-edit/edit-components/file/FileEditComponent.tsx index 4cc7dcf0..561614a8 100644 --- a/src/app/[locale]/templates/_components/blueprint-edit/edit-components/file/FileEditComponent.tsx +++ b/src/app/[locale]/templates/_components/blueprint-edit/edit-components/file/FileEditComponent.tsx @@ -1,4 +1,4 @@ -import { AddCircleOutlined, RemoveCircleOutlined } from '@mui/icons-material'; +import { AddCircleOutline, RemoveCircleOutline } from '@mui/icons-material'; import { Button, FormControl, InputLabel, MenuItem, Select, TextField } from '@mui/material'; import React from 'react'; import { BlueprintEditSectionHeading } from 'app/[locale]/templates/_components/blueprint-edit/BlueprintEditSectionHeading'; @@ -62,12 +62,12 @@ export function FileEditComponent(props: FileEditComponentProps) { onChange={(e) => onTextChange(e)} fullWidth /> - ) : ( - )} diff --git a/src/app/[locale]/templates/_components/blueprint-edit/edit-components/mapping-info/MappingInfoEditComponent.tsx b/src/app/[locale]/templates/_components/blueprint-edit/edit-components/mapping-info/MappingInfoEditComponent.tsx index b3bb2e1a..32181b08 100644 --- a/src/app/[locale]/templates/_components/blueprint-edit/edit-components/mapping-info/MappingInfoEditComponent.tsx +++ b/src/app/[locale]/templates/_components/blueprint-edit/edit-components/mapping-info/MappingInfoEditComponent.tsx @@ -1,4 +1,4 @@ -import { AddCircleOutlined, RemoveCircleOutlined } from '@mui/icons-material'; +import { AddCircleOutline, RemoveCircleOutline } from '@mui/icons-material'; import { Box, Button, IconButton, TextField } from '@mui/material'; import { BlueprintEditSectionHeading } from 'app/[locale]/templates/_components/blueprint-edit/BlueprintEditSectionHeading'; import { Qualifier, Submodel, SubmodelElementChoice } from 'lib/api/aas/models'; @@ -72,11 +72,11 @@ export function MappingInfoEditComponent(props: MappingInfoEditComponentProps) { fullWidth /> - + ) : ( - )} diff --git a/src/app/[locale]/templates/_components/blueprint-edit/edit-components/multi-lang/MultiLangEditComponent.tsx b/src/app/[locale]/templates/_components/blueprint-edit/edit-components/multi-lang/MultiLangEditComponent.tsx index 6e40c944..73133156 100644 --- a/src/app/[locale]/templates/_components/blueprint-edit/edit-components/multi-lang/MultiLangEditComponent.tsx +++ b/src/app/[locale]/templates/_components/blueprint-edit/edit-components/multi-lang/MultiLangEditComponent.tsx @@ -1,4 +1,4 @@ -import { AddCircleOutlined, RemoveCircleOutlined } from '@mui/icons-material'; +import { AddCircleOutline, RemoveCircleOutline } from '@mui/icons-material'; import { Autocomplete, Box, Button, IconButton, TextField } from '@mui/material'; import { BlueprintEditSectionHeading } from 'app/[locale]/templates/_components/blueprint-edit/BlueprintEditSectionHeading'; import options from './language-suggestions.json'; @@ -67,11 +67,11 @@ export function MultiLangEditComponent(props: MultiLangEditComponentProps) { fullWidth /> onRemove(i)}> - + ))} - diff --git a/src/app/[locale]/templates/_components/blueprint-edit/edit-components/multiplicity/MultiplicityEditComponent.tsx b/src/app/[locale]/templates/_components/blueprint-edit/edit-components/multiplicity/MultiplicityEditComponent.tsx index 4d9e8925..f6205c21 100644 --- a/src/app/[locale]/templates/_components/blueprint-edit/edit-components/multiplicity/MultiplicityEditComponent.tsx +++ b/src/app/[locale]/templates/_components/blueprint-edit/edit-components/multiplicity/MultiplicityEditComponent.tsx @@ -1,4 +1,4 @@ -import { AddCircleOutlined, RemoveCircleOutlined } from '@mui/icons-material'; +import { AddCircleOutline, RemoveCircleOutline } from '@mui/icons-material'; import { Box, Button, FormControl, IconButton, InputLabel, MenuItem, Select } from '@mui/material'; import { useState } from 'react'; import { BlueprintEditSectionHeading } from 'app/[locale]/templates/_components/blueprint-edit/BlueprintEditSectionHeading'; @@ -105,7 +105,7 @@ export function MultiplicityEditComponent(props: MultiplicityEditComponentProps) onRemove()} sx={{ alignSelf: 'center', ml: 1 }}> - + ) : ( @@ -115,7 +115,7 @@ export function MultiplicityEditComponent(props: MultiplicityEditComponentProps) ) : ( )} diff --git a/src/app/[locale]/viewer/_components/submodel/hierarchical-structures/HierarchicalStructuresDetail.tsx b/src/app/[locale]/viewer/_components/submodel/hierarchical-structures/HierarchicalStructuresDetail.tsx index 10b5df81..d4742e73 100644 --- a/src/app/[locale]/viewer/_components/submodel/hierarchical-structures/HierarchicalStructuresDetail.tsx +++ b/src/app/[locale]/viewer/_components/submodel/hierarchical-structures/HierarchicalStructuresDetail.tsx @@ -138,11 +138,11 @@ const buildRelationTree = (entryNode: Entity, relationShips: RelationshipElement const selectRelationship = (entryNode: Entity, relationShips: RelationshipElement, entityNodes: Entity[]) => { switch (relationShips.semanticId?.keys[0].value) { case RelationShipTypes.SameAs: - return (entityNodes = buildSameAsRelationship(entryNode, relationShips, entityNodes)); + return buildSameAsRelationship(entryNode, relationShips, entityNodes); case RelationShipTypes.IsPartOf: - return (entityNodes = buildIsPartOfRelationship(entryNode, relationShips, entityNodes)); + return buildIsPartOfRelationship(entryNode, relationShips, entityNodes); case RelationShipTypes.HasPart: - return (entityNodes = buildHasPartRelationship(entryNode, relationShips, entityNodes)); + return buildHasPartRelationship(entryNode, relationShips, entityNodes); default: return entityNodes; } diff --git a/src/lib/api/serverFetch.ts b/src/lib/api/serverFetch.ts index c7b0823b..a88eed4f 100644 --- a/src/lib/api/serverFetch.ts +++ b/src/lib/api/serverFetch.ts @@ -69,6 +69,6 @@ export async function performServerFetchRaw( throw e; } log.error({ Reason: 'An unexpected error occurred during server fetch (raw)' }, `Request: ${input}`); - throw new Error('Unknown error'); + throw new Error('Unknown error', { cause: e }); } } \ No newline at end of file diff --git a/src/lib/hooks/UseAasDataLoader.ts b/src/lib/hooks/UseAasDataLoader.ts index 2ee159f8..08e86852 100644 --- a/src/lib/hooks/UseAasDataLoader.ts +++ b/src/lib/hooks/UseAasDataLoader.ts @@ -94,13 +94,9 @@ export function useAasLoader(context: CurrentAasContextType, aasIdToLoad: string } } - let response: ApiResponseWrapper | undefined = undefined; - - if (infrastructureName) { - response = await searchAasInInfrastructure(aasIdToLoad, infrastructureName); - } else { - response = await performFullAasSearch(aasIdToLoad); - } + const response: ApiResponseWrapper = infrastructureName + ? await searchAasInInfrastructure(aasIdToLoad, infrastructureName) + : await performFullAasSearch(aasIdToLoad); const { isSuccess, result } = response; diff --git a/src/lib/services/list-service/ListService.ts b/src/lib/services/list-service/ListService.ts index 2b57b139..e391e439 100644 --- a/src/lib/services/list-service/ListService.ts +++ b/src/lib/services/list-service/ListService.ts @@ -109,7 +109,7 @@ export class ListService { * @param type */ async getAasListEntities(limit: number, cursor?: string, type?: 'repository' | 'registry'): Promise { - let assetAdministrationShells: AssetAdministrationShell[] = []; + let assetAdministrationShells: AssetAdministrationShell[]; let nextCursor: string | undefined; if (type === 'registry') { diff --git a/tsconfig.json b/tsconfig.json index 7745348d..dbca4aed 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -27,8 +27,8 @@ "strict": false, "resolveJsonModule": true, "isolatedModules": true, + "ignoreDeprecations": "6.0", "strictPropertyInitialization": false, - "baseUrl": "src", "plugins": [ { "name": "next" @@ -37,11 +37,12 @@ // needed for jest "paths": { "@src": [ - "./src" + "./src/src" ], "@util": [ - "./src/util" - ] + "./src/src/util" + ], + "*": ["./src/*"] }, "types": [ "./svgr.d.ts", diff --git a/yarn.lock b/yarn.lock index 2d37ed46..543fd618 100644 --- a/yarn.lock +++ b/yarn.lock @@ -984,7 +984,7 @@ "@babel/plugin-transform-modules-commonjs" "^7.27.1" "@babel/plugin-transform-typescript" "^7.28.5" -"@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.13", "@babel/runtime@^7.28.6", "@babel/runtime@^7.29.2", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7": +"@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.13", "@babel/runtime@^7.28.4", "@babel/runtime@^7.28.6", "@babel/runtime@^7.29.2", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7": version "7.29.2" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.29.2.tgz#9a6e2d05f4b6692e1801cd4fb176ad823930ed5e" integrity sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g== @@ -1019,10 +1019,10 @@ "@babel/helper-string-parser" "^7.27.1" "@babel/helper-validator-identifier" "^7.28.5" -"@base-ui/utils@^0.2.6": - version "0.2.7" - resolved "https://registry.yarnpkg.com/@base-ui/utils/-/utils-0.2.7.tgz#a7a57d08af6d02a905c0ca5e87b6dde85597046d" - integrity sha512-nXYKhiL/0JafyJE8PfcflipGftOftlIwKd72rU15iZ1M5yqgg5J9P8NHU71GReDuXco5MJA/eVQqUT5WRqX9sA== +"@base-ui/utils@^0.2.3": + version "0.2.8" + resolved "https://registry.yarnpkg.com/@base-ui/utils/-/utils-0.2.8.tgz#76ceecb4948eca3b990c982e0152f38350ef42b4" + integrity sha512-jvOi+c+ftGlGotNcKnzPVg2IhCaDTB6/6R3JeqdjdXktuAJi3wKH9T7+svuaKh1mmfVU11UWzUZVH74JDfi/wQ== dependencies: "@babel/runtime" "^7.29.2" "@floating-ui/utils" "^0.2.11" @@ -2037,129 +2037,129 @@ resolved "https://registry.yarnpkg.com/@kurkle/color/-/color-0.3.4.tgz#4d4ff677e1609214fc71c580125ddddd86abcabf" integrity sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w== -"@mui/core-downloads-tracker@^9.0.0": - version "9.0.0" - resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-9.0.0.tgz#b2df0488117bc892d08715de7857fc7d8637dfc0" - integrity sha512-uwQNGkhv0lf7ufxw6QXev77BW6pWbW+7uxYjU5+rfp4lBkFtMEgJCsarTM3Tn+i0lGx6+Ol2u88JdGXr0GDskA== +"@mui/core-downloads-tracker@^7.3.11": + version "7.3.11" + resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-7.3.11.tgz#93251cf192641b9582641991feea60149159902c" + integrity sha512-a7I/b/nBTdXYz2cOSlEmkQ9WWE1x8FHpqMhFPp+Y1VPFxcOw91G5ELOHARQAGSPy5V+UCgJua6K/1x70bAtQPw== -"@mui/icons-material@^9.0.0": - version "9.0.0" - resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-9.0.0.tgz#85fb0c59b12e745792c3c6c598bf0550e98968e8" - integrity sha512-oDwyvI6LgjWRC9MBcSGvLkPud9S9ELgSBQFYxa1rYcZn6Br55dn22SyvsPDMsn0G8OndFk53iMT45W5mNqrogw== +"@mui/icons-material@^7.3.7": + version "7.3.11" + resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-7.3.11.tgz#dfea40829d1ca96c074c85093fdfe0de170af5ad" + integrity sha512-+hz5ilwHZ3djd5es3sCErLioqe/NhZcYTsV/TNXZAMdJdb23F4xzJjqnnZdnurc3S1+ietcssRNqieOhPQLZ7Q== dependencies: - "@babel/runtime" "^7.29.2" + "@babel/runtime" "^7.28.6" -"@mui/material-nextjs@^9.0.0": - version "9.0.0" - resolved "https://registry.yarnpkg.com/@mui/material-nextjs/-/material-nextjs-9.0.0.tgz#f9952db1177841c0fc7d293a44e5100634057fc4" - integrity sha512-HBVg7zkKh9isbENwmWnJAKmUVH+h18ZYqX8HJIDMTejXzs1+3qmZE3z1KpQFnYRDanq7dwOlWWUfQq6z5sXtng== +"@mui/material-nextjs@^7.3.7": + version "7.3.10" + resolved "https://registry.yarnpkg.com/@mui/material-nextjs/-/material-nextjs-7.3.10.tgz#74d7c019123dfcbfacf119699fdf42bb93e9dfab" + integrity sha512-gJzAFPA3pPg2gg8QUTDEzcI1yLm8A2XLFxis8ejt3DlwCnEt6q1q91dtmeynwsu47XDiJl/l62PVuER6kgFzkA== dependencies: - "@babel/runtime" "^7.29.2" + "@babel/runtime" "^7.28.6" -"@mui/material@^9.0.0": - version "9.0.0" - resolved "https://registry.yarnpkg.com/@mui/material/-/material-9.0.0.tgz#30d19aa0ccf3b1868179870ced72d720e347a95a" - integrity sha512-+VP/oQCDhDR87NQQgXnNBG8dwy6GNuQLnenS1pZvkbn2dKFSxRSRMybTpH9xUxXP+316mlYDy5CSbYtusnCWtw== +"@mui/material@^7.3.7": + version "7.3.11" + resolved "https://registry.yarnpkg.com/@mui/material/-/material-7.3.11.tgz#aa6e0640bb29bd01e6c353ac3436fa0b20e5a36b" + integrity sha512-yq8bPc3LxOwKRWpcjRgDkYFmpM6aKlARfESTmOQcvLYFeJwtHte2tw6hJDrb8sk8wcvpDprHEHVaoUU0MslIkw== dependencies: - "@babel/runtime" "^7.29.2" - "@mui/core-downloads-tracker" "^9.0.0" - "@mui/system" "^9.0.0" - "@mui/types" "^9.0.0" - "@mui/utils" "^9.0.0" + "@babel/runtime" "^7.28.6" + "@mui/core-downloads-tracker" "^7.3.11" + "@mui/system" "^7.3.11" + "@mui/types" "^7.4.12" + "@mui/utils" "^7.3.11" "@popperjs/core" "^2.11.8" "@types/react-transition-group" "^4.4.12" clsx "^2.1.1" csstype "^3.2.3" prop-types "^15.8.1" - react-is "^19.2.4" + react-is "^19.2.3" react-transition-group "^4.4.5" -"@mui/private-theming@^9.0.0": - version "9.0.0" - resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-9.0.0.tgz#2617a4fa2045e0644429556afebe87aeaa0ea966" - integrity sha512-JtuZoaiCqwD6vjgYu6Xp3T7DZkrxJlgtDz5yESzhI34fEX5hHMh2VJUbuL9UOg8xrfIFMrq6dcYoH/7Zi4G0RA== +"@mui/private-theming@^7.3.11": + version "7.3.11" + resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-7.3.11.tgz#96d4cde586624916816f5a97fef3c808cf562fb0" + integrity sha512-9B+YKms0fRHbNrqp9tOT/DNbNnU5gyvJ1o3qAGXfq8GmZcbJnE3At9x07Zr/o0pkhzg4aDdwXVqe4+AcgtOCPA== dependencies: - "@babel/runtime" "^7.29.2" - "@mui/utils" "^9.0.0" + "@babel/runtime" "^7.28.6" + "@mui/utils" "^7.3.11" prop-types "^15.8.1" -"@mui/styled-engine@^9.0.0": - version "9.0.0" - resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-9.0.0.tgz#ab7b1c25c0193a796ced29da3662191d53ae339b" - integrity sha512-9RLGdX4Jg0aQPRuvqh/OLzYSPlgd5zyEw5/1HIRfdavSiOd03WtUaGZH9/w1RoTYuRKwpgy0hpIFaMHIqPVIWg== +"@mui/styled-engine@^7.3.10", "@mui/styled-engine@^7.3.7": + version "7.3.10" + resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-7.3.10.tgz#53e98c1fdeda972b5932c76f6a2a29faf33f0d11" + integrity sha512-WxE9SiF8xskAQqGjsp0poXCkCqsoXFEsSr0HBXfApmGHR+DBnXRp+z46Vsltg4gpPM4Z96DeAQRpeAOnhNg7Ng== dependencies: - "@babel/runtime" "^7.29.2" + "@babel/runtime" "^7.28.6" "@emotion/cache" "^11.14.0" "@emotion/serialize" "^1.3.3" "@emotion/sheet" "^1.4.0" csstype "^3.2.3" prop-types "^15.8.1" -"@mui/system@^9.0.0": - version "9.0.0" - resolved "https://registry.yarnpkg.com/@mui/system/-/system-9.0.0.tgz#a95509127a7df264692105abebaf5a4a965401d5" - integrity sha512-YnC5Zg6j04IxiLc/boAKs0464jfZlLFVa7mf5E8lF0XOtZVUvG6R6gJK50lgUYdaaLdyLfxF6xR7LaPuEpeT/g== +"@mui/system@^7.1.0", "@mui/system@^7.3.11": + version "7.3.11" + resolved "https://registry.yarnpkg.com/@mui/system/-/system-7.3.11.tgz#ffb8ba06f43d697db80257b9a2dfc8042b18554a" + integrity sha512-7izwGWdNawAKpBKcRlx7f2gFnAAjmASBWvMcyX4YYEeLOFsbfGRbUYGInvnAcUeql3rPxI7F9Ft4oY2OLRz44g== dependencies: - "@babel/runtime" "^7.29.2" - "@mui/private-theming" "^9.0.0" - "@mui/styled-engine" "^9.0.0" - "@mui/types" "^9.0.0" - "@mui/utils" "^9.0.0" + "@babel/runtime" "^7.28.6" + "@mui/private-theming" "^7.3.11" + "@mui/styled-engine" "^7.3.10" + "@mui/types" "^7.4.12" + "@mui/utils" "^7.3.11" clsx "^2.1.1" csstype "^3.2.3" prop-types "^15.8.1" -"@mui/types@^9.0.0": - version "9.0.0" - resolved "https://registry.yarnpkg.com/@mui/types/-/types-9.0.0.tgz#92d8c64e72cb863ee59108cb20cc476d648a3ab9" - integrity sha512-i1cuFCAWN44b3AJWO7mh7tuh1sqbQSeVr/94oG0TX5uXivac8XalgE4/6fQZcmGZigzbQ35IXxj/4jLpRIBYZg== +"@mui/types@^7.4.12": + version "7.4.12" + resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.4.12.tgz#e4eba37a7506419ea5c5e0604322ba82b271bf46" + integrity sha512-iKNAF2u9PzSIj40CjvKJWxFXJo122jXVdrmdh0hMYd+FR+NuJMkr/L88XwWLCRiJ5P1j+uyac25+Kp6YC4hu6w== dependencies: - "@babel/runtime" "^7.29.2" + "@babel/runtime" "^7.28.6" -"@mui/utils@9.0.0", "@mui/utils@^9.0.0": - version "9.0.0" - resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-9.0.0.tgz#25b563ccbf537feba5f89c37a00cb8e6eea45ad0" - integrity sha512-bQcqyg/gjULUqTuyUjSAFr6LQGLvtkNtDbJerAtoUn9kGZ0hg5QJiN1PLHMLbeFpe3te1831uq7GFl2ITokGdg== +"@mui/utils@^7.3.11", "@mui/utils@^7.3.5": + version "7.3.11" + resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-7.3.11.tgz#493f46f053fe3a692e041b1b6b8295e2f46d9448" + integrity sha512-XTjGnifwteg71/ij+0e7Y7d+hwyntMYP5wPoA/g2drdGH+Flkvjwy0OfrVpKBbaOvofq4zU/LIyUZyKgmWu18g== dependencies: - "@babel/runtime" "^7.29.2" - "@mui/types" "^9.0.0" + "@babel/runtime" "^7.28.6" + "@mui/types" "^7.4.12" "@types/prop-types" "^15.7.15" clsx "^2.1.1" prop-types "^15.8.1" - react-is "^19.2.4" + react-is "^19.2.3" -"@mui/x-date-pickers@^9.0.2": - version "9.0.2" - resolved "https://registry.yarnpkg.com/@mui/x-date-pickers/-/x-date-pickers-9.0.2.tgz#ac601e4655ce3017185d652f9f91a2914bb6e63a" - integrity sha512-rnyc2wFPnprTS5i8Lq9aX2Rlx+ZRvNZERTd7sPMErf/8HnMCYzxwErITbd+TuImlvo2vaLF1gNynqT8AJMusYw== +"@mui/x-date-pickers@^8.26.0": + version "8.28.5" + resolved "https://registry.yarnpkg.com/@mui/x-date-pickers/-/x-date-pickers-8.28.5.tgz#78b7c32198a66aee8cfd2997849d85333a6acf1d" + integrity sha512-cjjJAe1cbg3tAJsCBokExqkr6aWLA8orEjPy7xFm7PDMOPp7Fi/kjwLZre0BE9s/0dMKeIlqvyICOjrKZAsqpA== dependencies: - "@babel/runtime" "^7.28.6" - "@mui/utils" "9.0.0" - "@mui/x-internals" "^9.0.0" + "@babel/runtime" "^7.28.4" + "@mui/utils" "^7.3.5" + "@mui/x-internals" "8.26.0" "@types/react-transition-group" "^4.4.12" clsx "^2.1.1" prop-types "^15.8.1" react-transition-group "^4.4.5" -"@mui/x-internals@^9.0.0": - version "9.0.0" - resolved "https://registry.yarnpkg.com/@mui/x-internals/-/x-internals-9.0.0.tgz#8851a058e09b719690b4f398319805239e923855" - integrity sha512-E/4rdg69JjhyybpPGypCjAKSKLLnSdCFM+O6P/nkUg47+qt3uftxQEhjQO53rcn6ahHl6du/uNZ9BLgeY6kYxQ== +"@mui/x-internals@8.26.0": + version "8.26.0" + resolved "https://registry.yarnpkg.com/@mui/x-internals/-/x-internals-8.26.0.tgz#49caacac954c29a1b10425c67418310ceb9c8cfa" + integrity sha512-B9OZau5IQUvIxwpJZhoFJKqRpmWf5r0yMmSXjQuqb5WuqM755EuzWJOenY48denGoENzMLT8hQpA0hRTeU2IPA== dependencies: - "@babel/runtime" "^7.28.6" - "@mui/utils" "9.0.0" + "@babel/runtime" "^7.28.4" + "@mui/utils" "^7.3.5" reselect "^5.1.1" use-sync-external-store "^1.6.0" -"@mui/x-tree-view@^9.0.2": - version "9.0.2" - resolved "https://registry.yarnpkg.com/@mui/x-tree-view/-/x-tree-view-9.0.2.tgz#1764b1d0979d044d94f525edd22945c2c82f8fa2" - integrity sha512-7Af7PLJDIYjRXwZ96xI8ge02R/h/eRCsnZXoxhD6rk5t4NnpeNmoRCNBR+wj3WHSzek1hNtXfJ14+CjbbLkQCQ== +"@mui/x-tree-view@^8.10.2": + version "8.28.5" + resolved "https://registry.yarnpkg.com/@mui/x-tree-view/-/x-tree-view-8.28.5.tgz#a8b557286744660c2a36f5da767dfee99707b5e4" + integrity sha512-9Q3CRH7/pBrV3yvwD4fk0IklKi6e/SKn282n8+svcwqWOZUtYipPq632rs2PjO1GZAOZrskrtcHcB2UWiN/nfw== dependencies: - "@babel/runtime" "^7.28.6" - "@base-ui/utils" "^0.2.6" - "@mui/utils" "9.0.0" - "@mui/x-internals" "^9.0.0" + "@babel/runtime" "^7.28.4" + "@base-ui/utils" "^0.2.3" + "@mui/utils" "^7.3.5" + "@mui/x-internals" "8.26.0" "@types/react-transition-group" "^4.4.12" clsx "^2.1.1" prop-types "^15.8.1" @@ -8537,10 +8537,10 @@ react-is@^18.3.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== -react-is@^19.2.4: - version "19.2.5" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-19.2.5.tgz#7e7b54143e9313fed787b23fd4295d5a23872ad9" - integrity sha512-Dn0t8IQhCmeIT3wu+Apm1/YVsJXsGWi6k4sPdnBIdqMVtHtv0IGi6dcpNpNkNac0zB2uUAqNX3MHzN8c+z2rwQ== +react-is@^19.2.3: + version "19.2.6" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-19.2.6.tgz#aeee6159b159eb7f520d672cffcc69e7052d288f" + integrity sha512-XjBR15BhXuylgWGuslhDKqlSayuqvqBX91BP8pauG8kd1zY8kotkNWbXksTCNRarse4kuGbe2kIY05ARtwNIvw== "react-redux@8.x.x || 9.x.x": version "9.2.0" From 2c5853a469d940be7da19b7301a8dcfd0cb57bf4 Mon Sep 17 00:00:00 2001 From: Moritz Hofer Date: Fri, 15 May 2026 16:26:42 +0200 Subject: [PATCH 4/6] Fix MUI errors --- package.json | 14 +- .../[locale]/_components/FindOutMoreCard.tsx | 23 +- src/app/[locale]/_components/GoToListCard.tsx | 29 +- .../[locale]/_components/ManualAasInput.tsx | 41 +- src/app/[locale]/_components/QrScanner.tsx | 42 +- src/app/[locale]/clientLayout.tsx | 4 +- .../_components/CompareSubmodelElement.tsx | 20 +- .../compare/_components/CompareView.tsx | 40 +- .../add-aas/AddAasToCompareCard.tsx | 23 +- .../add-aas/CompareAasAddDialog.tsx | 32 +- .../add-aas/CompareRecordValueRow.tsx | 8 +- src/app/[locale]/list/_components/AasList.tsx | 7 +- .../_components/AasListComparisonHeader.tsx | 16 +- .../list/_components/AasListDataWrapper.tsx | 28 +- .../list/_components/AasListHeader.tsx | 8 +- .../_components/filter/SelectListSource.tsx | 14 +- src/app/[locale]/list/page.tsx | 21 +- src/app/[locale]/page.tsx | 4 +- .../product/_components/KeyFactsBox.tsx | 10 +- .../ProductClassificationInfoBox.tsx | 14 +- .../_components/ProductOverviewCard.tsx | 1056 +++++++++-------- .../_components/SettingsCardHeader.tsx | 16 +- .../id-settings/DynamicPartText.tsx | 10 +- .../DefaultInfrastructure.tsx | 16 +- .../role-settings/DeleteRoleDialog.tsx | 13 +- .../role-settings/DeleteRuleDialogContent.tsx | 4 +- .../role-settings/HintDialogContent.tsx | 7 +- .../role-settings/RoleAccordion.tsx | 129 +- .../_components/role-settings/RuleDialog.tsx | 35 +- .../_components/role-settings/RuleForm.tsx | 19 +- .../role-settings/RuleSettings.tsx | 14 +- .../TargetInformationForm.tsx | 4 +- .../TargetInformationView.tsx | 4 +- .../WildcardOrStringArrayInput.tsx | 14 +- src/app/[locale]/settings/page.tsx | 6 +- src/app/[locale]/templates/[id]/page.tsx | 23 +- .../templates/_components/BlueprintItem.tsx | 4 +- .../_components/ChooseTemplateItem.tsx | 7 +- .../blueprint-edit/BlueprintEditFields.tsx | 19 +- .../BlueprintEditSectionHeading.tsx | 15 +- .../blueprint-edit/BlueprintEditTreeItem.tsx | 4 +- .../edit-components/SubmodelEditComponent.tsx | 6 +- .../file/FileEditComponent.tsx | 6 +- .../mapping-info/MappingInfoEditComponent.tsx | 12 +- .../multi-lang/MultiLangEditComponent.tsx | 14 +- .../MultiplicityEditComponent.tsx | 12 +- .../property/PropertyEditComponent.tsx | 30 +- src/app/[locale]/templates/page.tsx | 11 +- .../viewer/_components/AASOverviewCard.tsx | 12 +- .../[locale]/viewer/_components/AASViewer.tsx | 7 +- .../_components/HighlightBoxExperimental.tsx | 32 +- .../_components/SubmodelsOverviewCard.tsx | 34 +- .../address-component/ContactElements.tsx | 49 +- .../DocumentClassification.tsx | 19 +- .../document-component/DocumentComponent.tsx | 29 +- .../document-component/PreviewImage.tsx | 4 +- .../GenericPropertyComponent.tsx | 23 +- .../MultiLanguagePropertyComponent.tsx | 14 +- .../RelationShipDetailsDialog.tsx | 21 +- .../entity-components/TreeItem.tsx | 10 +- .../marking-components/MarkingsComponent.tsx | 13 +- .../SingleMarkingsComponent.tsx | 52 +- .../_components/submodel/SubmodelDetail.tsx | 4 +- .../submodel/SubmodelInfoDialog.tsx | 4 +- .../CO2EDistributionList.tsx | 4 +- .../ProductLifecycle.tsx | 10 +- .../HierarchicalStructuresDetail.tsx | 5 +- .../ConceptDescriptionDataRow.tsx | 23 +- .../technical-data/TechnicalDataElement.tsx | 8 +- .../time-series/TimeSeriesLineDiagram.tsx | 5 +- .../transfer/TargetRepositories.tsx | 28 +- src/app/[locale]/viewer/discovery/page.tsx | 15 +- src/app/[locale]/viewer/registry/page.tsx | 15 +- .../authentication/AuthenticationPrompt.tsx | 7 +- src/components/basics/AboutDialog.tsx | 37 +- src/components/basics/AssetNotFound.tsx | 7 +- src/components/basics/Breadcrumbs.tsx | 7 +- src/components/basics/CardHeading.tsx | 4 +- .../basics/CenteredLoadingSpinner.tsx | 7 +- src/components/basics/ConstructionDialog.tsx | 8 +- src/components/basics/DataRow.tsx | 11 +- src/components/basics/ErrorBoundary.tsx | 4 +- .../basics/HealthCheckIndicator.tsx | 16 +- src/components/basics/ListHeader.tsx | 17 +- src/components/basics/LockedTextField.tsx | 17 +- src/components/basics/MobileModal.tsx | 11 +- src/components/basics/VerticalTabSelector.tsx | 29 +- src/components/basics/ViewHeading.tsx | 4 +- .../detailViewBasics/MobileAccordion.tsx | 7 +- .../detailViewBasics/NoSearchResult.tsx | 4 +- src/layout/Footer.tsx | 75 +- src/layout/Header.tsx | 16 +- src/layout/HeaderLogo.tsx | 2 +- src/layout/LanguageSelector.tsx | 14 +- src/layout/LayoutRoot.tsx | 16 +- src/layout/menu/BottomMenu.tsx | 8 +- src/layout/menu/ExternalLink.tsx | 4 +- src/layout/menu/MenuHeading.tsx | 7 +- .../database/InfrastructureMappedTypes.ts | 110 +- src/lib/services/database/PrismaConnector.ts | 510 ++++---- .../database/PrismaConnectorInMemory.ts | 78 +- .../database/PrismaConnectorInterface.ts | 60 +- .../database/infrastructureDatabaseActions.ts | 362 +++--- yarn.lock | 172 +-- 104 files changed, 2371 insertions(+), 1608 deletions(-) diff --git a/package.json b/package.json index 61802bc8..9b3340a9 100644 --- a/package.json +++ b/package.json @@ -48,13 +48,13 @@ "@fontsource/noto-sans": "^5.2.10", "@fontsource/saira": "^5.2.10", "@influxdata/influxdb-client-browser": "^1.33.2", - "@mui/icons-material": "^7.3.7", - "@mui/material": "^7.3.7", - "@mui/material-nextjs": "^7.3.7", - "@mui/styled-engine": "^7.3.7", - "@mui/system": "^7.1.0", - "@mui/x-date-pickers": "^8.26.0", - "@mui/x-tree-view": "^8.10.2", + "@mui/icons-material": "^9.0.0", + "@mui/material": "^9.0.0", + "@mui/material-nextjs": "^9.0.0", + "@mui/styled-engine": "^9.0.0", + "@mui/system": "^9.0.0", + "@mui/x-date-pickers": "^9.0.2", + "@mui/x-tree-view": "^9.0.2", "@prisma/adapter-better-sqlite3": "^7.7.0", "@prisma/client": "^7.7.0", "@svgr/webpack": "^8.1.0", diff --git a/src/app/[locale]/_components/FindOutMoreCard.tsx b/src/app/[locale]/_components/FindOutMoreCard.tsx index 5535620d..b203a636 100644 --- a/src/app/[locale]/_components/FindOutMoreCard.tsx +++ b/src/app/[locale]/_components/FindOutMoreCard.tsx @@ -10,13 +10,18 @@ export function FindOutMoreCard() { return ( + sx={{ + display: 'flex', + flex: 1, + flexDirection: 'column', + alignItems: 'center', + justifyContent: 'flex-start', + px: 3, + py: 4, + gap: 1, + height: '100%', + width: '100%' + }}> {t('findOutMoreHeader')} - + {t('findOutMoreText')} diff --git a/src/app/[locale]/_components/GoToListCard.tsx b/src/app/[locale]/_components/GoToListCard.tsx index a693fcfb..1dc22f0f 100644 --- a/src/app/[locale]/_components/GoToListCard.tsx +++ b/src/app/[locale]/_components/GoToListCard.tsx @@ -9,13 +9,18 @@ export function GoToListCard() { return ( + sx={{ + display: 'flex', + flex: 1, + flexDirection: 'column', + alignItems: 'center', + justifyContent: 'flex-start', + px: 3, + py: 4, + gap: 1, + height: '100%', + width: '100%' + }}> - + {t('listCardHeader')} - + {t('listBtnLabel')} diff --git a/src/app/[locale]/_components/ManualAasInput.tsx b/src/app/[locale]/_components/ManualAasInput.tsx index bad7ec85..feeab776 100644 --- a/src/app/[locale]/_components/ManualAasInput.tsx +++ b/src/app/[locale]/_components/ManualAasInput.tsx @@ -76,7 +76,13 @@ export function ManualAasInput(props: { }; return ( - + {t('pages.dashboard.enterManuallyLabel')} - + - { - setInputValue(''); - }} - > - - - - ), + slotProps={{ + input: { + endAdornment: ( + + { + setInputValue(''); + }} + > + + + + ), + } }} /> + sx={{ + position: 'relative', + margin: 'auto', + height: size, + width: size + }}> {state === State.Stopped && ( setState(State.LoadScanner)} - display="flex" - flexDirection="column" - alignItems="center" - justifyContent="center" - height={size} - width={size} - gap={1} - color="white" data-testid="scanner-start" - > + sx={{ + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + justifyContent: 'center', + height: size, + width: size, + gap: 1, + color: 'white' + }}> Scan Code - + @@ -145,7 +149,13 @@ export function QrScanner(props: { )} {(state === State.LoadScanner || state === State.HandleQr) && ( - + diff --git a/src/app/[locale]/clientLayout.tsx b/src/app/[locale]/clientLayout.tsx index 66130daa..8a427022 100644 --- a/src/app/[locale]/clientLayout.tsx +++ b/src/app/[locale]/clientLayout.tsx @@ -36,7 +36,9 @@ export const ClientLayout = ({ children }: Readonly) => { - + {children} diff --git a/src/app/[locale]/compare/_components/CompareSubmodelElement.tsx b/src/app/[locale]/compare/_components/CompareSubmodelElement.tsx index aba0a362..f904070f 100644 --- a/src/app/[locale]/compare/_components/CompareSubmodelElement.tsx +++ b/src/app/[locale]/compare/_components/CompareSubmodelElement.tsx @@ -26,9 +26,15 @@ export function CompareSubmodelElement(props: CompareSubmodelElementProps) { case KeyTypes.Property: return ( <> - + {isMarked && } - + @@ -43,9 +49,15 @@ export function CompareSubmodelElement(props: CompareSubmodelElementProps) { case KeyTypes.MultiLanguageProperty: return ( <> - + {isMarked && } - + diff --git a/src/app/[locale]/compare/_components/CompareView.tsx b/src/app/[locale]/compare/_components/CompareView.tsx index 319f6c97..f7c38e2b 100644 --- a/src/app/[locale]/compare/_components/CompareView.tsx +++ b/src/app/[locale]/compare/_components/CompareView.tsx @@ -78,15 +78,41 @@ export function CompareView() { return ( <> - - + + {t('title')} {compareAas.length !== 0 || isLoadingAas ? ( - - + + {compareAas.map((compareAas, index) => ( - + handleDeleteAas(compareAas.aas.id)} dataTestId={`delete-compare-aas-${index}`} @@ -104,7 +130,9 @@ export function CompareView() { ))} {compareAas.length < 3 && } - + diff --git a/src/app/[locale]/compare/_components/add-aas/AddAasToCompareCard.tsx b/src/app/[locale]/compare/_components/add-aas/AddAasToCompareCard.tsx index 860fb1f3..c55f655f 100644 --- a/src/app/[locale]/compare/_components/add-aas/AddAasToCompareCard.tsx +++ b/src/app/[locale]/compare/_components/add-aas/AddAasToCompareCard.tsx @@ -15,20 +15,31 @@ export function AddAasToCompareCard(props: AddAasToCompareCardProps) { return ( + sx={{ + width: '33%', + display: 'flex', + cursor: 'pointer' + }}> {isFirst ? ( - + {t('addFirstAasButton')} ) : ( - + {t('addButton')} )} diff --git a/src/app/[locale]/compare/_components/add-aas/CompareAasAddDialog.tsx b/src/app/[locale]/compare/_components/add-aas/CompareAasAddDialog.tsx index e5d7b415..3a3b3c1c 100644 --- a/src/app/[locale]/compare/_components/add-aas/CompareAasAddDialog.tsx +++ b/src/app/[locale]/compare/_components/add-aas/CompareAasAddDialog.tsx @@ -23,21 +23,43 @@ export function CompareAasAddDialog(props: AddAasModalProps) { > - - + + {t('compare.addAnother')}: - + {t('dashboard.scanIdLabel')} - + {t('dashboard.enterManuallyLabel')} - + diff --git a/src/app/[locale]/compare/_components/add-aas/CompareRecordValueRow.tsx b/src/app/[locale]/compare/_components/add-aas/CompareRecordValueRow.tsx index 23fc0cc1..89d1b88a 100644 --- a/src/app/[locale]/compare/_components/add-aas/CompareRecordValueRow.tsx +++ b/src/app/[locale]/compare/_components/add-aas/CompareRecordValueRow.tsx @@ -12,7 +12,13 @@ export function CompareRecordValueRow(props: { data: SubmodelCompareDataRecord; const markedIndexes = compareRowValues(dataRecord.submodelElements, locale); return ( - + {dataRecord.submodelElements?.map((subElement, valueIndex) => { return ( + sx={{ + letterSpacing: 0.16, + fontWeight: 700 + }}> {header.label} diff --git a/src/app/[locale]/list/_components/AasListComparisonHeader.tsx b/src/app/[locale]/list/_components/AasListComparisonHeader.tsx index 51e1489b..5c20b001 100644 --- a/src/app/[locale]/list/_components/AasListComparisonHeader.tsx +++ b/src/app/[locale]/list/_components/AasListComparisonHeader.tsx @@ -24,9 +24,21 @@ export const AasListComparisonHeader = (props: CompareAasListBarType) => { return ( <> - + {selectedAasList?.map((selectedAas) => ( - + {tooltipText(selectedAas, 15)} updateSelectedAasList(false, selectedAas)}> diff --git a/src/app/[locale]/list/_components/AasListDataWrapper.tsx b/src/app/[locale]/list/_components/AasListDataWrapper.tsx index 10a58e91..66ed6378 100644 --- a/src/app/[locale]/list/_components/AasListDataWrapper.tsx +++ b/src/app/[locale]/list/_components/AasListDataWrapper.tsx @@ -118,8 +118,18 @@ export default function AasListDataWrapper({ hideRepoSelection }: AasListDataWra }; const pagination = ( - - + + {t('page') + ' ' + (currentPage + 1)} @@ -135,8 +145,18 @@ export default function AasListDataWrapper({ hideRepoSelection }: AasListDataWra {!hideRepoSelection && ( - - + + - + {t('header')} diff --git a/src/app/[locale]/list/_components/filter/SelectListSource.tsx b/src/app/[locale]/list/_components/filter/SelectListSource.tsx index 7d51d205..16acdc89 100644 --- a/src/app/[locale]/list/_components/filter/SelectListSource.tsx +++ b/src/app/[locale]/list/_components/filter/SelectListSource.tsx @@ -100,9 +100,10 @@ export function SelectListSource(props: { + sx={{ + color: 'text.secondary', + ml: '5px' + }}> ({conn.infrastructureName}) @@ -121,9 +122,10 @@ export function SelectListSource(props: { + sx={{ + color: 'text.secondary', + ml: '5px' + }}> ({conn.infrastructureName}) diff --git a/src/app/[locale]/list/page.tsx b/src/app/[locale]/list/page.tsx index 441e8fae..f2ed531c 100644 --- a/src/app/[locale]/list/page.tsx +++ b/src/app/[locale]/list/page.tsx @@ -8,9 +8,24 @@ import { useTranslations } from 'next-intl'; export default function Page() { const t = useTranslations('pages.aasList'); return ( - - - + + + diff --git a/src/app/[locale]/page.tsx b/src/app/[locale]/page.tsx index 1d5601ed..71ddb2df 100644 --- a/src/app/[locale]/page.tsx +++ b/src/app/[locale]/page.tsx @@ -72,7 +72,9 @@ export default function () { {t('digitalTwinMadeEasyText')} - + diff --git a/src/app/[locale]/product/_components/KeyFactsBox.tsx b/src/app/[locale]/product/_components/KeyFactsBox.tsx index 06322452..786bd83e 100644 --- a/src/app/[locale]/product/_components/KeyFactsBox.tsx +++ b/src/app/[locale]/product/_components/KeyFactsBox.tsx @@ -55,9 +55,15 @@ export function KeyFactsBox({ return ( - + - + {t('summary')} diff --git a/src/app/[locale]/product/_components/ProductClassificationInfoBox.tsx b/src/app/[locale]/product/_components/ProductClassificationInfoBox.tsx index 51a80060..97944911 100644 --- a/src/app/[locale]/product/_components/ProductClassificationInfoBox.tsx +++ b/src/app/[locale]/product/_components/ProductClassificationInfoBox.tsx @@ -56,13 +56,15 @@ export function ProductClassificationInfoBox({ productClassifications }: Product return ( - + + sx={{ + fontWeight: 'bold', + borderBottom: '2px solid', + borderColor: 'primary' + }}> {t('summary')} @@ -73,7 +75,9 @@ export function ProductClassificationInfoBox({ productClassifications }: Product label={classification.ProductClassificationSystem || 'Classification'} icon={classification.ProductClassificationSystem === 'ECLASS' ? eClassIcon : vecIcon} > - + {tooltipText(classification.ProductClassId, 35) || '-'} diff --git a/src/app/[locale]/product/_components/ProductOverviewCard.tsx b/src/app/[locale]/product/_components/ProductOverviewCard.tsx index 915da048..af53f0ce 100644 --- a/src/app/[locale]/product/_components/ProductOverviewCard.tsx +++ b/src/app/[locale]/product/_components/ProductOverviewCard.tsx @@ -1,525 +1,531 @@ -import { Box, Card, CardContent, Skeleton, Typography, Tooltip, Divider } from '@mui/material'; -import React, { useMemo, useCallback } from 'react'; -import { DataRow } from 'components/basics/DataRow'; -import { IconCircleWrapper } from 'components/basics/IconCircleWrapper'; -import { AssetIcon } from 'components/custom-icons/AssetIcon'; -import { encodeBase64 } from 'lib/util/Base64Util'; -import { useRouter } from 'next/navigation'; -import { SubmodelOrIdReference } from 'components/contexts/CurrentAasContext'; -import { ImageWithFallback } from 'components/basics/StyledImageWithFallBack'; -import { useTranslations } from 'next-intl'; -import { SubmodelSemanticIdEnum } from 'lib/enums/SubmodelSemanticId.enum'; -import { findSubmodelByIdOrSemanticId, findSubmodelElementByIdShort } from 'lib/util/SubmodelResolverUtil'; -import { MobileAccordion } from 'components/basics/detailViewBasics/MobileAccordion'; -import { KeyFactsBox } from 'app/[locale]/product/_components/KeyFactsBox'; -import { SubmodelElementSemanticIdEnum } from 'lib/enums/SubmodelElementSemanticId.enum'; -import { useProductImageUrl } from 'lib/hooks/UseProductImageUrl'; -import { useFindValueByIdShort } from 'lib/hooks/useFindValueByIdShort'; -import { ActionMenu } from './ProductActionMenu'; -import LinkIcon from '@mui/icons-material/Link'; -import { MnestixConnection } from '../../../../../prisma/generated/client'; -import { - AssetAdministrationShell, - Property, - SubmodelElementChoice, - SubmodelElementCollection, -} from 'lib/api/aas/models'; -import { useAasStore } from 'stores/AasStore'; - -type ProductOverviewCardProps = { - readonly aas: AssetAdministrationShell | null; - readonly submodels: SubmodelOrIdReference[] | null; - readonly productImage?: string; - readonly isLoading?: boolean; - readonly isAccordion: boolean; - readonly imageLinksToDetail?: boolean; - readonly repositoryURL?: string; - readonly displayName: string | null; - readonly catalogConfig?: MnestixConnection; - readonly infrastructureName?: string; -}; - -type ProductClassification = { - ProductClassificationSystem?: string; - ProductClassId?: string; -}; - -type OverviewData = { - readonly manufacturerName?: string; - readonly manufacturerProductDesignation?: string; - readonly manufacturerProductRoot?: string; - readonly manufacturerProductFamily?: string; - readonly manufacturerProductType?: string; - readonly manufacturerArticleNumber?: string; - readonly manufacturerOrderCode?: string; - readonly manufacturerLogo: SubmodelElementChoice | null; - readonly companyLogo: SubmodelElementChoice | null; - readonly markings: string[] | null; - readonly productClassifications?: ProductClassification[]; - readonly URIOfTheProduct?: string | null; -}; - -export function ProductOverviewCard(props: ProductOverviewCardProps) { - const isAccordion = props.isAccordion; - const navigate = useRouter(); - const t = useTranslations('pages.productViewer'); - const findValue = useFindValueByIdShort(); - const productImageUrl = useProductImageUrl(props.aas, props.repositoryURL ?? undefined, props.productImage); - const { addAasData } = useAasStore(); - - const prepareTechnicalDataSubmodel = useCallback( - (technicalDataSubmodelElements: Array): Partial => { - const manufacturerName = findValue( - technicalDataSubmodelElements, - 'ManufacturerName', - SubmodelElementSemanticIdEnum.ManufacturerName, - ); - const manufacturerProductDesignation = findValue( - technicalDataSubmodelElements, - 'ManufacturerProductDesignation', - SubmodelElementSemanticIdEnum.ManufacturerProductDesignation, - ); - const manufacturerArticleNumber = findValue( - technicalDataSubmodelElements, - 'ManufacturerArticleNumber', - SubmodelElementSemanticIdEnum.ManufacturerArticleNumber, - ); - const manufacturerOrderCode = findValue( - technicalDataSubmodelElements, - 'ManufacturerOrderCode', - SubmodelElementSemanticIdEnum.ManufacturerOrderCode, - ); - const manufacturerLogo = findSubmodelElementByIdShort( - technicalDataSubmodelElements, - 'ManufacturerLogo', - SubmodelElementSemanticIdEnum.ManufacturerLogo, - ); - const productClassifications = findSubmodelElementByIdShort( - technicalDataSubmodelElements, - 'ProductClassifications', - SubmodelElementSemanticIdEnum.ProductClassifications, - ) as SubmodelElementCollection; - const classifications: ProductClassification[] = []; - - // If ProductClassifications is a flat list, we can directly use it - // This is not standard conform but we support it for now. - if ( - productClassifications?.value && - productClassifications.value.find((element) => element.idShort === 'ProductClassificationSystem') - ) { - const classification = { - ProductClassificationSystem: - findValue( - productClassifications.value, - 'ProductClassificationSystem', - SubmodelElementSemanticIdEnum.ProductClassificationSystem, - ) || undefined, - ProductClassId: - findValue( - productClassifications.value, - 'ProductClassId', - SubmodelElementSemanticIdEnum.ProductClassId, - ) || undefined, - }; - classifications.push(classification); - } else { - productClassifications?.value?.forEach((productClassification) => { - const submodelClassification = productClassification as SubmodelElementCollection; - if (submodelClassification?.value) { - const classification = { - ProductClassificationSystem: - findValue( - submodelClassification.value, - 'ProductClassificationSystem', - SubmodelElementSemanticIdEnum.ProductClassificationSystem, - ) || undefined, - ProductClassId: - findValue( - submodelClassification.value, - 'ProductClassId', - SubmodelElementSemanticIdEnum.ProductClassId, - ) || undefined, - }; - // Filter out classifications without a ProductClassId - if (!classification.ProductClassId) { - return; - } - classifications.push(classification); - } - }); - } - return { - manufacturerName: !manufacturerName || manufacturerName.trim() === '' ? undefined : manufacturerName, - manufacturerProductDesignation: - !manufacturerProductDesignation || manufacturerProductDesignation.trim() === '' - ? undefined - : manufacturerProductDesignation, - productClassifications: classifications, - manufacturerArticleNumber: - !manufacturerArticleNumber || manufacturerArticleNumber.trim() === '' - ? undefined - : manufacturerArticleNumber, - manufacturerOrderCode: - !manufacturerOrderCode || manufacturerOrderCode.trim() === '' ? undefined : manufacturerOrderCode, - companyLogo: null, - markings: null, - manufacturerLogo: manufacturerLogo, - }; - }, - [findValue], - ); - - /** - * Prepare marking texts from the SubmodelElementCollection by extracting the 'MarkingName' properties. - * @param markings - */ - const prepareMarkingTexts = (markings: SubmodelElementCollection | null): string[] => { - if (!markings?.value) return []; - - const result: string[] = []; - markings.value.forEach((el) => { - Object.values(el || {}).forEach((marking) => { - Object.values(marking || {}).forEach((markingProperty: SubmodelElementChoice) => { - if (markingProperty?.idShort === 'MarkingName' && (markingProperty as Property).value) { - result.push((markingProperty as Property).value || ''); - } - }); - }); - }); - return result; - }; - - const prepareNameplateData = useCallback( - ( - nameplateSubmodelElements: Array, - prevData?: Partial, - ): Partial => { - const manufacturerProductRoot = findValue( - nameplateSubmodelElements, - 'ManufacturerProductRoot', - SubmodelElementSemanticIdEnum.ManufacturerProductRoot, - ); - const manufacturerProductFamily = findValue( - nameplateSubmodelElements, - 'ManufacturerProductFamily', - SubmodelElementSemanticIdEnum.ManufacturerProductFamily, - ); - const manufacturerProductType = findValue( - nameplateSubmodelElements, - 'ManufacturerProductType', - SubmodelElementSemanticIdEnum.ManufacturerProductType, - ); - const markingsElement = findSubmodelElementByIdShort( - nameplateSubmodelElements, - 'Markings', - SubmodelElementSemanticIdEnum.MarkingsV3, - ) as SubmodelElementCollection; - - const markings = prepareMarkingTexts(markingsElement || null); - - const companyLogo = findSubmodelElementByIdShort( - nameplateSubmodelElements, - 'CompanyLogo', - SubmodelElementSemanticIdEnum.CompanyLogo, - ); - const URIOfTheProduct = findValue(nameplateSubmodelElements, 'URIOfTheProducts', [ - SubmodelElementSemanticIdEnum.URIOfTheProductV2, - SubmodelElementSemanticIdEnum.URIOfTheProductV3, - ]); - const manufacturerName = findValue( - nameplateSubmodelElements, - 'ManufacturerName', - SubmodelElementSemanticIdEnum.ManufacturerName, - ); - const manufacturerProductDesignation = findValue( - nameplateSubmodelElements, - 'ManufacturerProductDesignation', - SubmodelElementSemanticIdEnum.ManufacturerProductDesignation, - ); - const manufacturerArticleNumber = findValue( - nameplateSubmodelElements, - 'ProductArticleNumberOfManufacturer', - SubmodelElementSemanticIdEnum.ManufacturerArticleNumber, - ); - const manufacturerOrderCode = findValue( - nameplateSubmodelElements, - 'OrderCodeOfManufacturer', - SubmodelElementSemanticIdEnum.ManufacturerOrderCode, - ); - return { - ...prevData, - manufacturerName: prevData?.manufacturerName ? prevData.manufacturerName : (manufacturerName ?? '-'), - manufacturerProductDesignation: prevData?.manufacturerProductDesignation - ? prevData.manufacturerProductDesignation - : (manufacturerProductDesignation ?? '-'), - manufacturerArticleNumber: prevData?.manufacturerArticleNumber - ? prevData.manufacturerArticleNumber - : (manufacturerArticleNumber ?? '-'), - manufacturerOrderCode: prevData?.manufacturerOrderCode - ? prevData.manufacturerOrderCode - : (manufacturerOrderCode ?? '-'), - manufacturerProductRoot: manufacturerProductRoot ?? '-', - manufacturerProductFamily: manufacturerProductFamily ?? '-', - manufacturerProductType: manufacturerProductType ?? '-', - markings: markings, - manufacturerLogo: prevData?.manufacturerLogo || null, - companyLogo: companyLogo || null, - URIOfTheProduct: URIOfTheProduct || null, - }; - }, - [findValue, prepareMarkingTexts], - ); - - const overviewData = useMemo((): OverviewData | undefined => { - if (!props.submodels || props.submodels.length === 0) return undefined; - - const technicalData = findSubmodelByIdOrSemanticId( - props.submodels, - SubmodelSemanticIdEnum.TechnicalDataV11, - 'TechnicalData', - ); - let data: Partial | undefined; - if (technicalData?.submodelElements) { - data = prepareTechnicalDataSubmodel(technicalData.submodelElements); - } - - const nameplate = findSubmodelByIdOrSemanticId( - props.submodels, - SubmodelSemanticIdEnum.NameplateV2, - 'Nameplate', - ); - if (nameplate?.submodelElements) { - data = prepareNameplateData(nameplate.submodelElements, data); - } - - return data as OverviewData | undefined; - }, [props.submodels, prepareTechnicalDataSubmodel, prepareNameplateData]); - - const infoBoxStyle = { - display: 'flex', - flexDirection: 'column', - width: '100%', - flexGrow: '1', - flexBasis: '0', - }; - - const titleStyle = { - marginBottom: '15px', - }; - - const cardContentStyle = { - display: 'flex', - alignItems: isAccordion ? 'center' : 'unset', - gap: isAccordion ? '10px' : '40px', - flexDirection: isAccordion ? 'column' : 'row', - }; - - const navigateToAas = () => { - if (props.imageLinksToDetail && props.aas && props.infrastructureName) { - addAasData({ - aas: props.aas, - aasData: { - aasRepositoryOrigin: props.repositoryURL, - submodelDescriptors: undefined, - infrastructureName: props.infrastructureName, - }, - }); - const url = `/product/${encodeBase64(props.aas.id)}`; - navigate.push(url); - } - }; - - const navigateToProduct = () => { - if (overviewData?.URIOfTheProduct) { - const url = overviewData.URIOfTheProduct; - window.open(url, '_blank', 'noopener,noreferrer'); - } - }; - - const productInfo = ( - - - - - - - - - - - ); - - const showKeyFactsBox = - (overviewData?.productClassifications && overviewData.productClassifications.length > 0) || - (overviewData?.markings && overviewData.markings.length > 0); - - // eslint-disable-next-line @typescript-eslint/no-unused-vars - const classificationInfo = ( - - {!isAccordion && ( - - - - - - {t('classification')} - - - )} - - - - - ); - - return ( - - - {props.isLoading ? ( - <> - - - {isAccordion ? ( - - - - - ) : ( - <> - - - - - - - - - - - - - - )} - - - ) : ( - <> - - {isAccordion ? ( - - ) : ( - <> - - - - {props.displayName || t('title')} - {overviewData?.URIOfTheProduct && ( - - - - )} - - - - - {productInfo} - - - )} - - )} - - {showKeyFactsBox && ( - - )} - - ); -} +import { Box, Card, CardContent, Skeleton, Typography, Tooltip, Divider } from '@mui/material'; +import React, { useMemo, useCallback } from 'react'; +import { DataRow } from 'components/basics/DataRow'; +import { IconCircleWrapper } from 'components/basics/IconCircleWrapper'; +import { AssetIcon } from 'components/custom-icons/AssetIcon'; +import { encodeBase64 } from 'lib/util/Base64Util'; +import { useRouter } from 'next/navigation'; +import { SubmodelOrIdReference } from 'components/contexts/CurrentAasContext'; +import { ImageWithFallback } from 'components/basics/StyledImageWithFallBack'; +import { useTranslations } from 'next-intl'; +import { SubmodelSemanticIdEnum } from 'lib/enums/SubmodelSemanticId.enum'; +import { findSubmodelByIdOrSemanticId, findSubmodelElementByIdShort } from 'lib/util/SubmodelResolverUtil'; +import { MobileAccordion } from 'components/basics/detailViewBasics/MobileAccordion'; +import { KeyFactsBox } from 'app/[locale]/product/_components/KeyFactsBox'; +import { SubmodelElementSemanticIdEnum } from 'lib/enums/SubmodelElementSemanticId.enum'; +import { useProductImageUrl } from 'lib/hooks/UseProductImageUrl'; +import { useFindValueByIdShort } from 'lib/hooks/useFindValueByIdShort'; +import { ActionMenu } from './ProductActionMenu'; +import LinkIcon from '@mui/icons-material/Link'; +import { MnestixConnection } from '../../../../../prisma/generated/client'; +import { + AssetAdministrationShell, + Property, + SubmodelElementChoice, + SubmodelElementCollection, +} from 'lib/api/aas/models'; +import { useAasStore } from 'stores/AasStore'; + +type ProductOverviewCardProps = { + readonly aas: AssetAdministrationShell | null; + readonly submodels: SubmodelOrIdReference[] | null; + readonly productImage?: string; + readonly isLoading?: boolean; + readonly isAccordion: boolean; + readonly imageLinksToDetail?: boolean; + readonly repositoryURL?: string; + readonly displayName: string | null; + readonly catalogConfig?: MnestixConnection; + readonly infrastructureName?: string; +}; + +type ProductClassification = { + ProductClassificationSystem?: string; + ProductClassId?: string; +}; + +type OverviewData = { + readonly manufacturerName?: string; + readonly manufacturerProductDesignation?: string; + readonly manufacturerProductRoot?: string; + readonly manufacturerProductFamily?: string; + readonly manufacturerProductType?: string; + readonly manufacturerArticleNumber?: string; + readonly manufacturerOrderCode?: string; + readonly manufacturerLogo: SubmodelElementChoice | null; + readonly companyLogo: SubmodelElementChoice | null; + readonly markings: string[] | null; + readonly productClassifications?: ProductClassification[]; + readonly URIOfTheProduct?: string | null; +}; + +export function ProductOverviewCard(props: ProductOverviewCardProps) { + const isAccordion = props.isAccordion; + const navigate = useRouter(); + const t = useTranslations('pages.productViewer'); + const findValue = useFindValueByIdShort(); + const productImageUrl = useProductImageUrl(props.aas, props.repositoryURL ?? undefined, props.productImage); + const { addAasData } = useAasStore(); + + const prepareTechnicalDataSubmodel = useCallback( + (technicalDataSubmodelElements: Array): Partial => { + const manufacturerName = findValue( + technicalDataSubmodelElements, + 'ManufacturerName', + SubmodelElementSemanticIdEnum.ManufacturerName, + ); + const manufacturerProductDesignation = findValue( + technicalDataSubmodelElements, + 'ManufacturerProductDesignation', + SubmodelElementSemanticIdEnum.ManufacturerProductDesignation, + ); + const manufacturerArticleNumber = findValue( + technicalDataSubmodelElements, + 'ManufacturerArticleNumber', + SubmodelElementSemanticIdEnum.ManufacturerArticleNumber, + ); + const manufacturerOrderCode = findValue( + technicalDataSubmodelElements, + 'ManufacturerOrderCode', + SubmodelElementSemanticIdEnum.ManufacturerOrderCode, + ); + const manufacturerLogo = findSubmodelElementByIdShort( + technicalDataSubmodelElements, + 'ManufacturerLogo', + SubmodelElementSemanticIdEnum.ManufacturerLogo, + ); + const productClassifications = findSubmodelElementByIdShort( + technicalDataSubmodelElements, + 'ProductClassifications', + SubmodelElementSemanticIdEnum.ProductClassifications, + ) as SubmodelElementCollection; + const classifications: ProductClassification[] = []; + + // If ProductClassifications is a flat list, we can directly use it + // This is not standard conform but we support it for now. + if ( + productClassifications?.value && + productClassifications.value.find((element) => element.idShort === 'ProductClassificationSystem') + ) { + const classification = { + ProductClassificationSystem: + findValue( + productClassifications.value, + 'ProductClassificationSystem', + SubmodelElementSemanticIdEnum.ProductClassificationSystem, + ) || undefined, + ProductClassId: + findValue( + productClassifications.value, + 'ProductClassId', + SubmodelElementSemanticIdEnum.ProductClassId, + ) || undefined, + }; + classifications.push(classification); + } else { + productClassifications?.value?.forEach((productClassification) => { + const submodelClassification = productClassification as SubmodelElementCollection; + if (submodelClassification?.value) { + const classification = { + ProductClassificationSystem: + findValue( + submodelClassification.value, + 'ProductClassificationSystem', + SubmodelElementSemanticIdEnum.ProductClassificationSystem, + ) || undefined, + ProductClassId: + findValue( + submodelClassification.value, + 'ProductClassId', + SubmodelElementSemanticIdEnum.ProductClassId, + ) || undefined, + }; + // Filter out classifications without a ProductClassId + if (!classification.ProductClassId) { + return; + } + classifications.push(classification); + } + }); + } + return { + manufacturerName: !manufacturerName || manufacturerName.trim() === '' ? undefined : manufacturerName, + manufacturerProductDesignation: + !manufacturerProductDesignation || manufacturerProductDesignation.trim() === '' + ? undefined + : manufacturerProductDesignation, + productClassifications: classifications, + manufacturerArticleNumber: + !manufacturerArticleNumber || manufacturerArticleNumber.trim() === '' + ? undefined + : manufacturerArticleNumber, + manufacturerOrderCode: + !manufacturerOrderCode || manufacturerOrderCode.trim() === '' ? undefined : manufacturerOrderCode, + companyLogo: null, + markings: null, + manufacturerLogo: manufacturerLogo, + }; + }, + [findValue], + ); + + /** + * Prepare marking texts from the SubmodelElementCollection by extracting the 'MarkingName' properties. + * @param markings + */ + const prepareMarkingTexts = (markings: SubmodelElementCollection | null): string[] => { + if (!markings?.value) return []; + + const result: string[] = []; + markings.value.forEach((el) => { + Object.values(el || {}).forEach((marking) => { + Object.values(marking || {}).forEach((markingProperty: SubmodelElementChoice) => { + if (markingProperty?.idShort === 'MarkingName' && (markingProperty as Property).value) { + result.push((markingProperty as Property).value || ''); + } + }); + }); + }); + return result; + }; + + const prepareNameplateData = useCallback( + ( + nameplateSubmodelElements: Array, + prevData?: Partial, + ): Partial => { + const manufacturerProductRoot = findValue( + nameplateSubmodelElements, + 'ManufacturerProductRoot', + SubmodelElementSemanticIdEnum.ManufacturerProductRoot, + ); + const manufacturerProductFamily = findValue( + nameplateSubmodelElements, + 'ManufacturerProductFamily', + SubmodelElementSemanticIdEnum.ManufacturerProductFamily, + ); + const manufacturerProductType = findValue( + nameplateSubmodelElements, + 'ManufacturerProductType', + SubmodelElementSemanticIdEnum.ManufacturerProductType, + ); + const markingsElement = findSubmodelElementByIdShort( + nameplateSubmodelElements, + 'Markings', + SubmodelElementSemanticIdEnum.MarkingsV3, + ) as SubmodelElementCollection; + + const markings = prepareMarkingTexts(markingsElement || null); + + const companyLogo = findSubmodelElementByIdShort( + nameplateSubmodelElements, + 'CompanyLogo', + SubmodelElementSemanticIdEnum.CompanyLogo, + ); + const URIOfTheProduct = findValue(nameplateSubmodelElements, 'URIOfTheProducts', [ + SubmodelElementSemanticIdEnum.URIOfTheProductV2, + SubmodelElementSemanticIdEnum.URIOfTheProductV3, + ]); + const manufacturerName = findValue( + nameplateSubmodelElements, + 'ManufacturerName', + SubmodelElementSemanticIdEnum.ManufacturerName, + ); + const manufacturerProductDesignation = findValue( + nameplateSubmodelElements, + 'ManufacturerProductDesignation', + SubmodelElementSemanticIdEnum.ManufacturerProductDesignation, + ); + const manufacturerArticleNumber = findValue( + nameplateSubmodelElements, + 'ProductArticleNumberOfManufacturer', + SubmodelElementSemanticIdEnum.ManufacturerArticleNumber, + ); + const manufacturerOrderCode = findValue( + nameplateSubmodelElements, + 'OrderCodeOfManufacturer', + SubmodelElementSemanticIdEnum.ManufacturerOrderCode, + ); + return { + ...prevData, + manufacturerName: prevData?.manufacturerName ? prevData.manufacturerName : (manufacturerName ?? '-'), + manufacturerProductDesignation: prevData?.manufacturerProductDesignation + ? prevData.manufacturerProductDesignation + : (manufacturerProductDesignation ?? '-'), + manufacturerArticleNumber: prevData?.manufacturerArticleNumber + ? prevData.manufacturerArticleNumber + : (manufacturerArticleNumber ?? '-'), + manufacturerOrderCode: prevData?.manufacturerOrderCode + ? prevData.manufacturerOrderCode + : (manufacturerOrderCode ?? '-'), + manufacturerProductRoot: manufacturerProductRoot ?? '-', + manufacturerProductFamily: manufacturerProductFamily ?? '-', + manufacturerProductType: manufacturerProductType ?? '-', + markings: markings, + manufacturerLogo: prevData?.manufacturerLogo || null, + companyLogo: companyLogo || null, + URIOfTheProduct: URIOfTheProduct || null, + }; + }, + [findValue, prepareMarkingTexts], + ); + + const overviewData = useMemo((): OverviewData | undefined => { + if (!props.submodels || props.submodels.length === 0) return undefined; + + const technicalData = findSubmodelByIdOrSemanticId( + props.submodels, + SubmodelSemanticIdEnum.TechnicalDataV11, + 'TechnicalData', + ); + let data: Partial | undefined; + if (technicalData?.submodelElements) { + data = prepareTechnicalDataSubmodel(technicalData.submodelElements); + } + + const nameplate = findSubmodelByIdOrSemanticId( + props.submodels, + SubmodelSemanticIdEnum.NameplateV2, + 'Nameplate', + ); + if (nameplate?.submodelElements) { + data = prepareNameplateData(nameplate.submodelElements, data); + } + + return data as OverviewData | undefined; + }, [props.submodels, prepareTechnicalDataSubmodel, prepareNameplateData]); + + const infoBoxStyle = { + display: 'flex', + flexDirection: 'column', + width: '100%', + flexGrow: '1', + flexBasis: '0', + }; + + const titleStyle = { + marginBottom: '15px', + }; + + const cardContentStyle = { + display: 'flex', + alignItems: isAccordion ? 'center' : 'unset', + gap: isAccordion ? '10px' : '40px', + flexDirection: isAccordion ? 'column' : 'row', + }; + + const navigateToAas = () => { + if (props.imageLinksToDetail && props.aas && props.infrastructureName) { + addAasData({ + aas: props.aas, + aasData: { + aasRepositoryOrigin: props.repositoryURL, + submodelDescriptors: undefined, + infrastructureName: props.infrastructureName, + }, + }); + const url = `/product/${encodeBase64(props.aas.id)}`; + navigate.push(url); + } + }; + + const navigateToProduct = () => { + if (overviewData?.URIOfTheProduct) { + const url = overviewData.URIOfTheProduct; + window.open(url, '_blank', 'noopener,noreferrer'); + } + }; + + const productInfo = ( + + + + + + + + + + + ); + + const showKeyFactsBox = + (overviewData?.productClassifications && overviewData.productClassifications.length > 0) || + (overviewData?.markings && overviewData.markings.length > 0); + + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const classificationInfo = ( + + {!isAccordion && ( + + + + + + {t('classification')} + + + )} + + + + + ); + + return ( + + + {props.isLoading ? ( + <> + + + {isAccordion ? ( + + + + + ) : ( + <> + + + + + + + + + + + + + + )} + + + ) : ( + <> + + {isAccordion ? ( + + ) : ( + <> + + + + {props.displayName || t('title')} + {overviewData?.URIOfTheProduct && ( + + + + )} + + + + + {productInfo} + + + )} + + )} + + {showKeyFactsBox && ( + + )} + + ); +} diff --git a/src/app/[locale]/settings/_components/SettingsCardHeader.tsx b/src/app/[locale]/settings/_components/SettingsCardHeader.tsx index e4ab31e7..de156eaf 100644 --- a/src/app/[locale]/settings/_components/SettingsCardHeader.tsx +++ b/src/app/[locale]/settings/_components/SettingsCardHeader.tsx @@ -18,9 +18,21 @@ export type SettingsCardHeaderProps = { export function SettingsCardHeader(props: SettingsCardHeaderProps) { const t = useTranslations('pages.settings'); return ( - + - + {props.isEditMode ? ( <> - + {Object.entries(groupedRules).map(([roleName, rules]) => ( { )} - setRuleDetailDialogOpen(false)} reloadRules={loadRbacData} diff --git a/src/app/[locale]/settings/_components/role-settings/target-information/TargetInformationForm.tsx b/src/app/[locale]/settings/_components/role-settings/target-information/TargetInformationForm.tsx index a7ca3e83..e5543409 100644 --- a/src/app/[locale]/settings/_components/role-settings/target-information/TargetInformationForm.tsx +++ b/src/app/[locale]/settings/_components/role-settings/target-information/TargetInformationForm.tsx @@ -31,7 +31,9 @@ export const TargetInformationForm = (props: TargetInformationProps) => { }, []); return ( - + {t('rules.tableHeader.type')} { } const ids = element as string[]; permissions.push( - + {key} {ids.join(', ')} , diff --git a/src/app/[locale]/settings/_components/role-settings/target-information/WildcardOrStringArrayInput.tsx b/src/app/[locale]/settings/_components/role-settings/target-information/WildcardOrStringArrayInput.tsx index 15dd2d36..4674c5e5 100644 --- a/src/app/[locale]/settings/_components/role-settings/target-information/WildcardOrStringArrayInput.tsx +++ b/src/app/[locale]/settings/_components/role-settings/target-information/WildcardOrStringArrayInput.tsx @@ -1,7 +1,7 @@ import { useState } from 'react'; import { Box, Button, Checkbox, FormControlLabel, IconButton, TextField, Typography } from '@mui/material'; import ControlPointIcon from '@mui/icons-material/ControlPoint'; -import RemoveCircleOutlineIcon from '@mui/icons-material/RemoveCircleOutline'; +import RemoveCircleOutlineIcon from '@mui/icons-material/RemoveCircleOutlined'; import { Control, Controller, useFieldArray, UseFormGetValues, UseFormSetValue } from 'react-hook-form'; import { useTranslations } from 'next-intl'; import { RuleFormModel } from 'app/[locale]/settings/_components/role-settings/RuleForm'; @@ -38,9 +38,10 @@ export const WildcardOrStringArrayInput = (props: WildcardOrStringArrayInputProp }; return ( - + {props.rule} - ( - + - + : blueprintDisplayName || ''} - + {isLoading ? : templateSemanticId} @@ -254,9 +256,17 @@ function TemplateBuilderContent() { - + - + {t('healthCheck.label')} + sx={{ + color: 'text.secondary', + mt: 1 + }}> {t('docsLink')} diff --git a/src/app/[locale]/templates/_components/BlueprintItem.tsx b/src/app/[locale]/templates/_components/BlueprintItem.tsx index 9cf800d5..04f7c8c3 100644 --- a/src/app/[locale]/templates/_components/BlueprintItem.tsx +++ b/src/app/[locale]/templates/_components/BlueprintItem.tsx @@ -97,7 +97,9 @@ export function BlueprintItem(props: BlueprintItemProps) { {props.item.displayName} - + {props.item.basedOnTemplate} diff --git a/src/app/[locale]/templates/_components/ChooseTemplateItem.tsx b/src/app/[locale]/templates/_components/ChooseTemplateItem.tsx index 80c16149..46ae9dfb 100644 --- a/src/app/[locale]/templates/_components/ChooseTemplateItem.tsx +++ b/src/app/[locale]/templates/_components/ChooseTemplateItem.tsx @@ -34,15 +34,14 @@ export function ChooseTemplateItem(props: ChooseTemplateItemProps) { {!!subLabel && ( + display: 'inline-block' + }}> {subLabel} )} diff --git a/src/app/[locale]/templates/_components/blueprint-edit/BlueprintEditFields.tsx b/src/app/[locale]/templates/_components/blueprint-edit/BlueprintEditFields.tsx index a92c882d..acb5f6a6 100644 --- a/src/app/[locale]/templates/_components/blueprint-edit/BlueprintEditFields.tsx +++ b/src/app/[locale]/templates/_components/blueprint-edit/BlueprintEditFields.tsx @@ -77,11 +77,23 @@ export function BlueprintEditFields() { fullWidth /> {selectedElement?.data?.modelType && ( - - + + {t('labels.modelType')} - + {selectedElement.data.modelType} @@ -90,7 +102,6 @@ export function BlueprintEditFields() { )} {/* Render the SME-Fields */} {getRenderFields()} - {/* Render the Mapping-Qualifiers */} {selectedElement?.data && ( <> diff --git a/src/app/[locale]/templates/_components/blueprint-edit/BlueprintEditSectionHeading.tsx b/src/app/[locale]/templates/_components/blueprint-edit/BlueprintEditSectionHeading.tsx index fbae65d8..0639b2f3 100644 --- a/src/app/[locale]/templates/_components/blueprint-edit/BlueprintEditSectionHeading.tsx +++ b/src/app/[locale]/templates/_components/blueprint-edit/BlueprintEditSectionHeading.tsx @@ -68,8 +68,19 @@ export function BlueprintEditSectionHeading(props: BlueprintEditSectionHeadingPr return ( <> - - + + {getIcon()} {getTitle()} diff --git a/src/app/[locale]/templates/_components/blueprint-edit/BlueprintEditTreeItem.tsx b/src/app/[locale]/templates/_components/blueprint-edit/BlueprintEditTreeItem.tsx index a52ce806..e0cf185c 100644 --- a/src/app/[locale]/templates/_components/blueprint-edit/BlueprintEditTreeItem.tsx +++ b/src/app/[locale]/templates/_components/blueprint-edit/BlueprintEditTreeItem.tsx @@ -99,7 +99,9 @@ const CustomContent = React.forwardRef(function CustomContent( }} onClick={handleSelectionClick} > - + {label} diff --git a/src/app/[locale]/templates/_components/blueprint-edit/edit-components/SubmodelEditComponent.tsx b/src/app/[locale]/templates/_components/blueprint-edit/edit-components/SubmodelEditComponent.tsx index bbd98234..31609efe 100644 --- a/src/app/[locale]/templates/_components/blueprint-edit/edit-components/SubmodelEditComponent.tsx +++ b/src/app/[locale]/templates/_components/blueprint-edit/edit-components/SubmodelEditComponent.tsx @@ -33,7 +33,11 @@ export function SubmodelEditComponent(props: SubmodelEditComponentProps) { return ( <> - + onTextChange(e)} fullWidth /> - ) : ( - )} diff --git a/src/app/[locale]/templates/_components/blueprint-edit/edit-components/mapping-info/MappingInfoEditComponent.tsx b/src/app/[locale]/templates/_components/blueprint-edit/edit-components/mapping-info/MappingInfoEditComponent.tsx index 32181b08..0201db01 100644 --- a/src/app/[locale]/templates/_components/blueprint-edit/edit-components/mapping-info/MappingInfoEditComponent.tsx +++ b/src/app/[locale]/templates/_components/blueprint-edit/edit-components/mapping-info/MappingInfoEditComponent.tsx @@ -1,4 +1,4 @@ -import { AddCircleOutline, RemoveCircleOutline } from '@mui/icons-material'; +import { AddCircleOutlined, RemoveCircleOutlined } from '@mui/icons-material'; import { Box, Button, IconButton, TextField } from '@mui/material'; import { BlueprintEditSectionHeading } from 'app/[locale]/templates/_components/blueprint-edit/BlueprintEditSectionHeading'; import { Qualifier, Submodel, SubmodelElementChoice } from 'lib/api/aas/models'; @@ -64,7 +64,11 @@ export function MappingInfoEditComponent(props: MappingInfoEditComponentProps) { <> {mappingInfo ? ( - + - + ) : ( - )} diff --git a/src/app/[locale]/templates/_components/blueprint-edit/edit-components/multi-lang/MultiLangEditComponent.tsx b/src/app/[locale]/templates/_components/blueprint-edit/edit-components/multi-lang/MultiLangEditComponent.tsx index 73133156..761d77c3 100644 --- a/src/app/[locale]/templates/_components/blueprint-edit/edit-components/multi-lang/MultiLangEditComponent.tsx +++ b/src/app/[locale]/templates/_components/blueprint-edit/edit-components/multi-lang/MultiLangEditComponent.tsx @@ -1,4 +1,4 @@ -import { AddCircleOutline, RemoveCircleOutline } from '@mui/icons-material'; +import { AddCircleOutlined, RemoveCircleOutlined } from '@mui/icons-material'; import { Autocomplete, Box, Button, IconButton, TextField } from '@mui/material'; import { BlueprintEditSectionHeading } from 'app/[locale]/templates/_components/blueprint-edit/BlueprintEditSectionHeading'; import options from './language-suggestions.json'; @@ -49,7 +49,13 @@ export function MultiLangEditComponent(props: MultiLangEditComponentProps) { {Array.isArray(langStrings) && langStrings.map((langString, i) => ( - + } @@ -67,11 +73,11 @@ export function MultiLangEditComponent(props: MultiLangEditComponentProps) { fullWidth /> onRemove(i)}> - + ))} - diff --git a/src/app/[locale]/templates/_components/blueprint-edit/edit-components/multiplicity/MultiplicityEditComponent.tsx b/src/app/[locale]/templates/_components/blueprint-edit/edit-components/multiplicity/MultiplicityEditComponent.tsx index f6205c21..32b8a865 100644 --- a/src/app/[locale]/templates/_components/blueprint-edit/edit-components/multiplicity/MultiplicityEditComponent.tsx +++ b/src/app/[locale]/templates/_components/blueprint-edit/edit-components/multiplicity/MultiplicityEditComponent.tsx @@ -1,4 +1,4 @@ -import { AddCircleOutline, RemoveCircleOutline } from '@mui/icons-material'; +import { AddCircleOutlined, RemoveCircleOutlined } from '@mui/icons-material'; import { Box, Button, FormControl, IconButton, InputLabel, MenuItem, Select } from '@mui/material'; import { useState } from 'react'; import { BlueprintEditSectionHeading } from 'app/[locale]/templates/_components/blueprint-edit/BlueprintEditSectionHeading'; @@ -85,7 +85,11 @@ export function MultiplicityEditComponent(props: MultiplicityEditComponentProps) {valueEnabled ? ( <> {allowMultiplicityToBeSet ? ( - + Multiplicity onRemove()} sx={{ alignSelf: 'center', ml: 1 }}> - + ) : ( @@ -119,7 +119,7 @@ export function MultiplicityEditComponent(props: MultiplicityEditComponentProps) ) : ( )} From d0ed5572ccb2709f3b5f0c065b9beccd20096e8a Mon Sep 17 00:00:00 2001 From: artacho-xitaso Date: Fri, 5 Jun 2026 16:51:08 +0200 Subject: [PATCH 6/6] fix: explicit string conversion on template page --- src/lib/util/submodelHelpers/SubmodelViewObjectUtil.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/util/submodelHelpers/SubmodelViewObjectUtil.ts b/src/lib/util/submodelHelpers/SubmodelViewObjectUtil.ts index 6169954c..c0e212ae 100644 --- a/src/lib/util/submodelHelpers/SubmodelViewObjectUtil.ts +++ b/src/lib/util/submodelHelpers/SubmodelViewObjectUtil.ts @@ -73,7 +73,7 @@ export function viewObjectHasDataValue(el: SubmodelViewObject) { } export function splitIdIntoArray(id: string): number[] { - return id.split('-').map(function (i) { + return String(id).split('-').map(function (i) { return parseInt(i); }); }