diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index bd8c7899..828a8f03 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -18,7 +18,7 @@ jobs: - name: Set up Node uses: actions/setup-node@v4 with: - node-version: 20 + node-version: 24 - name: Set up pnpm uses: pnpm/action-setup@v4 diff --git a/Dockerfile b/Dockerfile index 878daf39..594915b7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ # ----------------------------------------------- # Base Image with Doppler # ----------------------------------------------- -FROM node:22-alpine AS doppler +FROM node:24-alpine AS doppler # Install Doppler CLI RUN wget -q -t3 'https://packages.doppler.com/public/cli/rsa.8004D9FF50437357.key' -O /etc/apk/keys/cli@doppler-8004D9FF50437357.rsa.pub && \ @@ -52,9 +52,12 @@ RUN pnpm run build:${PROJECT_NAME} # ----------------------------------------------- FROM doppler AS runtime +# Install native build tools needed by sharp, gifsicle, mozjpeg, etc. +RUN apk add --no-cache python3 make g++ autoconf automake libtool nasm + # Install the prod dependencies WORKDIR /build -COPY apps/backend/package.json . +COPY ./apps/backend/package.json ./ COPY pnpm-lock.yaml ./ COPY pnpm-workspace.yaml ./ COPY apps/backend/package.json ./apps/backend/package.json diff --git a/apps/backend/src/utils/initDb.ts b/apps/backend/src/utils/initDb.ts index 8e55add6..dcf07c34 100644 --- a/apps/backend/src/utils/initDb.ts +++ b/apps/backend/src/utils/initDb.ts @@ -158,6 +158,7 @@ export const generateFieldSchema = (field: Field): SchemaDefinitionProperty | nu return getDateSchema() case FieldType.PHONE: return getStringSchema() + case FieldType.DROPDOWN: case FieldType.RADIO_BUTTON: return getRadioButtonSchema(field) case FieldType.FILE: diff --git a/apps/frontend/package.json b/apps/frontend/package.json index 0a97b4ef..c8e21982 100644 --- a/apps/frontend/package.json +++ b/apps/frontend/package.json @@ -15,14 +15,16 @@ }, "dependencies": { "@3dp4me/types": "workspace:*", + "@emotion/react": "^11.14.0", + "@emotion/styled": "^11.14.1", "@mui/icons-material": "^6.4.5", "@mui/material": "^6.4.5", "@sweetalert/with-react": "^0.1.1", "@tanstack/react-query": "^5.17.19", "@vis.gl/react-google-maps": "^1.4.2", + "Chip": "link:@mui/material/Chip", "aws-amplify": "4.2.11", "axios": "^1.6.0", - "Chip": "link:@mui/material/Chip", "date-fns": "^3.3.0", "js-file-download": "^0.4.12", "lodash": "^4.17.21", diff --git a/apps/frontend/src/components/CreateFieldModal/CreateFieldModal.tsx b/apps/frontend/src/components/CreateFieldModal/CreateFieldModal.tsx index 2303c4b9..3b308b73 100644 --- a/apps/frontend/src/components/CreateFieldModal/CreateFieldModal.tsx +++ b/apps/frontend/src/components/CreateFieldModal/CreateFieldModal.tsx @@ -165,6 +165,7 @@ const CreateFieldModal = ({ /> ) + case FieldType.DROPDOWN: case FieldType.RADIO_BUTTON: return (
diff --git a/apps/frontend/src/components/EditFieldModal/EditFieldModal.tsx b/apps/frontend/src/components/EditFieldModal/EditFieldModal.tsx index 4115b645..29005ded 100644 --- a/apps/frontend/src/components/EditFieldModal/EditFieldModal.tsx +++ b/apps/frontend/src/components/EditFieldModal/EditFieldModal.tsx @@ -157,6 +157,7 @@ const EditFieldModal = ({ />
) + case FieldType.DROPDOWN: case FieldType.RADIO_BUTTON: return (
diff --git a/apps/frontend/src/components/Fields/DropdownField.tsx b/apps/frontend/src/components/Fields/DropdownField.tsx index 5f1c20d6..c90d8efd 100644 --- a/apps/frontend/src/components/Fields/DropdownField.tsx +++ b/apps/frontend/src/components/Fields/DropdownField.tsx @@ -30,11 +30,7 @@ const DropdownField = ({ if (shouldHideOption(option)) return null return ( - ) diff --git a/apps/frontend/src/components/Fields/FieldGroup/FieldGroupHelpers.ts b/apps/frontend/src/components/Fields/FieldGroup/FieldGroupHelpers.ts index 0c8280ae..d3c6e774 100644 --- a/apps/frontend/src/components/Fields/FieldGroup/FieldGroupHelpers.ts +++ b/apps/frontend/src/components/Fields/FieldGroup/FieldGroupHelpers.ts @@ -29,6 +29,7 @@ function canFieldBeDisplayedInTable(metadata: Field) { case FieldType.DATE: case FieldType.PHONE: case FieldType.RADIO_BUTTON: + case FieldType.DROPDOWN: return true default: return false diff --git a/apps/frontend/src/components/Fields/FieldGroup/FieldGroupTable.tsx b/apps/frontend/src/components/Fields/FieldGroup/FieldGroupTable.tsx index d153b909..37cea194 100644 --- a/apps/frontend/src/components/Fields/FieldGroup/FieldGroupTable.tsx +++ b/apps/frontend/src/components/Fields/FieldGroup/FieldGroupTable.tsx @@ -8,7 +8,6 @@ import styled from 'styled-components' import XIcon from '../../../assets/x-icon.png' import { useTranslations } from '../../../hooks/useTranslations' -import { DisplayFieldType } from '../../../utils/constants' import { ColumnMetadata, defaultTableHeaderRenderer, @@ -152,9 +151,10 @@ const FieldGroupTable = ({ field.id )}` - let fieldType = metadata.subFields[i].fieldType as FieldType | DisplayFieldType + // Radio buttons don't display well in tables, use dropdown instead + let { fieldType } = metadata.subFields[i] if (fieldType === FieldType.RADIO_BUTTON) { - fieldType = DisplayFieldType.DROPDOWN + fieldType = FieldType.DROPDOWN } return ( @@ -202,7 +202,10 @@ const FieldGroupTable = ({ const itemDataCopy = { ...itemData } rowData.forEach((field, i) => { - if (field.dataType === FieldType.RADIO_BUTTON) { + if ( + field.dataType === FieldType.RADIO_BUTTON || + field.dataType === FieldType.DROPDOWN + ) { const fieldMeta = metadata.subFields[i] const selectedOption = fieldMeta.options.find( (option) => option._id === itemData[field.id] diff --git a/apps/frontend/src/components/StepField/StepField.tsx b/apps/frontend/src/components/StepField/StepField.tsx index cdaa4c58..ec11707a 100644 --- a/apps/frontend/src/components/StepField/StepField.tsx +++ b/apps/frontend/src/components/StepField/StepField.tsx @@ -132,7 +132,7 @@ const StepField = ({ onChange={handleSimpleUpdate} /> ) - case DisplayFieldType.DROPDOWN: + case FieldType.DROPDOWN: return ( { switch (field?.fieldType) { + case FieldType.DROPDOWN: case FieldType.RADIO_BUTTON: return (
diff --git a/apps/frontend/src/utils/constants.ts b/apps/frontend/src/utils/constants.ts index 8ef15835..ca490ba7 100644 --- a/apps/frontend/src/utils/constants.ts +++ b/apps/frontend/src/utils/constants.ts @@ -46,7 +46,6 @@ export enum DisplayFieldType { STEP_STATUS = 'StepStatus', PATIENT_STATUS = 'PatientStatus', ACCESS = 'Access', - DROPDOWN = 'Dropdown', } export type AnyFieldType = FieldType | DisplayFieldType diff --git a/apps/frontend/src/utils/fields.tsx b/apps/frontend/src/utils/fields.tsx index 0f418130..330e4b98 100644 --- a/apps/frontend/src/utils/fields.tsx +++ b/apps/frontend/src/utils/fields.tsx @@ -255,6 +255,8 @@ export const getFieldName = (fieldType: FieldType) => { return 'Phone Number' case FieldType.PHOTO: return 'Photograph' + case FieldType.DROPDOWN: + return 'Dropdown' case FieldType.RADIO_BUTTON: return 'Multiple Choice Question' case FieldType.SIGNATURE: @@ -285,6 +287,7 @@ export const canFieldBeAddedToStep = (fieldType: FieldType) => { case FieldType.PHONE: case FieldType.PHOTO: case FieldType.RADIO_BUTTON: + case FieldType.DROPDOWN: case FieldType.SIGNATURE: case FieldType.STRING: return true @@ -312,7 +315,7 @@ export const fieldToString = ( case FieldType.NUMBER: case FieldType.PHONE: case FieldType.RADIO_BUTTON: - case DisplayFieldType.DROPDOWN: + case FieldType.DROPDOWN: return fieldData case FieldType.DATE: return formatDate(new Date(fieldData), selectedLang) @@ -351,7 +354,7 @@ export const fieldToJSX = (fieldData: any, fieldType: AnyFieldType, selectedLang case FieldType.PHONE: case FieldType.DATE: case FieldType.RADIO_BUTTON: - case DisplayFieldType.DROPDOWN: + case FieldType.DROPDOWN: return fieldToString(fieldData, fieldType, selectedLang) case FieldType.SIGNATURE: return signatureToJSX(fieldData) @@ -381,6 +384,10 @@ export const validateField = = Record= 10.0.0'} cpu: [arm] os: [linux] + libc: [glibc] '@parcel/watcher-linux-arm-musl@2.5.1': resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==} engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] + libc: [musl] '@parcel/watcher-linux-arm64-glibc@2.5.1': resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] + libc: [glibc] '@parcel/watcher-linux-arm64-musl@2.5.1': resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] + libc: [musl] '@parcel/watcher-linux-x64-glibc@2.5.1': resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] + libc: [glibc] '@parcel/watcher-linux-x64-musl@2.5.1': resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] + libc: [musl] '@parcel/watcher-win32-arm64@2.5.1': resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==} @@ -2611,56 +2626,67 @@ packages: resolution: {integrity: sha512-3pA7xecItbgOs1A5H58dDvOUEboG5UfpTq3WzAdF54acBbUM+olDJAPkgj1GRJ4ZqE12DZ9/hNS2QZk166v92A==} cpu: [arm] os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm-musleabihf@4.32.0': resolution: {integrity: sha512-Y7XUZEVISGyge51QbYyYAEHwpGgmRrAxQXO3siyYo2kmaj72USSG8LtlQQgAtlGfxYiOwu+2BdbPjzEpcOpRmQ==} cpu: [arm] os: [linux] + libc: [musl] '@rollup/rollup-linux-arm64-gnu@4.32.0': resolution: {integrity: sha512-r7/OTF5MqeBrZo5omPXcTnjvv1GsrdH8a8RerARvDFiDwFpDVDnJyByYM/nX+mvks8XXsgPUxkwe/ltaX2VH7w==} cpu: [arm64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm64-musl@4.32.0': resolution: {integrity: sha512-HJbifC9vex9NqnlodV2BHVFNuzKL5OnsV2dvTw6e1dpZKkNjPG6WUq+nhEYV6Hv2Bv++BXkwcyoGlXnPrjAKXw==} cpu: [arm64] os: [linux] + libc: [musl] '@rollup/rollup-linux-loongarch64-gnu@4.32.0': resolution: {integrity: sha512-VAEzZTD63YglFlWwRj3taofmkV1V3xhebDXffon7msNz4b14xKsz7utO6F8F4cqt8K/ktTl9rm88yryvDpsfOw==} cpu: [loong64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-powerpc64le-gnu@4.32.0': resolution: {integrity: sha512-Sts5DST1jXAc9YH/iik1C9QRsLcCoOScf3dfbY5i4kH9RJpKxiTBXqm7qU5O6zTXBTEZry69bGszr3SMgYmMcQ==} cpu: [ppc64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-riscv64-gnu@4.32.0': resolution: {integrity: sha512-qhlXeV9AqxIyY9/R1h1hBD6eMvQCO34ZmdYvry/K+/MBs6d1nRFLm6BOiITLVI+nFAAB9kUB6sdJRKyVHXnqZw==} cpu: [riscv64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-s390x-gnu@4.32.0': resolution: {integrity: sha512-8ZGN7ExnV0qjXa155Rsfi6H8M4iBBwNLBM9lcVS+4NcSzOFaNqmt7djlox8pN1lWrRPMRRQ8NeDlozIGx3Omsw==} cpu: [s390x] os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-gnu@4.32.0': resolution: {integrity: sha512-VDzNHtLLI5s7xd/VubyS10mq6TxvZBp+4NRWoW+Hi3tgV05RtVm4qK99+dClwTN1McA6PHwob6DEJ6PlXbY83A==} cpu: [x64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-gnu@4.9.5': resolution: {integrity: sha512-Dq1bqBdLaZ1Gb/l2e5/+o3B18+8TI9ANlA1SkejZqDgdU/jK/ThYaMPMJpVMMXy2uRHvGKbkz9vheVGdq3cJfA==} cpu: [x64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-musl@4.32.0': resolution: {integrity: sha512-qcb9qYDlkxz9DxJo7SDhWxTWV1gFuwznjbTiov289pASxlfGbaOD54mgbs9+z94VwrXtKTu+2RqwlSTbiOqxGg==} cpu: [x64] os: [linux] + libc: [musl] '@rollup/rollup-win32-arm64-msvc@4.32.0': resolution: {integrity: sha512-pFDdotFDMXW2AXVbfdUEfidPAk/OtwE/Hd4eYMTNVVaCQ6Yl8et0meDaKNL63L44Haxv4UExpv9ydSf3aSayDg==} @@ -8402,6 +8428,7 @@ packages: prebuild-install@7.1.3: resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==} engines: {node: '>=10'} + deprecated: No longer maintained. Please contact the author of the relevant native addon; alternatives are available. hasBin: true prelude-ls@1.1.2: @@ -13409,7 +13436,6 @@ snapshots: stylis: 4.2.0 transitivePeerDependencies: - supports-color - optional: true '@emotion/cache@11.14.0': dependencies: @@ -13425,10 +13451,9 @@ snapshots: dependencies: '@emotion/memoize': 0.8.1 - '@emotion/is-prop-valid@1.3.1': + '@emotion/is-prop-valid@1.4.0': dependencies: '@emotion/memoize': 0.9.0 - optional: true '@emotion/memoize@0.8.1': {} @@ -13449,7 +13474,6 @@ snapshots: '@types/react': 18.3.18 transitivePeerDependencies: - supports-color - optional: true '@emotion/serialize@1.3.3': dependencies: @@ -13461,11 +13485,11 @@ snapshots: '@emotion/sheet@1.4.0': {} - '@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1)': + '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1)': dependencies: '@babel/runtime': 7.26.7 '@emotion/babel-plugin': 11.13.5 - '@emotion/is-prop-valid': 1.3.1 + '@emotion/is-prop-valid': 1.4.0 '@emotion/react': 11.14.0(@types/react@18.3.18)(react@18.3.1) '@emotion/serialize': 1.3.3 '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@18.3.1) @@ -13475,7 +13499,6 @@ snapshots: '@types/react': 18.3.18 transitivePeerDependencies: - supports-color - optional: true '@emotion/unitless@0.10.0': {} @@ -13484,7 +13507,6 @@ snapshots: '@emotion/use-insertion-effect-with-fallbacks@1.2.0(react@18.3.1)': dependencies: react: 18.3.1 - optional: true '@emotion/utils@1.4.2': {} @@ -13851,19 +13873,19 @@ snapshots: '@mui/core-downloads-tracker@6.4.5': {} - '@mui/icons-material@6.4.5(@mui/material@6.4.5(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.18)(react@18.3.1)': + '@mui/icons-material@6.4.5(@mui/material@6.4.5(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.18)(react@18.3.1)': dependencies: '@babel/runtime': 7.26.7 - '@mui/material': 6.4.5(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/material': 6.4.5(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 optionalDependencies: '@types/react': 18.3.18 - '@mui/material@6.4.5(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mui/material@6.4.5(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.26.7 '@mui/core-downloads-tracker': 6.4.5 - '@mui/system': 6.4.6(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1) + '@mui/system': 6.4.6(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1) '@mui/types': 7.2.21(@types/react@18.3.18) '@mui/utils': 6.4.3(@types/react@18.3.18)(react@18.3.1) '@popperjs/core': 2.11.8 @@ -13877,7 +13899,7 @@ snapshots: react-transition-group: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) optionalDependencies: '@emotion/react': 11.14.0(@types/react@18.3.18)(react@18.3.1) - '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1) '@types/react': 18.3.18 '@mui/private-theming@6.4.6(@types/react@18.3.18)(react@18.3.1)': @@ -13889,7 +13911,7 @@ snapshots: optionalDependencies: '@types/react': 18.3.18 - '@mui/styled-engine@6.4.6(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(react@18.3.1)': + '@mui/styled-engine@6.4.6(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.26.7 '@emotion/cache': 11.14.0 @@ -13900,13 +13922,13 @@ snapshots: react: 18.3.1 optionalDependencies: '@emotion/react': 11.14.0(@types/react@18.3.18)(react@18.3.1) - '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1) - '@mui/system@6.4.6(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1)': + '@mui/system@6.4.6(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1)': dependencies: '@babel/runtime': 7.26.7 '@mui/private-theming': 6.4.6(@types/react@18.3.18)(react@18.3.1) - '@mui/styled-engine': 6.4.6(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(react@18.3.1) + '@mui/styled-engine': 6.4.6(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(react@18.3.1) '@mui/types': 7.2.21(@types/react@18.3.18) '@mui/utils': 6.4.6(@types/react@18.3.18)(react@18.3.1) clsx: 2.1.1 @@ -13915,7 +13937,7 @@ snapshots: react: 18.3.1 optionalDependencies: '@emotion/react': 11.14.0(@types/react@18.3.18)(react@18.3.1) - '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1) '@types/react': 18.3.18 '@mui/types@7.2.21(@types/react@18.3.18)': @@ -17920,8 +17942,7 @@ snapshots: common-path-prefix: 3.0.0 pkg-dir: 7.0.0 - find-root@1.1.0: - optional: true + find-root@1.1.0: {} find-up@1.1.2: dependencies: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 44665b75..28cee2d3 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,3 +1,15 @@ packages: - 'apps/**' - 'packages/**' +allowBuilds: + '@parcel/watcher': true + aws-sdk: true + core-js: true + core-js-pure: true + cwebp-bin: true + gifsicle: true + mongodb-memory-server: true + mozjpeg: true + optipng-bin: true + pngquant-bin: true + sharp: true