diff --git a/.github/workflows/ci.md b/.github/workflows/ci.md index 9f750fa01e6..2b47b9d2f63 100644 --- a/.github/workflows/ci.md +++ b/.github/workflows/ci.md @@ -2,7 +2,7 @@ [ci.yml](./ci.yml) contains the [GitHub workflow](https://docs.github.com/en/get-started/getting-started-with-git/git-workflows) definition for presubmit tests in this repository. -All Pull Requests in this repository must pass the checks in this workflow before being merged into the `main` branch. The checks are distributed across several jobs. Each job runs on a seprate build agent. Most of them can run concurrently. +All Pull Requests in this repository must pass the checks in this workflow before being merged into the `main` branch. The checks are distributed across several jobs. Each job runs on a separate build agent. Most of them can run concurrently. Many of checks build and test the library code in both the [`beta` and `stable` build flavors](../../docs/references/beta-only-features.md). For such jobs, we use a [job matrix](https://docs.github.com/en/actions/using-jobs/using-a-matrix-for-your-jobs) to run an instance of the job for each build flavor. The following high-level description of the checks calls out which checks are build-flavor aware. @@ -38,6 +38,6 @@ Many of checks build and test the library code in both the [`beta` and `stable` - Informational jobs to track jest tests coverage (`compare_jest_tests_coverage`, `update_jest_coverage_report`): These jobs track the jest tests coverage (lines, functions, statements, branches) for `@azure/communication-react` built in the previous steps. Any differences in the coverage are reported as Pull Request comments, _but do not block Pull Request from being merged_. This jobs are build flavor aware. -- Informational jobs to track sample bundle size (`compare_base_bundle_stats`, `update_base_bundle_report`): These jobs track the expected bundle size of the sample applications built in the previous steps. Any differences in the size are reported as Pull Request comments, _but do not block Pull Request from being merged_. This job is not build flavor aware. +- Informational jobs to track sample bundle size (`compare_base_bundle_stats`, `update_base_bundle_report`): These jobs track the expected bundle size of the sample applications built in the previous steps. Any differences in the size are reported as Pull Request comments. If the differences are above a threshold, it will block the Pull Request from being merged. Pull Request owners can add a `significant bundle size change` tag to unblock the merge. This job is not build flavor aware. - `check_failure`: This is a meta-job that only applies to _post-submit_ workflow run (which re-uses the same `ci.yml` definition). It opens a new GitHub issue in the repository if any fundamental step in the jobs above fails on post-submit workflow run, because it indicates a problem with the CI infrastructure or a bug in the product on `main`. This job is not build flavor aware. diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 97cd54deb88..cbce538c976 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -80,7 +80,7 @@ jobs: run: rush lint # Builds - name: Build Packages - run: rush build -t @azure/communication-react + run: rush build -v -t @azure/communication-react # Type check test folder # - must be run after building all packlets because it depends on compiled packlet dependencies # - must be run only on beta flavor build because the browser test code is not conditional compiled @@ -95,7 +95,7 @@ jobs: then echo "Success, no new api changes found." else - echo "API CHANGES FOUND in ${{ matrix.flavor }} flavor - PLEASE RUN \"${{ matrix.flavor == 'stable' && 'rush switch-flavor:stable &&' || '' }} rush build -t @azure/communication-react\"" + echo "API CHANGES FOUND in ${{ matrix.flavor }} flavor - PLEASE RUN \"${{ matrix.flavor == 'stable' && 'rush switch-flavor:stable &&' || '' }} rush build -v -t @azure/communication-react\"" echo "Changes:" git status ${{ matrix.flavor != 'stable' && '**/review/beta/**' || '**/review/stable/**' }}.md -s exit 1 @@ -147,7 +147,7 @@ jobs: run: node ./common/scripts/install-dependencies-ci.mjs ${{ matrix.flavor }} # Build and test - name: Build Packages - run: rush build -t @azure/communication-react + run: rush build -v -t @azure/communication-react - name: Test Packages run: rush test:ci-coverage -t @azure/communication-react env: @@ -246,7 +246,7 @@ jobs: # Builds - name: Build Packages if: ${{ matrix.flavor == 'beta-release'}} - run: rush build -t @azure/communication-react + run: rush build -v -t @azure/communication-react # # Type check test folder # # - must be run after building all packlets because it depends on compiled packlet dependencies # # - must be run only on beta flavor build because the browser test code is not conditional compiled @@ -298,7 +298,7 @@ jobs: - name: Install packlets used by browser tests run: | cd packages/react-composites - rush build -t . + rush build -v -t . - name: Call Composite Visual Regression Tests id: visualregressiontests run: | @@ -365,7 +365,7 @@ jobs: - name: Install packlets used by browser tests run: | cd packages/react-composites - rush build -t . + rush build -v -t . - name: Chat Composite Visual Regression Tests id: visualregressiontests run: | @@ -432,7 +432,7 @@ jobs: - name: Install packlets used by browser tests run: | cd packages/react-composites - rush build -t . + rush build -v -t . - name: CallWithChatComposite Visual Regression Tests id: visualregressiontests run: | @@ -495,7 +495,7 @@ jobs: # This is needed because react-components depends on acs-ui-common and # acs-ui-common specifies main/module variables in package.json - name: Build Common Package - run: rush build -t acs-ui-common + run: rush build -v -t acs-ui-common - name: Components Visual Regression Tests id: visualregressiontests run: | @@ -573,7 +573,7 @@ jobs: - name: Install Dependencies run: node ./common/scripts/install-dependencies-ci.mjs ${{ matrix.flavor }} - name: Build dependencies - run: rush build -t @azure/communication-react + run: rush build -v -t @azure/communication-react - name: Build run: rush build:minify -o calling - name: Tests @@ -605,7 +605,7 @@ jobs: - name: Install Dependencies run: node ./common/scripts/install-dependencies-ci.mjs ${{ matrix.flavor }} - name: Build dependencies - run: rush build -t @azure/communication-react + run: rush build -v -t @azure/communication-react - name: Build run: rush build:minify -o chat - name: Tests @@ -637,7 +637,7 @@ jobs: - name: Install Dependencies run: node ./common/scripts/install-dependencies-ci.mjs ${{ matrix.flavor }} - name: Build dependencies - run: rush build -t @azure/communication-react + run: rush build -v -t @azure/communication-react - name: Build run: rush build:minify -o callwithchat - name: Tests @@ -649,6 +649,32 @@ jobs: name: CallWithChat-report path: samples/CallWithChat/dist/build/report.json + build_calling_stateful_samples: + needs: get_matrix + name: 'Build Calling Stateful Samples (${{ matrix.flavor }})' + runs-on: ubuntu-latest + strategy: + matrix: ${{ fromJSON(needs.get_matrix.outputs.matrix) }} + steps: + - uses: actions/checkout@v4 + - name: Use Node.js + uses: actions/setup-node@v4 + with: + node-version: 'lts/*' + - name: Restore node_modules from cache + uses: actions/cache@v4 + with: + path: common/temp/pnpm-store + key: ${{ runner.os }}-${{ hashFiles('common/config/rush/pnpm-lock.yaml') }} + - name: Install Dependencies + run: node ./common/scripts/install-dependencies-ci.mjs ${{ matrix.flavor }} + - name: Build dependencies + run: rush build -t @azure/communication-react + - name: Build + run: rush build -o calling-stateful-samples + - name: Tests + run: rush test -o calling-stateful-samples + build_static_html_composites_sample: needs: get_matrix name: 'Build And Test Static HTML Composites Sample (${{ matrix.flavor }})' @@ -670,7 +696,7 @@ jobs: with: chrome-version: 120.0.6099 - name: Build - run: rush build -t sample-static-html-composites + run: rush build -v -t sample-static-html-composites - name: Visual Regression Tests id: visualregressiontests run: | @@ -720,7 +746,7 @@ jobs: with: chrome-version: 120.0.6099 - name: Build - run: rush build -t component-examples + run: rush build -v -t component-examples - name: Visual Regression Tests id: visualregressiontests run: | @@ -791,18 +817,46 @@ jobs: issue-number: ${{ github.event.pull_request.number }} comment-author: 'github-actions[bot]' body-includes: '## ${{ matrix.app }} bundle size is' - - name: Create or update comment - uses: peter-evans/create-or-update-comment@v2 + - name: Checkout repository + uses: actions/checkout@v4 + - name: Delete existing comment + uses: actions/github-script@v4 with: - comment-id: ${{ steps.fc.outputs.comment-id }} - issue-number: ${{ github.event.pull_request.number }} - body: | - ## ${{ matrix.app }} bundle size is ***${{ steps.bundles.outputs.change }}***. - - Current size: ${{ steps.bundles.outputs.current_size }} - - Base size: ${{ steps.bundles.outputs.base_size}} - - Diff size: ${{ steps.bundles.outputs.diff}} - edit-mode: replace - + github-token: ${{ secrets.GITHUB_TOKEN }} + script: | + const commentId = '${{ steps.fc.outputs.comment-id }}' + if (commentId) { + await github.issues.deleteComment({ + owner: context.repo.owner, + repo: context.repo.repo, + comment_id: commentId + }) + } + - name: Post new comment + uses: actions/github-script@v4 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + script: | + await github.issues.createComment({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: context.issue.number, + body: `## ${{ matrix.app }} bundle size is ***${{ steps.bundles.outputs.change }}***. + - Current size: ${{ steps.bundles.outputs.current_size }} + - Base size: ${{ steps.bundles.outputs.base_size }} + - Diff size: ${{ steps.bundles.outputs.diff }}` + }); + - name: Check whether the bundle size is increased significantly + if: ${{ github.event_name == 'pull_request' && !contains( github.event.pull_request.labels.*.name, 'significant bundle size change') }} + run: | + significantBundleSizeThreshold=800 + app="${{ matrix.app }}" + bundleSizeDiff="${{ steps.bundles.outputs.diff }}" + if [ "$bundleSizeDiff" -ge "$significantBundleSizeThreshold" ]; then + echo "The bundle size diff for $app is greater than the threshold of $significantBundleSizeThreshold kb! If the bundle size increase is intended, please add \`significant bundle size change\` label to the PR." >&2 + exit 1 + fi + echo "Bundle size diff for $app is below the threshold of $significantBundleSizeThreshold. All is good!" update_base_bundle_report: runs-on: ubuntu-latest name: Upload bundle size report to gist - ${{ matrix.app }} diff --git a/change-beta/@azure-communication-react-0a7c2e93-9abf-4776-879f-87c5f9fd9271.json b/change-beta/@azure-communication-react-0a7c2e93-9abf-4776-879f-87c5f9fd9271.json new file mode 100644 index 00000000000..57578f075a0 --- /dev/null +++ b/change-beta/@azure-communication-react-0a7c2e93-9abf-4776-879f-87c5f9fd9271.json @@ -0,0 +1,9 @@ +{ + "type": "patch", + "area": "fix", + "workstream": "A11y", + "comment": "Remove unnecessary disabled prop from label", + "packageName": "@azure/communication-react", + "email": "edwardlee@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/change-beta/@azure-communication-react-19050629-62ab-4bee-b9e9-0049c5804676.json b/change-beta/@azure-communication-react-19050629-62ab-4bee-b9e9-0049c5804676.json new file mode 100644 index 00000000000..3baac871206 --- /dev/null +++ b/change-beta/@azure-communication-react-19050629-62ab-4bee-b9e9-0049c5804676.json @@ -0,0 +1,9 @@ +{ + "type": "prerelease", + "area": "feature", + "workstream": "", + "comment": "Update the reconnecting RemoteUFD according to figma", + "packageName": "@azure/communication-react", + "email": "jiangnanhello@live.com", + "dependentChangeType": "patch" +} diff --git a/change-beta/@azure-communication-react-193881fb-22bd-4803-ace2-f833e2d4de93.json b/change-beta/@azure-communication-react-193881fb-22bd-4803-ace2-f833e2d4de93.json new file mode 100644 index 00000000000..95968fc6cc2 --- /dev/null +++ b/change-beta/@azure-communication-react-193881fb-22bd-4803-ace2-f833e2d4de93.json @@ -0,0 +1,9 @@ +{ + "type": "prerelease", + "area": "feature", + "workstream": "RTT", + "comment": "RTT Modal Component", + "packageName": "@azure/communication-react", + "email": "96077406+carocao-msft@users.noreply.github.com", + "dependentChangeType": "patch" +} diff --git a/change-beta/@azure-communication-react-27b510f4-06e8-4bad-b2cd-bd161ee4156c.json b/change-beta/@azure-communication-react-27b510f4-06e8-4bad-b2cd-bd161ee4156c.json new file mode 100644 index 00000000000..9aa7859f0b5 --- /dev/null +++ b/change-beta/@azure-communication-react-27b510f4-06e8-4bad-b2cd-bd161ee4156c.json @@ -0,0 +1,9 @@ +{ + "type": "minor", + "area": "improvement", + "workstream": "Dependency Update", + "comment": "Updated Chat SDK and Signaling to Latest Stable Release", + "packageName": "@azure/communication-react", + "email": "109105353+jpeng-ms@users.noreply.github.com", + "dependentChangeType": "patch" +} diff --git a/change-beta/@azure-communication-react-3f2cb505-b6c4-4379-81fb-240ccd1eea31.json b/change-beta/@azure-communication-react-3f2cb505-b6c4-4379-81fb-240ccd1eea31.json new file mode 100644 index 00000000000..d5c278939ed --- /dev/null +++ b/change-beta/@azure-communication-react-3f2cb505-b6c4-4379-81fb-240ccd1eea31.json @@ -0,0 +1,9 @@ +{ + "type": "prerelease", + "area": "fix", + "workstream": "A11y", + "comment": "Add Close aria label for spotlight prompt", + "packageName": "@azure/communication-react", + "email": "edwardlee@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/change-beta/@azure-communication-react-88f67533-e295-47ba-b755-11969a29471e.json b/change-beta/@azure-communication-react-88f67533-e295-47ba-b755-11969a29471e.json new file mode 100644 index 00000000000..92db015a4a6 --- /dev/null +++ b/change-beta/@azure-communication-react-88f67533-e295-47ba-b755-11969a29471e.json @@ -0,0 +1,9 @@ +{ + "type": "prerelease", + "area": "fix", + "workstream": "a11y", + "comment": "Add Close aria label for spotlight prompt", + "packageName": "@azure/communication-react", + "email": "edwardlee@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/change-beta/@azure-communication-react-b47e432f-c070-4915-9066-76577513519a.json b/change-beta/@azure-communication-react-b47e432f-c070-4915-9066-76577513519a.json new file mode 100644 index 00000000000..03cd5634dd8 --- /dev/null +++ b/change-beta/@azure-communication-react-b47e432f-c070-4915-9066-76577513519a.json @@ -0,0 +1,9 @@ +{ + "type": "prerelease", + "area": "feature", + "workstream": "RTT", + "comment": "RTT component for single line of RTT", + "packageName": "@azure/communication-react", + "email": "96077406+carocao-msft@users.noreply.github.com", + "dependentChangeType": "patch" +} diff --git a/change-beta/@azure-communication-react-d5d89289-b2e5-4af7-8ae6-b7f148d46345.json b/change-beta/@azure-communication-react-d5d89289-b2e5-4af7-8ae6-b7f148d46345.json new file mode 100644 index 00000000000..30dfe37d391 --- /dev/null +++ b/change-beta/@azure-communication-react-d5d89289-b2e5-4af7-8ae6-b7f148d46345.json @@ -0,0 +1,9 @@ +{ + "type": "prerelease", + "area": "feature", + "workstream": "RTT", + "comment": "RTT Disclosure Banner", + "packageName": "@azure/communication-react", + "email": "96077406+carocao-msft@users.noreply.github.com", + "dependentChangeType": "patch" +} diff --git a/change/@azure-communication-react-0a7c2e93-9abf-4776-879f-87c5f9fd9271.json b/change/@azure-communication-react-0a7c2e93-9abf-4776-879f-87c5f9fd9271.json new file mode 100644 index 00000000000..57578f075a0 --- /dev/null +++ b/change/@azure-communication-react-0a7c2e93-9abf-4776-879f-87c5f9fd9271.json @@ -0,0 +1,9 @@ +{ + "type": "patch", + "area": "fix", + "workstream": "A11y", + "comment": "Remove unnecessary disabled prop from label", + "packageName": "@azure/communication-react", + "email": "edwardlee@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/change/@azure-communication-react-27b510f4-06e8-4bad-b2cd-bd161ee4156c.json b/change/@azure-communication-react-27b510f4-06e8-4bad-b2cd-bd161ee4156c.json new file mode 100644 index 00000000000..9aa7859f0b5 --- /dev/null +++ b/change/@azure-communication-react-27b510f4-06e8-4bad-b2cd-bd161ee4156c.json @@ -0,0 +1,9 @@ +{ + "type": "minor", + "area": "improvement", + "workstream": "Dependency Update", + "comment": "Updated Chat SDK and Signaling to Latest Stable Release", + "packageName": "@azure/communication-react", + "email": "109105353+jpeng-ms@users.noreply.github.com", + "dependentChangeType": "patch" +} diff --git a/common/config/babel/features.js b/common/config/babel/features.js index 2bf10c4db2f..015fd69fd8c 100644 --- a/common/config/babel/features.js +++ b/common/config/babel/features.js @@ -24,7 +24,9 @@ module.exports = { // Feature for showing dtmp dialer by default "dtmf-dialer-on-by-default", // Feature for together mode - "together-mode" + "together-mode", + // Feature for RTT + "rtt" ], beta: [ "call-readiness", diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 12dbaece7f7..edeee98ad7a 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -35,9 +35,9 @@ dependencies: '@rush-temp/calling-stateful-client': specifier: file:./projects/calling-stateful-client.tgz version: file:projects/calling-stateful-client.tgz - '@rush-temp/callingstateful': - specifier: file:./projects/callingstateful.tgz - version: file:projects/callingstateful.tgz + '@rush-temp/calling-stateful-samples': + specifier: file:./projects/calling-stateful-samples.tgz + version: file:projects/calling-stateful-samples.tgz '@rush-temp/callwithchat': specifier: file:./projects/callwithchat.tgz version: file:projects/callwithchat.tgz @@ -2888,15 +2888,6 @@ packages: jsdoc-type-pratt-parser: 1.1.1 dev: false - /@esbuild/aix-ppc64@0.23.1: - resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - requiresBuild: true - dev: false - optional: true - /@esbuild/android-arm64@0.18.20: resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} engines: {node: '>=12'} @@ -2906,15 +2897,6 @@ packages: dev: false optional: true - /@esbuild/android-arm64@0.23.1: - resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: false - optional: true - /@esbuild/android-arm@0.18.20: resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} engines: {node: '>=12'} @@ -2924,15 +2906,6 @@ packages: dev: false optional: true - /@esbuild/android-arm@0.23.1: - resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: false - optional: true - /@esbuild/android-x64@0.18.20: resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} engines: {node: '>=12'} @@ -2942,15 +2915,6 @@ packages: dev: false optional: true - /@esbuild/android-x64@0.23.1: - resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: false - optional: true - /@esbuild/darwin-arm64@0.18.20: resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} engines: {node: '>=12'} @@ -2960,15 +2924,6 @@ packages: dev: false optional: true - /@esbuild/darwin-arm64@0.23.1: - resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - /@esbuild/darwin-x64@0.18.20: resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} engines: {node: '>=12'} @@ -2978,15 +2933,6 @@ packages: dev: false optional: true - /@esbuild/darwin-x64@0.23.1: - resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - /@esbuild/freebsd-arm64@0.18.20: resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} engines: {node: '>=12'} @@ -2996,15 +2942,6 @@ packages: dev: false optional: true - /@esbuild/freebsd-arm64@0.23.1: - resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: false - optional: true - /@esbuild/freebsd-x64@0.18.20: resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} engines: {node: '>=12'} @@ -3014,15 +2951,6 @@ packages: dev: false optional: true - /@esbuild/freebsd-x64@0.23.1: - resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: false - optional: true - /@esbuild/linux-arm64@0.18.20: resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} engines: {node: '>=12'} @@ -3032,15 +2960,6 @@ packages: dev: false optional: true - /@esbuild/linux-arm64@0.23.1: - resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true - /@esbuild/linux-arm@0.18.20: resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} engines: {node: '>=12'} @@ -3050,15 +2969,6 @@ packages: dev: false optional: true - /@esbuild/linux-arm@0.23.1: - resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: false - optional: true - /@esbuild/linux-ia32@0.18.20: resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} engines: {node: '>=12'} @@ -3068,15 +2978,6 @@ packages: dev: false optional: true - /@esbuild/linux-ia32@0.23.1: - resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: false - optional: true - /@esbuild/linux-loong64@0.18.20: resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} engines: {node: '>=12'} @@ -3086,15 +2987,6 @@ packages: dev: false optional: true - /@esbuild/linux-loong64@0.23.1: - resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - requiresBuild: true - dev: false - optional: true - /@esbuild/linux-mips64el@0.18.20: resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} engines: {node: '>=12'} @@ -3104,15 +2996,6 @@ packages: dev: false optional: true - /@esbuild/linux-mips64el@0.23.1: - resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: false - optional: true - /@esbuild/linux-ppc64@0.18.20: resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} engines: {node: '>=12'} @@ -3122,15 +3005,6 @@ packages: dev: false optional: true - /@esbuild/linux-ppc64@0.23.1: - resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: false - optional: true - /@esbuild/linux-riscv64@0.18.20: resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} engines: {node: '>=12'} @@ -3140,15 +3014,6 @@ packages: dev: false optional: true - /@esbuild/linux-riscv64@0.23.1: - resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: false - optional: true - /@esbuild/linux-s390x@0.18.20: resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} engines: {node: '>=12'} @@ -3158,15 +3023,6 @@ packages: dev: false optional: true - /@esbuild/linux-s390x@0.23.1: - resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: false - optional: true - /@esbuild/linux-x64@0.18.20: resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} engines: {node: '>=12'} @@ -3176,15 +3032,6 @@ packages: dev: false optional: true - /@esbuild/linux-x64@0.23.1: - resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false - optional: true - /@esbuild/netbsd-x64@0.18.20: resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} engines: {node: '>=12'} @@ -3194,24 +3041,6 @@ packages: dev: false optional: true - /@esbuild/netbsd-x64@0.23.1: - resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: false - optional: true - - /@esbuild/openbsd-arm64@0.23.1: - resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - requiresBuild: true - dev: false - optional: true - /@esbuild/openbsd-x64@0.18.20: resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} engines: {node: '>=12'} @@ -3221,15 +3050,6 @@ packages: dev: false optional: true - /@esbuild/openbsd-x64@0.23.1: - resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: false - optional: true - /@esbuild/sunos-x64@0.18.20: resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} engines: {node: '>=12'} @@ -3239,15 +3059,6 @@ packages: dev: false optional: true - /@esbuild/sunos-x64@0.23.1: - resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: false - optional: true - /@esbuild/win32-arm64@0.18.20: resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} engines: {node: '>=12'} @@ -3257,15 +3068,6 @@ packages: dev: false optional: true - /@esbuild/win32-arm64@0.23.1: - resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: false - optional: true - /@esbuild/win32-ia32@0.18.20: resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} engines: {node: '>=12'} @@ -3275,15 +3077,6 @@ packages: dev: false optional: true - /@esbuild/win32-ia32@0.23.1: - resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: false - optional: true - /@esbuild/win32-x64@0.18.20: resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} engines: {node: '>=12'} @@ -3293,15 +3086,6 @@ packages: dev: false optional: true - /@esbuild/win32-x64@0.23.1: - resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: false - optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.57.1): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -6537,28 +6321,6 @@ packages: - utf-8-validate dev: false - /@storybook/core@8.3.5: - resolution: {integrity: sha512-GOGfTvdioNa/n+Huwg4u/dsyYyBcM+gEcdxi3B7i5x4yJ3I912KoVshumQAOF2myKSRdI8h8aGWdx7nnjd0+5Q==} - dependencies: - '@storybook/csf': 0.1.11 - '@types/express': 4.17.21 - better-opn: 3.0.2 - browser-assert: 1.2.1 - esbuild: 0.23.1 - esbuild-register: 3.6.0(esbuild@0.23.1) - express: 4.21.1 - jsdoc-type-pratt-parser: 4.1.0 - process: 0.11.10 - recast: 0.23.9 - semver: 7.6.3 - util: 0.12.5 - ws: 8.18.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - dev: false - /@storybook/csf-plugin@8.2.6(storybook@8.2.6): resolution: {integrity: sha512-USn7E/bMQYVqvFBuW6d9rKoSuCImjk0BAmc/0wIOuMQ/yQNp2Xze0m8eVkNHUIUDokyx0TXDjRjwq10Xxk16ag==} peerDependencies: @@ -6599,14 +6361,14 @@ packages: react-dom: 18.3.1(react@18.3.1) dev: false - /@storybook/instrumenter@8.2.6(storybook@8.3.5): + /@storybook/instrumenter@8.2.6(storybook@8.2.6): resolution: {integrity: sha512-RxtpcMTUSq8/wPM6cR6EXVrPEiNuRbC71cIFVFZagOFYvnnOKwSPV+GOLPK0wxMbGB4c5/+Xe8ADefmZTvxOsA==} peerDependencies: storybook: ^8.2.6 dependencies: '@storybook/global': 5.0.0 '@vitest/utils': 1.6.0 - storybook: 8.3.5 + storybook: 8.2.6(@babel/preset-env@7.23.9) util: 0.12.5 dev: false @@ -6823,19 +6585,19 @@ packages: - ts-node dev: false - /@storybook/test@8.2.6(@types/jest@29.5.13)(jest@29.7.0)(storybook@8.3.5): + /@storybook/test@8.2.6(@types/jest@29.5.13)(jest@29.7.0)(storybook@8.2.6): resolution: {integrity: sha512-nTzNxReBcMRlX1+8PNU/MuA9ArFbeQhfZXMBIwJJoHOhnNe1knYpyn1++xINxAHKOh0BBhQ0NIMoKdcGmW3V6w==} peerDependencies: storybook: ^8.2.6 dependencies: '@storybook/csf': 0.1.11 - '@storybook/instrumenter': 8.2.6(storybook@8.3.5) + '@storybook/instrumenter': 8.2.6(storybook@8.2.6) '@testing-library/dom': 10.1.0 '@testing-library/jest-dom': 6.4.5(@types/jest@29.5.13)(jest@29.7.0) '@testing-library/user-event': 14.5.2(@testing-library/dom@10.1.0) '@vitest/expect': 1.6.0 '@vitest/spy': 1.6.0 - storybook: 8.3.5 + storybook: 8.2.6(@babel/preset-env@7.23.9) util: 0.12.5 transitivePeerDependencies: - '@jest/globals' @@ -8764,13 +8526,6 @@ packages: resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==} dev: false - /better-opn@3.0.2: - resolution: {integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==} - engines: {node: '>=12.0.0'} - dependencies: - open: 8.4.2 - dev: false - /big.js@5.2.2: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} dev: false @@ -10419,17 +10174,6 @@ packages: - supports-color dev: false - /esbuild-register@3.6.0(esbuild@0.23.1): - resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==} - peerDependencies: - esbuild: '>=0.12 <1' - dependencies: - debug: 4.3.7(supports-color@5.5.0) - esbuild: 0.23.1 - transitivePeerDependencies: - - supports-color - dev: false - /esbuild@0.18.20: resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} engines: {node: '>=12'} @@ -10460,38 +10204,6 @@ packages: '@esbuild/win32-x64': 0.18.20 dev: false - /esbuild@0.23.1: - resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} - engines: {node: '>=18'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/aix-ppc64': 0.23.1 - '@esbuild/android-arm': 0.23.1 - '@esbuild/android-arm64': 0.23.1 - '@esbuild/android-x64': 0.23.1 - '@esbuild/darwin-arm64': 0.23.1 - '@esbuild/darwin-x64': 0.23.1 - '@esbuild/freebsd-arm64': 0.23.1 - '@esbuild/freebsd-x64': 0.23.1 - '@esbuild/linux-arm': 0.23.1 - '@esbuild/linux-arm64': 0.23.1 - '@esbuild/linux-ia32': 0.23.1 - '@esbuild/linux-loong64': 0.23.1 - '@esbuild/linux-mips64el': 0.23.1 - '@esbuild/linux-ppc64': 0.23.1 - '@esbuild/linux-riscv64': 0.23.1 - '@esbuild/linux-s390x': 0.23.1 - '@esbuild/linux-x64': 0.23.1 - '@esbuild/netbsd-x64': 0.23.1 - '@esbuild/openbsd-arm64': 0.23.1 - '@esbuild/openbsd-x64': 0.23.1 - '@esbuild/sunos-x64': 0.23.1 - '@esbuild/win32-arm64': 0.23.1 - '@esbuild/win32-ia32': 0.23.1 - '@esbuild/win32-x64': 0.23.1 - dev: false - /escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -13429,11 +13141,6 @@ packages: engines: {node: '>=12.0.0'} dev: false - /jsdoc-type-pratt-parser@4.1.0: - resolution: {integrity: sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==} - engines: {node: '>=12.0.0'} - dev: false - /jsdom@20.0.3: resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} engines: {node: '>=14'} @@ -16968,17 +16675,6 @@ packages: - utf-8-validate dev: false - /storybook@8.3.5: - resolution: {integrity: sha512-hYQVtP2l+3kO8oKDn4fjXXQYxgTRsj/LaV6lUMJH0zt+OhVmDXKJLxmdUP4ieTm0T8wEbSYosFavgPcQZlxRfw==} - hasBin: true - dependencies: - '@storybook/core': 8.3.5 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - dev: false - /stream-combiner@0.0.4: resolution: {integrity: sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==} dependencies: @@ -19123,7 +18819,7 @@ packages: dev: false file:projects/acs-ui-common.tgz: - resolution: {integrity: sha512-vZc45uj3HlWLnS/mDsHvxgOqw/0SeZJuLYqecDlTFLSvZAhs1gU0mopBoAQFeP7xNheMyZNzktANX7cT1P9a8g==, tarball: file:projects/acs-ui-common.tgz} + resolution: {integrity: sha512-ft9269IeRgSjypL5RFTOX7YnI4tiIU1JVfycSTeLbOmMA0Yns7IKDqtWdUBRN3z7qCAdysQzwgQGFMZM+nEvpg==, tarball: file:projects/acs-ui-common.tgz} name: '@rush-temp/acs-ui-common' version: 0.0.0 dependencies: @@ -19167,7 +18863,7 @@ packages: dev: false file:projects/acs-ui-javascript-loaders.tgz: - resolution: {integrity: sha512-7EmvlHJNr2XAnicuR/qzHblffD5Ut003/J2utLQTjE/zPqNf/fkX3elrZUb6p3LbiTjK/NH2AF3CAUkq2euMvw==, tarball: file:projects/acs-ui-javascript-loaders.tgz} + resolution: {integrity: sha512-xaAUGJEih921VOM0XnQmlQStt/P+8CX1i2LKUrZ9/vxuArBVg1SDNigsraoV6MLqXQ7euGk1vKadtAqJVmW9Hg==, tarball: file:projects/acs-ui-javascript-loaders.tgz} name: '@rush-temp/acs-ui-javascript-loaders' version: 0.0.0 dependencies: @@ -19214,7 +18910,7 @@ packages: dev: false file:projects/calling-component-bindings.tgz: - resolution: {integrity: sha512-2R5tIqqPdeVhEPB/Ia1un8FQRxBR8KxEztLVf0TWUFgx3d9l1a50VKQAGhdy0Ci5TljcKACtFhsICYvYOuy3oA==, tarball: file:projects/calling-component-bindings.tgz} + resolution: {integrity: sha512-8ZMGaChZ2De4R6lH+IM6bnh52+LkATiwbRoAm1eGILvrL0E07xtWg79nkWJ+UIS5IAakvz/sZxuqNnFSMMk9tg==, tarball: file:projects/calling-component-bindings.tgz} name: '@rush-temp/calling-component-bindings' version: 0.0.0 dependencies: @@ -19261,7 +18957,7 @@ packages: dev: false file:projects/calling-stateful-client.tgz: - resolution: {integrity: sha512-sBS918nZfb+veO+AqjtdjjeeQ2HUKuCoRlkijvkIhYD7w4f++KkyNkKDP4SkpJNj0SnaFmhjXlhC1UNqg4VWmA==, tarball: file:projects/calling-stateful-client.tgz} + resolution: {integrity: sha512-EqXh6NMt50j3EsfxSFdjkDM4xRPDgWpIrH5iAHGMPErL/4HKYr7PxRy8RaW7C+BJ0Y5JVdKiCVXu970TwOxZlw==, tarball: file:projects/calling-stateful-client.tgz} name: '@rush-temp/calling-stateful-client' version: 0.0.0 dependencies: @@ -19308,9 +19004,9 @@ packages: - ts-node dev: false - file:projects/calling.tgz: - resolution: {integrity: sha512-hWEP53OtFw5CXgcsQxE/Q45yeAhNKnFmkt2fl2j4C83o5b/Q+k55Old7BWLehX1JhZttatxlYto9+cSMye7Mzw==, tarball: file:projects/calling.tgz} - name: '@rush-temp/calling' + file:projects/calling-stateful-samples.tgz: + resolution: {integrity: sha512-xd5/GnyNrgwN11C1KFTnpGQVSU1PkosmkUWEnDe6j+o56bHNDhKb4mtEMo1lb+ZOEMJcVVm2iDR1dg+ZvAbAGA==, tarball: file:projects/calling-stateful-samples.tgz} + name: '@rush-temp/calling-stateful-samples' version: 0.0.0 dependencies: '@azure/abort-controller': 1.1.0 @@ -19402,9 +19098,9 @@ packages: - utf-8-validate dev: false - file:projects/callingstateful.tgz: - resolution: {integrity: sha512-ZILUdr+pvegMKrDpPeS6nDaRi8AK/AJpxwgs04LrFw0dtoq8oxEqujI50DrMCZTsWo1vhwzMlII56OfU1vBNvQ==, tarball: file:projects/callingstateful.tgz} - name: '@rush-temp/callingstateful' + file:projects/calling.tgz: + resolution: {integrity: sha512-OEwVYl4flaaaCYBRhyNm8/t+X4UP9WPVn2X3nKQUtLJOKKMJwlA/37GltiTNYlofMQQO5RGBrSe4LbSSBGEjEQ==, tarball: file:projects/calling.tgz} + name: '@rush-temp/calling' version: 0.0.0 dependencies: '@azure/abort-controller': 1.1.0 @@ -19497,7 +19193,7 @@ packages: dev: false file:projects/callwithchat.tgz: - resolution: {integrity: sha512-ijcKSyYDGfG3zLpxJBQQHEV6jXWmtG9v8mW2WsTiY71T4HbNzbf0Nf9XER5YGhwUpaaEeGgaJcrad3F/iQaa4g==, tarball: file:projects/callwithchat.tgz} + resolution: {integrity: sha512-0+ZHG7ow4gSz21U6nMxAgUIZiIdY4QP8IfvODfPfsFx+YRaKzZjg4M/K5rIfq5vFxQp91sSldwDzekLwNq6ESg==, tarball: file:projects/callwithchat.tgz} name: '@rush-temp/callwithchat' version: 0.0.0 dependencies: @@ -19590,7 +19286,7 @@ packages: dev: false file:projects/chat-component-bindings.tgz: - resolution: {integrity: sha512-39Su3FD5veuaNDTE51FTTee6g3hAoEO6UB08i+XUe05s30WPx0DrNi0J7vC51hszeb4qD0Q88RIWxWj6GWHImw==, tarball: file:projects/chat-component-bindings.tgz} + resolution: {integrity: sha512-qlTVA1tbPIwZUlpVNjcSDsCAZ6q30FBvAY1gyGNXMGc9LhXv7JXtKwfQF8nu+VOumEZ5geSrMsBiKD6dulAsWw==, tarball: file:projects/chat-component-bindings.tgz} name: '@rush-temp/chat-component-bindings' version: 0.0.0 dependencies: @@ -19631,7 +19327,7 @@ packages: dev: false file:projects/chat-stateful-client.tgz: - resolution: {integrity: sha512-8BJmdbvWvWIjGwX+uNebLosPy/bOv4jCBP+vo2eoK4cUQpVvee5a3zDdMT/9GGnrYfqjf8dDN2QM8kHg4idwLg==, tarball: file:projects/chat-stateful-client.tgz} + resolution: {integrity: sha512-DRuv5cmyelo2se/DhDQ6bx9tCAF5sLSyPSOxRNatsGEEth8l1LAF4lJwq1PZ8Eg9lDWYYe9c7JnA8X+CsZLeSw==, tarball: file:projects/chat-stateful-client.tgz} name: '@rush-temp/chat-stateful-client' version: 0.0.0 dependencies: @@ -19682,7 +19378,7 @@ packages: dev: false file:projects/chat.tgz: - resolution: {integrity: sha512-DtbZZ8k8ZAzOR5oOWx4xiEZkWk36RlBQM498zoT/G9VCpzWLp+CKP48Q/nmqwRzBPYTAeaQMnUdd5110YTr/qA==, tarball: file:projects/chat.tgz} + resolution: {integrity: sha512-b7+oxlWGOgyTpKpsIDciR1+WsY1aPYRwOq5EZ1eexSQUcS7Jmg9ZmRrbAxu0Z64IoVv1GQLAdq9V3beYaVPOdw==, tarball: file:projects/chat.tgz} name: '@rush-temp/chat' version: 0.0.0 dependencies: @@ -19771,7 +19467,7 @@ packages: dev: false file:projects/check-treeshaking.tgz: - resolution: {integrity: sha512-9Rakl6FnpcNbSWPBhatE7LCYCpL7P7FyTTlp+VZJb3iiq/jjJMS4yq3z6oU3X6q3EHmh86JrEcBuuZJCpB0WUg==, tarball: file:projects/check-treeshaking.tgz} + resolution: {integrity: sha512-VNn58y9b9Ee5h5yqEcNNip6edSkwHEV+6M7jA7BUhFjEdVMzWU432awwgFkIUJG34EL+4Jxncdpeh+WiBmx0Gg==, tarball: file:projects/check-treeshaking.tgz} name: '@rush-temp/check-treeshaking' version: 0.0.0 dependencies: @@ -19799,7 +19495,7 @@ packages: dev: false file:projects/check-typescript-regression.tgz: - resolution: {integrity: sha512-9Y77mYo33dpmp7LGeOD6oxHnwJ3oeywEvzREyA08jgjLYprPVPNYiRheZzN/DUHadSF6yTYEaH4WBVN0M5EDDQ==, tarball: file:projects/check-typescript-regression.tgz} + resolution: {integrity: sha512-e9oJsnOJ2X+nt+TYZmSJgSDljBTJiOwO18FQSp2pa0UVZqmp+y5Y8xMcOZ4fPBsbcCEI/AkysswHXHVF/143jA==, tarball: file:projects/check-typescript-regression.tgz} name: '@rush-temp/check-typescript-regression' version: 0.0.0 dependencies: @@ -19817,7 +19513,7 @@ packages: dev: false file:projects/communication-react.tgz: - resolution: {integrity: sha512-d8otR7oQHPmCreeXsmYc7vCk/ga0NPN1aSZrcF6RJ7pSiPBj57s7Ex/sWIdEgATUgg5duD2sLqsehhqJHE5eeg==, tarball: file:projects/communication-react.tgz} + resolution: {integrity: sha512-L5HSwYQEJy93zi/Sgdm+8+OXXKGTeQHUrcZq92BYLh6IgqH34T4ScjvGR3ESm3yJt25Iy0Ap1HcNigTBI2FoMQ==, tarball: file:projects/communication-react.tgz} name: '@rush-temp/communication-react' version: 0.0.0 dependencies: @@ -19923,7 +19619,7 @@ packages: dev: false file:projects/component-examples.tgz: - resolution: {integrity: sha512-jB3fhTkhF53DiyQOu++uiKmVemCbGBjelKxGwWLsc0YhuqN5I9hLlDfqEWr1Bqrjt/ne2DgVckjzxonJGNxSDw==, tarball: file:projects/component-examples.tgz} + resolution: {integrity: sha512-ojGHb1EKe07lPmGB5VQeDnhWx+i41XN2ZM9k/nCL3DorQzrcM+2SSty4ivJuG6ra6u63U7pUTvb/H/Ho5XRw8g==, tarball: file:projects/component-examples.tgz} name: '@rush-temp/component-examples' version: 0.0.0 dependencies: @@ -19990,7 +19686,7 @@ packages: dev: false file:projects/config.tgz: - resolution: {integrity: sha512-DZRPyoZXKdFPiI92b08Lxi0PtgYkdwgdpPUNES9r+qwHObDfQxCCHt2TmfCFul3wD4pkQChOh+yPqBzI469Naw==, tarball: file:projects/config.tgz} + resolution: {integrity: sha512-xdEkh9H5mycFczOOmzU2Y+EADwSAA1UHjsxXEaEZjdQV7tborbQ3WIeYoOvlscUoqHelRd8qNVPAw3cJ/CPrvA==, tarball: file:projects/config.tgz} name: '@rush-temp/config' version: 0.0.0 dependencies: @@ -20013,7 +19709,7 @@ packages: dev: false file:projects/eslint-plugin-custom-rules.tgz: - resolution: {integrity: sha512-WiEiasS6UKxVSL15sHDgDutg5pklOchpqz+i6BXwdCH1HBPUAwMkWbz/xhCRiJQwpjI8Nmyfc0UKeLUp3s4L1Q==, tarball: file:projects/eslint-plugin-custom-rules.tgz} + resolution: {integrity: sha512-x1AbWT3cjJ6u8SMkv+SYREtmC1+YqIqGPHzFWKVrDOQdY95rNB26uZOPE/rPqKpx2Cm/5WlrxrXorb90V7cKcQ==, tarball: file:projects/eslint-plugin-custom-rules.tgz} name: '@rush-temp/eslint-plugin-custom-rules' version: 0.0.0 dependencies: @@ -20023,7 +19719,7 @@ packages: dev: false file:projects/fake-backends.tgz: - resolution: {integrity: sha512-XmBHO+PGIWUvAk+UBB/Iz8xkON+2hLfeubZdEFyRdd/tT2nuww9a+o8/96ruKui3ycvAcHEV1EE+JrOfu5beKA==, tarball: file:projects/fake-backends.tgz} + resolution: {integrity: sha512-mL+/gfDwyqorehzHtlp6kzd1Jfw2VeFF0Z87KlqXmPJKmtdHFEWU7XyqSpYdoOP94oGNBMwKHWKHRE3usz74vQ==, tarball: file:projects/fake-backends.tgz} name: '@rush-temp/fake-backends' version: 0.0.0 dependencies: @@ -20079,7 +19775,7 @@ packages: dev: false file:projects/react-components.tgz: - resolution: {integrity: sha512-EGnAYWzwx6wYBnAymnNKP6QQn2XVFvEIhaaseH41y/XJ2Q7oiffVizvkwoX1NzU9MPOj1spuma+loy6k34Cwjw==, tarball: file:projects/react-components.tgz} + resolution: {integrity: sha512-ToUtNfmu/kFoi8yQhrj0/67UafpxF4nGX0AKfQcO1/wQByK0fwcqvgQ98oKNZhe/64m/+oKGyhhuQIlx+Kumrw==, tarball: file:projects/react-components.tgz} name: '@rush-temp/react-components' version: 0.0.0 dependencies: @@ -20194,7 +19890,7 @@ packages: dev: false file:projects/react-composites.tgz: - resolution: {integrity: sha512-UJs1a/oug6jrh/IMpCIft4u93+12yNomRuwyOZZp2s2anu1mbe+aaiejYYTlVpixrJh2anzj4wtRup/VEkjJJg==, tarball: file:projects/react-composites.tgz} + resolution: {integrity: sha512-ttkr5FlETZsFqgyV4+drdV3gixGDExiTtAVtkarwCxbFppjDgR7y3IZS2yGHilqQ9Rwm/3TpHG+o5UqM1mhgFw==, tarball: file:projects/react-composites.tgz} name: '@rush-temp/react-composites' version: 0.0.0 dependencies: @@ -20313,7 +20009,7 @@ packages: dev: false file:projects/sample-automation-tests.tgz: - resolution: {integrity: sha512-CRI21r2mmYtY54rlzcuixOJyXcxD2HLLeZP6/MOkrrWJU4WDKHyy8wc7rMd64/IQZWPDslcXY3BUZ7RotMmPIg==, tarball: file:projects/sample-automation-tests.tgz} + resolution: {integrity: sha512-XDmCGxCqgUApZhO/8pLgfY8vo1LSxTukPfbPHiyJWa17NQiV+l/CGnrqN6gRnovee2CYWOvnBZMDC0001OH5qA==, tarball: file:projects/sample-automation-tests.tgz} name: '@rush-temp/sample-automation-tests' version: 0.0.0 dependencies: @@ -20338,7 +20034,7 @@ packages: dev: false file:projects/sample-static-html-composites.tgz: - resolution: {integrity: sha512-QeMgp0sku2yHeiJxYW9/KhvvZCbolULy6Qs6MuSURVU9asKdea5ZlKJm6M2sSoR1UYdpvoHx36I4PI9ywnhIgA==, tarball: file:projects/sample-static-html-composites.tgz} + resolution: {integrity: sha512-V/7FH0JAERQU2yhp43pRMHn0xMnkoYudMaD3PSYzqzg+DoquK/kqMnK0GnJDrF0Mnlkg1pYQaGdTLJjU7jBSww==, tarball: file:projects/sample-static-html-composites.tgz} name: '@rush-temp/sample-static-html-composites' version: 0.0.0 dependencies: @@ -20386,7 +20082,7 @@ packages: dev: false file:projects/scripts.tgz: - resolution: {integrity: sha512-Wx3UncMcgd97Uxtl1ZJixeM67LsE4Fg3vJFhwfAXlfpOIqkEmROdlGFkMIl20vvGPSgDvH3TwMhYcRCpHYU47A==, tarball: file:projects/scripts.tgz} + resolution: {integrity: sha512-Gz39L0FpcaiWmu0vIdx+ag3rElBIi12ECc4QgxWTV4SzlBOCZzDJKWddFdkqhNnqxrUWz7LuHOtSOgRW3tblJg==, tarball: file:projects/scripts.tgz} name: '@rush-temp/scripts' version: 0.0.0 dependencies: @@ -20406,7 +20102,7 @@ packages: dev: false file:projects/server.tgz: - resolution: {integrity: sha512-67arybcZAq+vbwJwUViC8dtvi5nZjtDzBJcBY3Sk+uFVwDKgXX0eUPsO0nlpBpJw9364O8eXdeCFA3wbW2cdXg==, tarball: file:projects/server.tgz} + resolution: {integrity: sha512-KgGle5UDKaHmwa5Wup8mRq6kMbrKMiUDZ0yjIQWgN9Ajw+n4nLqxrz+yBPzDyV5gIer6nxB7yKV6AuVqCO2xYQ==, tarball: file:projects/server.tgz} name: '@rush-temp/server' version: 0.0.0 dependencies: @@ -20487,7 +20183,7 @@ packages: dev: false file:projects/storybook8.tgz: - resolution: {integrity: sha512-sjLcO8xEgeGON8vMo3WjPmd1EPwCvL51leGOMOduyRM435uKXKkZ19wXcL4Ea7WhDxLBeWVVfebgwfN7u3hJOA==, tarball: file:projects/storybook8.tgz} + resolution: {integrity: sha512-wohRBeFgrSwen5eIizbn16QAaaOUa6zxkyJxBgEzf32b11iOyIaF8KvDQ0eiD7tonfCzK5BJrJc2BLp/hTW63Q==, tarball: file:projects/storybook8.tgz} name: '@rush-temp/storybook8' version: 0.0.0 dependencies: @@ -20521,7 +20217,7 @@ packages: '@storybook/preview-api': 8.2.6(storybook@8.2.6) '@storybook/react': 8.2.6(react-dom@18.3.1)(react@18.3.1)(storybook@8.2.6)(typescript@5.4.5) '@storybook/react-webpack5': 8.2.6(react-dom@18.3.1)(react@18.3.1)(storybook@8.2.6)(typescript@5.4.5) - '@storybook/test': 8.2.6(@types/jest@29.5.13)(jest@29.7.0)(storybook@8.3.5) + '@storybook/test': 8.2.6(@types/jest@29.5.13)(jest@29.7.0)(storybook@8.2.6) '@storybook/test-runner': 0.17.0(@types/node@20.14.12)(storybook@8.2.6)(ts-node@10.9.2) '@storybook/theming': 8.2.6(storybook@8.2.6) '@testing-library/jest-dom': 6.5.0 @@ -20584,12 +20280,14 @@ packages: uuid: 9.0.1 webpack: 5.95.0(webpack-cli@5.1.4) transitivePeerDependencies: + - '@jest/globals' - '@jest/transform' - '@jest/types' - '@rspack/core' - '@swc/core' - '@swc/helpers' - '@swc/wasm' + - '@types/bun' - '@types/eslint' - babel-plugin-macros - bufferutil @@ -20601,6 +20299,7 @@ packages: - supports-color - uglify-js - utf-8-validate + - vitest - webpack-cli - webpack-sources dev: false diff --git a/common/config/rush/variants/stable/common-versions.json b/common/config/rush/variants/stable/common-versions.json index d85c9731f4b..1c5bba44b85 100644 --- a/common/config/rush/variants/stable/common-versions.json +++ b/common/config/rush/variants/stable/common-versions.json @@ -27,8 +27,8 @@ // This is the version for stable build (please also update allowedAlternativeVersions below) "@azure/communication-calling": "^1.29.1", "@azure/communication-common": "2.3.0", - "@azure/communication-chat": "^1.5.2", - "@azure/communication-signaling": "1.0.0-beta.28", + "@azure/communication-chat": "^1.5.4", + "@azure/communication-signaling": "1.0.0-beta.29", "@azure/communication-calling-effects": "^1.1.1" }, @@ -60,8 +60,8 @@ // This is the version for stable build (please also update preferredVersions above) "@azure/communication-calling": ["^1.29.1"], "@azure/communication-common": ["2.3.0"], - "@azure/communication-chat": ["^1.5.2"], - "@azure/communication-signaling": ["1.0.0-beta.28"], + "@azure/communication-chat": ["^1.5.4"], + "@azure/communication-signaling": ["1.0.0-beta.29"], "@azure/communication-calling-effects": ["^1.1.1"], "typescript": [ // All projects should use this version by default diff --git a/common/config/rush/variants/stable/pnpm-lock.yaml b/common/config/rush/variants/stable/pnpm-lock.yaml index c012527cffb..56a25d9a4c8 100644 --- a/common/config/rush/variants/stable/pnpm-lock.yaml +++ b/common/config/rush/variants/stable/pnpm-lock.yaml @@ -12,14 +12,14 @@ dependencies: specifier: ^1.1.1 version: 1.1.1 '@azure/communication-chat': - specifier: ^1.5.2 - version: 1.5.2 + specifier: ^1.5.4 + version: 1.5.4 '@azure/communication-common': specifier: 2.3.0 version: 2.3.0 '@azure/communication-signaling': - specifier: 1.0.0-beta.28 - version: 1.0.0-beta.28 + specifier: 1.0.0-beta.29 + version: 1.0.0-beta.29 '@rush-temp/acs-ui-common': specifier: file:./projects/acs-ui-common.tgz version: file:projects/acs-ui-common.tgz @@ -35,9 +35,9 @@ dependencies: '@rush-temp/calling-stateful-client': specifier: file:./projects/calling-stateful-client.tgz version: file:projects/calling-stateful-client.tgz - '@rush-temp/callingstateful': - specifier: file:./projects/callingstateful.tgz - version: file:projects/callingstateful.tgz + '@rush-temp/calling-stateful-samples': + specifier: file:./projects/calling-stateful-samples.tgz + version: file:projects/calling-stateful-samples.tgz '@rush-temp/callwithchat': specifier: file:./projects/callwithchat.tgz version: file:projects/callwithchat.tgz @@ -151,13 +151,13 @@ packages: - supports-color dev: false - /@azure/communication-chat@1.5.2: - resolution: {integrity: sha512-PyfKRiX1Hy91h8tLEe8HN44Zvf+Px/tLtqyi8NGOPx2PvSMsQoilaqdoSgYhS3uuOCGQucvwOkROz1xVz0pYNQ==} + /@azure/communication-chat@1.5.4: + resolution: {integrity: sha512-sC5IACFEGgvGbt6qzL3kocdMbhuWkldkE0HHsUfRPokPKiK4IfVCpn2syJcc9R8ts6hk0N5XvEY04KM2yayhJg==} engines: {node: '>=18.0.0'} dependencies: '@azure/abort-controller': 2.1.2 '@azure/communication-common': 2.3.1 - '@azure/communication-signaling': 1.0.0-beta.28 + '@azure/communication-signaling': 1.0.0-beta.29 '@azure/core-auth': 1.8.0 '@azure/core-client': 1.9.2 '@azure/core-paging': 1.6.2 @@ -239,18 +239,22 @@ packages: - supports-color dev: false - /@azure/communication-signaling@1.0.0-beta.28: - resolution: {integrity: sha512-D1ujjaIiXPhePvjKlG+iYazYxLwPHSxD8WOJluCwptElcj1PslF70nmXDJw3udCLTYDbDgV+SrGpAHnJsyuh3Q==} + /@azure/communication-signaling@1.0.0-beta.29: + resolution: {integrity: sha512-bTNxJaS000wjtbLlH/nju3Off9uSybYeRVLvx1Y5k3ajb1rqVGUcsIduSEz1JBf+dRQx9pHRDCAEAXs/hOvzpg==} engines: {node: '>=8.0.0'} dependencies: '@azure/abort-controller': 1.1.0 '@azure/core-auth': 1.8.0 + '@azure/core-client': 1.9.2 + '@azure/core-rest-pipeline': 1.17.0 '@azure/core-tracing': 1.1.2 '@azure/core-util': 1.10.0 '@azure/logger': 1.1.4 events: 3.3.0 tslib: 2.7.0 uuid: 8.3.2 + transitivePeerDependencies: + - supports-color dev: false /@azure/core-auth@1.8.0: @@ -18930,9 +18934,9 @@ packages: - ts-node dev: false - file:projects/calling.tgz: - resolution: {integrity: sha512-OEwVYl4flaaaCYBRhyNm8/t+X4UP9WPVn2X3nKQUtLJOKKMJwlA/37GltiTNYlofMQQO5RGBrSe4LbSSBGEjEQ==, tarball: file:projects/calling.tgz} - name: '@rush-temp/calling' + file:projects/calling-stateful-samples.tgz: + resolution: {integrity: sha512-xd5/GnyNrgwN11C1KFTnpGQVSU1PkosmkUWEnDe6j+o56bHNDhKb4mtEMo1lb+ZOEMJcVVm2iDR1dg+ZvAbAGA==, tarball: file:projects/calling-stateful-samples.tgz} + name: '@rush-temp/calling-stateful-samples' version: 0.0.0 dependencies: '@azure/abort-controller': 1.1.0 @@ -19024,9 +19028,9 @@ packages: - utf-8-validate dev: false - file:projects/callingstateful.tgz: - resolution: {integrity: sha512-lDxSuvjFPtmwVHYTtb/Xv3d2qOVtY25VG2zH9JDRfy0VTalyHvbp7+fEEvFH1xy6KgC2TkoA7Xd9x8g68dDdPQ==, tarball: file:projects/callingstateful.tgz} - name: '@rush-temp/callingstateful' + file:projects/calling.tgz: + resolution: {integrity: sha512-OEwVYl4flaaaCYBRhyNm8/t+X4UP9WPVn2X3nKQUtLJOKKMJwlA/37GltiTNYlofMQQO5RGBrSe4LbSSBGEjEQ==, tarball: file:projects/calling.tgz} + name: '@rush-temp/calling' version: 0.0.0 dependencies: '@azure/abort-controller': 1.1.0 @@ -19119,13 +19123,13 @@ packages: dev: false file:projects/callwithchat.tgz: - resolution: {integrity: sha512-wUsxt2ZK/oxfbk/sf1yTIT4//ySzToIckMbDwMQQA+3oc+0k/J1tWiKQvAxHqmr9wcWd6m/cWnrjv6z2NzbsHw==, tarball: file:projects/callwithchat.tgz} + resolution: {integrity: sha512-0+ZHG7ow4gSz21U6nMxAgUIZiIdY4QP8IfvODfPfsFx+YRaKzZjg4M/K5rIfq5vFxQp91sSldwDzekLwNq6ESg==, tarball: file:projects/callwithchat.tgz} name: '@rush-temp/callwithchat' version: 0.0.0 dependencies: '@azure/abort-controller': 1.1.0 '@azure/communication-calling': 1.29.1 - '@azure/communication-chat': 1.5.2 + '@azure/communication-chat': 1.5.4 '@azure/communication-common': 2.3.1 '@azure/communication-identity': 1.3.1 '@azure/logger': 1.1.4 @@ -19211,11 +19215,11 @@ packages: dev: false file:projects/chat-component-bindings.tgz: - resolution: {integrity: sha512-d/V1vZ004bZ76cZxzyzPXFT/3tXc2d1ubEfb1YJlqnL6rkwzwZjKG6CJ8zYWsUqX6TH0KzvxNnfE5ksqL9yJoA==, tarball: file:projects/chat-component-bindings.tgz} + resolution: {integrity: sha512-qlTVA1tbPIwZUlpVNjcSDsCAZ6q30FBvAY1gyGNXMGc9LhXv7JXtKwfQF8nu+VOumEZ5geSrMsBiKD6dulAsWw==, tarball: file:projects/chat-component-bindings.tgz} name: '@rush-temp/chat-component-bindings' version: 0.0.0 dependencies: - '@azure/communication-chat': 1.5.2 + '@azure/communication-chat': 1.5.4 '@azure/communication-common': 2.3.1 '@azure/core-paging': 1.6.2 '@babel/cli': 7.25.6(@babel/core@7.25.2) @@ -19251,13 +19255,13 @@ packages: dev: false file:projects/chat-stateful-client.tgz: - resolution: {integrity: sha512-RW7AcMPuqm21QKNIt0V56ruGPmziCTPFjV6eMhPeMi4xVATL1ijzyPtU5dnVGsy4PC4PIEX3GtHjpqPSLxUzZg==, tarball: file:projects/chat-stateful-client.tgz} + resolution: {integrity: sha512-DRuv5cmyelo2se/DhDQ6bx9tCAF5sLSyPSOxRNatsGEEth8l1LAF4lJwq1PZ8Eg9lDWYYe9c7JnA8X+CsZLeSw==, tarball: file:projects/chat-stateful-client.tgz} name: '@rush-temp/chat-stateful-client' version: 0.0.0 dependencies: - '@azure/communication-chat': 1.5.2 + '@azure/communication-chat': 1.5.4 '@azure/communication-common': 2.3.1 - '@azure/communication-signaling': 1.0.0-beta.28 + '@azure/communication-signaling': 1.0.0-beta.29 '@azure/core-paging': 1.6.2 '@azure/logger': 1.1.4 '@babel/cli': 7.25.6(@babel/core@7.25.2) @@ -19301,12 +19305,12 @@ packages: dev: false file:projects/chat.tgz: - resolution: {integrity: sha512-Um96SE5um99+jRV4fdsIoJNwMp95n0gwO2u27LefM+g95W4FFe2x/iRPQ8lkeXFn7yWsRrE+t0ayt6xG730ODg==, tarball: file:projects/chat.tgz} + resolution: {integrity: sha512-b7+oxlWGOgyTpKpsIDciR1+WsY1aPYRwOq5EZ1eexSQUcS7Jmg9ZmRrbAxu0Z64IoVv1GQLAdq9V3beYaVPOdw==, tarball: file:projects/chat.tgz} name: '@rush-temp/chat' version: 0.0.0 dependencies: '@azure/abort-controller': 1.1.0 - '@azure/communication-chat': 1.5.2 + '@azure/communication-chat': 1.5.4 '@azure/communication-common': 2.3.1 '@azure/communication-identity': 1.3.1 '@azure/logger': 1.1.4 @@ -19436,13 +19440,13 @@ packages: dev: false file:projects/communication-react.tgz: - resolution: {integrity: sha512-lKoU5MmyeUk0XspuBtijAMkCPOMbG74B+TDDSP+AM6SQGn5m2B72KQOhPhyaH2ZQCmOHQR8QPwgUnnaCwmdHcg==, tarball: file:projects/communication-react.tgz} + resolution: {integrity: sha512-L5HSwYQEJy93zi/Sgdm+8+OXXKGTeQHUrcZq92BYLh6IgqH34T4ScjvGR3ESm3yJt25Iy0Ap1HcNigTBI2FoMQ==, tarball: file:projects/communication-react.tgz} name: '@rush-temp/communication-react' version: 0.0.0 dependencies: '@azure/communication-calling': 1.29.1 '@azure/communication-calling-effects': 1.1.1 - '@azure/communication-chat': 1.5.2 + '@azure/communication-chat': 1.5.4 '@azure/communication-common': 2.3.1 '@azure/core-auth': 1.8.0 '@azure/core-paging': 1.6.2 @@ -19541,12 +19545,12 @@ packages: dev: false file:projects/component-examples.tgz: - resolution: {integrity: sha512-cWEoNUklUte3F1x0pt0rFa7OSVtaDOR7aesCSJHVtK2Jam5meyN3hLEj9KCr4sJanMFVSo9LqtKeI71kBv+noQ==, tarball: file:projects/component-examples.tgz} + resolution: {integrity: sha512-ojGHb1EKe07lPmGB5VQeDnhWx+i41XN2ZM9k/nCL3DorQzrcM+2SSty4ivJuG6ra6u63U7pUTvb/H/Ho5XRw8g==, tarball: file:projects/component-examples.tgz} name: '@rush-temp/component-examples' version: 0.0.0 dependencies: '@azure/communication-calling': 1.29.1 - '@azure/communication-chat': 1.5.2 + '@azure/communication-chat': 1.5.4 '@azure/communication-common': 2.3.1 '@azure/communication-identity': 1.3.1 '@babel/core': 7.25.2 @@ -19640,13 +19644,13 @@ packages: dev: false file:projects/fake-backends.tgz: - resolution: {integrity: sha512-TyKgWwsFwnWtVTSHPrIHQWuw0iSSLke3tEPEJplM8Q8OMip8K6Dxh8z4k2mg5pVvRcI2lReX6+2utGYVItWLBg==, tarball: file:projects/fake-backends.tgz} + resolution: {integrity: sha512-mL+/gfDwyqorehzHtlp6kzd1Jfw2VeFF0Z87KlqXmPJKmtdHFEWU7XyqSpYdoOP94oGNBMwKHWKHRE3usz74vQ==, tarball: file:projects/fake-backends.tgz} name: '@rush-temp/fake-backends' version: 0.0.0 dependencies: - '@azure/communication-chat': 1.5.2 + '@azure/communication-chat': 1.5.4 '@azure/communication-common': 2.3.1 - '@azure/communication-signaling': 1.0.0-beta.28 + '@azure/communication-signaling': 1.0.0-beta.29 '@azure/core-paging': 1.6.2 '@azure/core-rest-pipeline': 1.17.0 '@babel/cli': 7.25.6(@babel/core@7.25.2) @@ -19810,13 +19814,13 @@ packages: dev: false file:projects/react-composites.tgz: - resolution: {integrity: sha512-/rl73EEKEXzCS1lU/YRNNbhWXsvZu0w7OF26SdhBoCtywT4ggGMEcErW+qdKnyRrSZlO+KSOu8u7fBatFhojjg==, tarball: file:projects/react-composites.tgz} + resolution: {integrity: sha512-ttkr5FlETZsFqgyV4+drdV3gixGDExiTtAVtkarwCxbFppjDgR7y3IZS2yGHilqQ9Rwm/3TpHG+o5UqM1mhgFw==, tarball: file:projects/react-composites.tgz} name: '@rush-temp/react-composites' version: 0.0.0 dependencies: '@azure/communication-calling': 1.29.1 '@azure/communication-calling-effects': 1.1.1 - '@azure/communication-chat': 1.5.2 + '@azure/communication-chat': 1.5.4 '@azure/communication-common': 2.3.1 '@azure/communication-identity': 1.3.1 '@azure/core-paging': 1.6.2 @@ -19929,12 +19933,12 @@ packages: dev: false file:projects/sample-automation-tests.tgz: - resolution: {integrity: sha512-Cqd5jJIz+ro2P14THjtEWJV5uVGh3q67hR2akNcy3TEARDe7MSKXHIZcpuwMsS6n5gu+X6GlcBLqGFPfzD8uDQ==, tarball: file:projects/sample-automation-tests.tgz} + resolution: {integrity: sha512-XDmCGxCqgUApZhO/8pLgfY8vo1LSxTukPfbPHiyJWa17NQiV+l/CGnrqN6gRnovee2CYWOvnBZMDC0001OH5qA==, tarball: file:projects/sample-automation-tests.tgz} name: '@rush-temp/sample-automation-tests' version: 0.0.0 dependencies: '@azure/communication-calling': 1.29.1 - '@azure/communication-chat': 1.5.2 + '@azure/communication-chat': 1.5.4 '@azure/communication-common': 2.3.1 '@azure/communication-identity': 1.3.1 '@playwright/test': 1.39.0 @@ -19953,12 +19957,12 @@ packages: dev: false file:projects/sample-static-html-composites.tgz: - resolution: {integrity: sha512-DFAryYs7+oShyQA/Fj5zBdM6XASjqJgNaMhI+33h+7hveRxIrjvnbuziPKwqWxE+Hli09gYDT0dyfRMYtg+Wbw==, tarball: file:projects/sample-static-html-composites.tgz} + resolution: {integrity: sha512-V/7FH0JAERQU2yhp43pRMHn0xMnkoYudMaD3PSYzqzg+DoquK/kqMnK0GnJDrF0Mnlkg1pYQaGdTLJjU7jBSww==, tarball: file:projects/sample-static-html-composites.tgz} name: '@rush-temp/sample-static-html-composites' version: 0.0.0 dependencies: '@azure/communication-calling': 1.29.1 - '@azure/communication-chat': 1.5.2 + '@azure/communication-chat': 1.5.4 '@azure/communication-common': 2.3.1 '@azure/communication-identity': 1.3.1 '@babel/cli': 7.25.6(@babel/core@7.25.2) @@ -20020,11 +20024,11 @@ packages: dev: false file:projects/server.tgz: - resolution: {integrity: sha512-Zm2+9lcgFmzlgqzzyuahLRkue8bm/IE/JRH2WbAU7ikEfnD0yIdE4qDsVDbFgveE0uFcwGcWofrtNYGnR/cGQg==, tarball: file:projects/server.tgz} + resolution: {integrity: sha512-KgGle5UDKaHmwa5Wup8mRq6kMbrKMiUDZ0yjIQWgN9Ajw+n4nLqxrz+yBPzDyV5gIer6nxB7yKV6AuVqCO2xYQ==, tarball: file:projects/server.tgz} name: '@rush-temp/server' version: 0.0.0 dependencies: - '@azure/communication-chat': 1.5.2 + '@azure/communication-chat': 1.5.4 '@azure/communication-common': 2.3.1 '@azure/communication-identity': 1.3.1 '@azure/communication-rooms': 1.1.0 @@ -20101,12 +20105,12 @@ packages: dev: false file:projects/storybook8.tgz: - resolution: {integrity: sha512-aeLCfxwHMyS5knOG0iy70EtMl4E1nGk8YCkwZ3UuO+2qFYBQAdPJBeqUfTdbExMryo7fvf1Z0mRlqkZH3goJRw==, tarball: file:projects/storybook8.tgz} + resolution: {integrity: sha512-wohRBeFgrSwen5eIizbn16QAaaOUa6zxkyJxBgEzf32b11iOyIaF8KvDQ0eiD7tonfCzK5BJrJc2BLp/hTW63Q==, tarball: file:projects/storybook8.tgz} name: '@rush-temp/storybook8' version: 0.0.0 dependencies: '@azure/communication-calling': 1.29.1 - '@azure/communication-chat': 1.5.2 + '@azure/communication-chat': 1.5.4 '@azure/communication-common': 2.3.1 '@azure/communication-identity': 1.3.1 '@babel/core': 7.25.2 diff --git a/packages/chat-component-bindings/package.json b/packages/chat-component-bindings/package.json index 5fef44692da..bcdb4cc1597 100644 --- a/packages/chat-component-bindings/package.json +++ b/packages/chat-component-bindings/package.json @@ -38,7 +38,7 @@ "memoize-one": "^5.2.1" }, "peerDependencies": { - "@azure/communication-chat": "1.6.0-beta.3 || >=1.5.2", + "@azure/communication-chat": "1.6.0-beta.3 || >=1.5.4", "@types/react": ">=16.8.0 <19.0.0", "react": ">=16.8.0 <19.0.0" }, diff --git a/packages/chat-stateful-client/package.json b/packages/chat-stateful-client/package.json index 1f5cb56cc9f..b4df8429e46 100644 --- a/packages/chat-stateful-client/package.json +++ b/packages/chat-stateful-client/package.json @@ -39,10 +39,10 @@ "nanoid": "3.3.6" }, "peerDependencies": { - "@azure/communication-chat": "1.6.0-beta.3 || >=1.5.2" + "@azure/communication-chat": "1.6.0-beta.3 || >=1.5.4" }, "devDependencies": { - "@azure/communication-signaling": "1.0.0-beta.27 || 1.0.0-beta.28", + "@azure/communication-signaling": "1.0.0-beta.27 || 1.0.0-beta.29", "@babel/cli": "^7.24.8", "@babel/core": "^7.25.2", "@types/jest": "^29.5.11", diff --git a/packages/communication-react/package.json b/packages/communication-react/package.json index e5509d58df4..95c41afdd0b 100644 --- a/packages/communication-react/package.json +++ b/packages/communication-react/package.json @@ -57,7 +57,7 @@ "peerDependencies": { "@azure/communication-calling": "1.30.1-beta.1 || ^1.29.1", "@azure/communication-calling-effects": "1.1.1-beta.1 || ^1.1.1", - "@azure/communication-chat": "1.6.0-beta.3 || >=1.5.2", + "@azure/communication-chat": "1.6.0-beta.3 || >=1.5.4", "@types/react": ">=16.8.0 <19.0.0", "@types/react-dom": ">=16.8.0 <19.0.0", "react": ">=16.8.0 <19.0.0", diff --git a/packages/communication-react/review/beta/communication-react.api.md b/packages/communication-react/review/beta/communication-react.api.md index 697d3e21dbd..834697f035e 100644 --- a/packages/communication-react/review/beta/communication-react.api.md +++ b/packages/communication-react/review/beta/communication-react.api.md @@ -59,6 +59,7 @@ import { IContextualMenuItemStyles } from '@fluentui/react'; import { IContextualMenuProps } from '@fluentui/react'; import { IContextualMenuStyles } from '@fluentui/react'; import { IIconProps } from '@fluentui/react'; +import { IIconStyles } from '@fluentui/react'; import { ILinkStyles } from '@fluentui/react'; import { IMessageBarProps } from '@fluentui/react'; import { IncomingCall } from '@azure/communication-calling'; @@ -2403,6 +2404,9 @@ export interface ComponentStrings { raiseHandButton: RaiseHandButtonStrings; reactionButton: ReactionButtonStrings; richTextSendBox: RichTextSendBoxStrings; + rtt: RealTimeTextStrings; + rttDisclosureBanner: RTTDisclosureBannerStrings; + rttModal: RTTModalStrings; screenShareButton: ScreenShareButtonStrings; sendBox: SendBoxStrings; typingIndicator: TypingIndicatorStrings; @@ -2812,6 +2816,7 @@ export const DEFAULT_COMPONENT_ICONS: { IncomingCallNotificationRejectIcon: React_2.JSX.Element; IncomingCallNotificationAcceptIcon: React_2.JSX.Element; IncomingCallNotificationAcceptWithVideoIcon: React_2.JSX.Element; + RTTIcon: React_2.JSX.Element; }; // @public @@ -2992,6 +2997,7 @@ export const DEFAULT_COMPOSITE_ICONS: { IncomingCallNotificationRejectIcon: React_2.JSX.Element; IncomingCallNotificationAcceptIcon: React_2.JSX.Element; IncomingCallNotificationAcceptWithVideoIcon: React_2.JSX.Element; + RTTIcon: React_2.JSX.Element; }; // @beta @@ -3884,10 +3890,12 @@ export interface NotificationProps { autoDismiss?: boolean; notificationIconProps?: IIconProps; notificationStrings?: NotificationStrings; + onClickLink?: () => void; onClickPrimaryButton?: () => void; onClickSecondaryButton?: () => void; onDismiss?: () => void; showStackedEffect?: boolean; + styles?: NotificationStyles; } // @public @@ -3958,13 +3966,25 @@ export interface NotificationStackStrings { // @public export interface NotificationStrings { - dismissButtonAriaLabel: string; + dismissButtonAriaLabel?: string; + linkLabel?: string; message?: string; primaryButtonLabel?: string; secondaryButtonLabel?: string; title: string; } +// @public +export interface NotificationStyles { + content?: IStackStyles; + icon?: IIconStyles; + link?: IStackStyles; + primaryButton?: IButtonStyles; + root?: IStackStyles; + secondaryButton?: IButtonStyles; + title?: IStackStyles; +} + // @public (undocumented) export type NotificationTarget = 'assignedBreakoutRoomOpened' | 'assignedBreakoutRoomOpenedPromptJoin' | 'assignedBreakoutRoomChanged' | 'breakoutRoomJoined' | 'breakoutRoomClosingSoon'; @@ -4302,6 +4322,25 @@ export type ReadReceiptsBySenderId = { }; }; +// @beta +export const RealTimeText: (props: RealTimeTextProps) => JSX.Element; + +// @beta +export interface RealTimeTextProps { + captionText: string; + displayName: string; + id: string; + isTyping?: boolean; + onRenderAvatar?: OnRenderAvatarCallback; + strings?: RealTimeTextStrings; + userId?: string; +} + +// @beta +export interface RealTimeTextStrings { + isTypingText?: string; +} + // @public export interface RecordingCallFeature { activeRecordings?: RecordingInfo[]; @@ -4438,6 +4477,46 @@ export interface RichTextStrings { richTextUnderlineTooltip: string; } +// @beta +export const RTTDisclosureBanner: (props: RTTDisclosureBannerProps) => JSX.Element; + +// @beta +export interface RTTDisclosureBannerProps { + onClickLink?: () => void; + strings?: RTTDisclosureBannerStrings; +} + +// @beta +export interface RTTDisclosureBannerStrings { + // (undocumented) + bannerContent: string; + // (undocumented) + bannerLinkLabel?: string; + // (undocumented) + bannerTitle: string; +} + +// @beta +export const RTTModal: (props: RTTModalProps) => JSX.Element; + +// @beta +export interface RTTModalProps { + onDismissModal?: () => void; + onStartRTT?: () => Promise; + showModal?: boolean; + strings?: RTTModalStrings; +} + +// @beta +export interface RTTModalStrings { + rttCancelButtonLabel?: string; + rttCloseModalButtonAriaLabel?: string; + rttConfirmButtonLabel?: string; + rttModalAriaLabel?: string; + rttModalText?: string; + rttModalTitle?: string; +} + // @public export const ScreenShareButton: (props: ScreenShareButtonProps) => JSX.Element; @@ -4660,6 +4739,7 @@ export type SpotlightChangedListener = (args: { // @public export interface SpotlightPromptStrings { + closeSpotlightPromptButtonLabel: string; startSpotlightCancelButtonLabel: string; startSpotlightConfirmButtonLabel: string; startSpotlightHeading: string; @@ -5333,6 +5413,7 @@ export interface VideoTileStrings { moreOptionsParticipantIsSpeakingAriaLabel: string; moreOptionsParticipantMutedStateMutedAriaLabel: string; moreOptionsParticipantMutedStateUnmutedAriaLabel: string; + participantReconnecting?: string; participantStateHold: string; participantStateRinging: string; } diff --git a/packages/communication-react/review/stable/communication-react.api.md b/packages/communication-react/review/stable/communication-react.api.md index 64ec08a6b10..15d2ab2b050 100644 --- a/packages/communication-react/review/stable/communication-react.api.md +++ b/packages/communication-react/review/stable/communication-react.api.md @@ -52,6 +52,7 @@ import { IContextualMenuItemStyles } from '@fluentui/react'; import { IContextualMenuProps } from '@fluentui/react'; import { IContextualMenuStyles } from '@fluentui/react'; import { IIconProps } from '@fluentui/react'; +import { IIconStyles } from '@fluentui/react'; import { IMessageBarProps } from '@fluentui/react'; import { IncomingCall } from '@azure/communication-calling'; import { IncomingCallKind } from '@azure/communication-calling'; @@ -3413,10 +3414,12 @@ export interface NotificationProps { autoDismiss?: boolean; notificationIconProps?: IIconProps; notificationStrings?: NotificationStrings; + onClickLink?: () => void; onClickPrimaryButton?: () => void; onClickSecondaryButton?: () => void; onDismiss?: () => void; showStackedEffect?: boolean; + styles?: NotificationStyles; } // @public @@ -3482,13 +3485,25 @@ export interface NotificationStackStrings { // @public export interface NotificationStrings { - dismissButtonAriaLabel: string; + dismissButtonAriaLabel?: string; + linkLabel?: string; message?: string; primaryButtonLabel?: string; secondaryButtonLabel?: string; title: string; } +// @public +export interface NotificationStyles { + content?: IStackStyles; + icon?: IIconStyles; + link?: IStackStyles; + primaryButton?: IButtonStyles; + root?: IStackStyles; + secondaryButton?: IButtonStyles; + title?: IStackStyles; +} + // @public export type NotificationType = keyof NotificationStackStrings; @@ -4046,6 +4061,7 @@ export type SpotlightChangedListener = (args: { // @public export interface SpotlightPromptStrings { + closeSpotlightPromptButtonLabel: string; startSpotlightCancelButtonLabel: string; startSpotlightConfirmButtonLabel: string; startSpotlightHeading: string; diff --git a/packages/communication-react/src/index.ts b/packages/communication-react/src/index.ts index 972a15f4c7f..c49b2fc7654 100644 --- a/packages/communication-react/src/index.ts +++ b/packages/communication-react/src/index.ts @@ -433,6 +433,20 @@ export type { NotificationStrings, NotificationStackStrings, NotificationType, - ActiveNotification + ActiveNotification, + NotificationStyles } from '../../react-components/src'; export type { MeetingConferencePhoneInfoModalStrings } from '../../react-components/src'; +/* @conditional-compile-remove(rtt) */ +export type { RTTModalStrings, RTTModalProps } from '../../react-components/src'; +/* @conditional-compile-remove(rtt) */ +export { RTTModal } from '../../react-components/src'; + +/* @conditional-compile-remove(rtt) */ +export type { RTTDisclosureBannerProps, RTTDisclosureBannerStrings } from '../../react-components/src'; +/* @conditional-compile-remove(rtt) */ +export { RTTDisclosureBanner } from '../../react-components/src'; +/* @conditional-compile-remove(rtt) */ +export type { RealTimeTextProps, RealTimeTextStrings } from '../../react-components/src/components/RealTimeText'; +/* @conditional-compile-remove(rtt) */ +export { RealTimeText } from '../../react-components/src/components/RealTimeText'; diff --git a/packages/fake-backends/package.json b/packages/fake-backends/package.json index 5797857bfa4..5aa3d471e39 100644 --- a/packages/fake-backends/package.json +++ b/packages/fake-backends/package.json @@ -29,9 +29,9 @@ }, "license": "MIT", "dependencies": { - "@azure/communication-chat": "1.6.0-beta.3 || ^1.5.2", + "@azure/communication-chat": "1.6.0-beta.3 || ^1.5.4", "@azure/communication-common": "^2.3.1", - "@azure/communication-signaling": "1.0.0-beta.27 || 1.0.0-beta.28", + "@azure/communication-signaling": "1.0.0-beta.27 || 1.0.0-beta.29", "@azure/core-paging": "^1.5.0", "@azure/core-rest-pipeline": "^1.13.0", "@internal/acs-ui-common": "1.21.0-beta.0", diff --git a/packages/react-components/src/components/Notification.tsx b/packages/react-components/src/components/Notification.tsx index 4b85bc0cd33..02f78083dad 100644 --- a/packages/react-components/src/components/Notification.tsx +++ b/packages/react-components/src/components/Notification.tsx @@ -2,14 +2,28 @@ // Licensed under the MIT License. import React, { useState } from 'react'; -import { Icon, IconButton, PrimaryButton, Stack, useTheme, Text, IIconProps, DefaultButton } from '@fluentui/react'; +import { + Icon, + IconButton, + PrimaryButton, + Stack, + useTheme, + Text, + IIconProps, + DefaultButton, + Link, + IStackStyles, + IButtonStyles, + IIconStyles +} from '@fluentui/react'; import { cancelIcon } from './styles/ImageOverlay.style'; import { containerStyles, hiddenContainerStyles, - messageTextStyle, - notificationIconClassName, - titleTextClassName + messageTextStyles, + notificationIconStyles, + notificationLinkStyles, + titleTextStyles } from './styles/Notification.styles'; /** @@ -54,6 +68,16 @@ export interface NotificationProps { * Callback called when the notification is dismissed. */ onDismiss?: () => void; + + /** + * Optional callback to supply users with further troubleshooting steps or more information for the notification. + */ + onClickLink?: () => void; + + /** + * Styles for the incoming call notifications. + */ + styles?: NotificationStyles; } /** @@ -69,7 +93,7 @@ export interface NotificationStrings { /** * Notification bar dismiss button aria label */ - dismissButtonAriaLabel: string; + dismissButtonAriaLabel?: string; /** * Notification bar message. */ @@ -82,6 +106,46 @@ export interface NotificationStrings { * Notification bar secondary button label */ secondaryButtonLabel?: string; + /** + * Notification bar link label + */ + linkLabel?: string; +} + +/** + * Styles for the notification component. + * + * @public + */ +export interface NotificationStyles { + /** + * Styles for the primary button. + */ + primaryButton?: IButtonStyles; + /** + * Styles for the secondary button. + */ + secondaryButton?: IButtonStyles; + /** + * Styles for the root container. + */ + root?: IStackStyles; + /** + * Styles for the notification title. + */ + title?: IStackStyles; + /** + * Styles for the notification icon. + */ + icon?: IIconStyles; + /** + * Styles for the notification content. + */ + content?: IStackStyles; + /** + * Styles for the notification hyperlink. + */ + link?: IStackStyles; } /** @@ -108,35 +172,47 @@ export const Notification = (props: NotificationProps): JSX.Element => { return ( - + - {strings?.title} + {strings?.title} - - + {props.onDismiss && ( + + )} - - {strings?.message} - + + {strings?.message} + {props.onClickLink && strings?.linkLabel && ( + + {strings?.linkLabel} + + )} + {strings?.secondaryButtonLabel && ( - + {strings?.secondaryButtonLabel} )} {strings?.primaryButtonLabel && ( - + {strings?.primaryButtonLabel} )} diff --git a/packages/react-components/src/components/RTTDisclosureBanner.tsx b/packages/react-components/src/components/RTTDisclosureBanner.tsx new file mode 100644 index 00000000000..7cd388d8114 --- /dev/null +++ b/packages/react-components/src/components/RTTDisclosureBanner.tsx @@ -0,0 +1,62 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +/* @conditional-compile-remove(rtt) */ +import React from 'react'; +/* @conditional-compile-remove(rtt) */ +import { useLocale } from '../localization'; +/* @conditional-compile-remove(rtt) */ +import { Notification } from './Notification'; +/* @conditional-compile-remove(rtt) */ +import { useTheme } from '@fluentui/react'; +/* @conditional-compile-remove(rtt) */ +import { rttContainerStyles } from './styles/RTTDisclosureBanner.styles'; + +/* @conditional-compile-remove(rtt) */ +/** + * @beta + * strings for rtt modal + */ +export interface RTTDisclosureBannerStrings { + bannerTitle: string; + bannerContent: string; + bannerLinkLabel?: string; +} + +/* @conditional-compile-remove(rtt) */ +/** + * @beta + * Props for RTT Banner + */ +export interface RTTDisclosureBannerProps { + /** + * Optional callback to supply users with further troubleshooting steps or more information for the Real Time Text feature. + */ + onClickLink?: () => void; + /** RTT Banner strings */ + strings?: RTTDisclosureBannerStrings; +} + +/* @conditional-compile-remove(rtt) */ +/** + * @beta + * Banner to disclose that RTT is enabled for all participants for the entire duration of the meeting. + */ +export const RTTDisclosureBanner = (props: RTTDisclosureBannerProps): JSX.Element => { + const localeStrings = useLocale().strings.rttDisclosureBanner; + const strings = { ...localeStrings, ...props.strings }; + const theme = useTheme(); + + return ( + + ); +}; diff --git a/packages/react-components/src/components/RTTModal.tsx b/packages/react-components/src/components/RTTModal.tsx new file mode 100644 index 00000000000..34bb2821fe9 --- /dev/null +++ b/packages/react-components/src/components/RTTModal.tsx @@ -0,0 +1,118 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +/* @conditional-compile-remove(rtt) */ +import React, { useCallback } from 'react'; +/* @conditional-compile-remove(rtt) */ +import { useMemo } from 'react'; +/* @conditional-compile-remove(rtt) */ +import { IModalStyles, Modal, Stack, useTheme, Text, IconButton, DefaultButton, PrimaryButton } from '@fluentui/react'; +/* @conditional-compile-remove(rtt) */ +import { _captionsOptions } from './StartCaptionsButton'; +/* @conditional-compile-remove(rtt) */ +import { _preventDismissOnEvent } from '@internal/acs-ui-common'; +/* @conditional-compile-remove(rtt) */ +import { + buttonsContainerClassName, + buttonStyles, + themedCaptionsSettingsModalStyle, + titleClassName, + titleContainerClassName +} from './styles/CaptionsSettingsModal.styles'; +/* @conditional-compile-remove(rtt) */ +import { useLocale } from '../localization'; + +/* @conditional-compile-remove(rtt) */ +/** + * @beta + * strings for rtt modal + */ +export interface RTTModalStrings { + /** The title of the RTT modal */ + rttModalTitle?: string; + /** The text of the RTT modal */ + rttModalText?: string; + /** The label for the confirm button */ + rttConfirmButtonLabel?: string; + /** The label for the cancel button */ + rttCancelButtonLabel?: string; + /** The aria label for the modal */ + rttModalAriaLabel?: string; + /** The aria label for the close button */ + rttCloseModalButtonAriaLabel?: string; +} +/* @conditional-compile-remove(rtt) */ +/** + * @beta + * RTTModal Component Props. + */ +export interface RTTModalProps { + /** The strings for the RTT modal */ + strings?: RTTModalStrings; + /** The flag to show the modal */ + showModal?: boolean; + /** The function to dismiss the modal */ + onDismissModal?: () => void; + /** The function to start RTT */ + onStartRTT?: () => Promise; +} +/* @conditional-compile-remove(rtt) */ +/** + * @beta + * a component for rtt modal + */ +export const RTTModal = (props: RTTModalProps): JSX.Element => { + const { showModal, onDismissModal, onStartRTT } = props; + const localeStrings = useLocale().strings.rttModal; + const strings = { ...localeStrings, ...props.strings }; + + const theme = useTheme(); + + const onDismiss = useCallback((): void => { + if (onDismissModal) { + onDismissModal(); + } + }, [onDismissModal]); + + const onConfirm = useCallback(async (): Promise => { + if (onStartRTT) { + await onStartRTT(); + } + onDismiss(); + }, [onDismiss, onStartRTT]); + + const RTTModalStyle: Partial = useMemo(() => themedCaptionsSettingsModalStyle(theme), [theme]); + + return ( + <> + { + + + {strings?.rttModalTitle} + + + {strings?.rttModalText} + + + + {strings?.rttConfirmButtonLabel} + + + {strings?.rttCancelButtonLabel} + + + + } + + ); +}; diff --git a/packages/react-components/src/components/RealTimeText.tsx b/packages/react-components/src/components/RealTimeText.tsx new file mode 100644 index 00000000000..3140702a50b --- /dev/null +++ b/packages/react-components/src/components/RealTimeText.tsx @@ -0,0 +1,121 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +/* @conditional-compile-remove(rtt) */ +import { IPersona, Persona, Stack, PersonaSize, Text, useTheme } from '@fluentui/react'; +/* @conditional-compile-remove(rtt) */ +import React from 'react'; +/* @conditional-compile-remove(rtt) */ +import { OnRenderAvatarCallback } from '../types'; +/* @conditional-compile-remove(rtt) */ +import { + captionClassName, + captionsContentContainerClassName, + displayNameClassName, + displayNameContainerClassName, + iconClassName, + isTypingClassName, + rttContainerClassName +} from './styles/Captions.style'; +/* @conditional-compile-remove(rtt) */ +import { _CaptionsInfo } from './CaptionsBanner'; +/* @conditional-compile-remove(rtt) */ +import { useLocale } from '../localization'; + +/* @conditional-compile-remove(rtt) */ +/** + * @beta + * strings for rtt + */ +export interface RealTimeTextStrings { + /** + * String indicating that the user is typing + */ + isTypingText?: string; +} + +/* @conditional-compile-remove(rtt) */ +/** + * @beta + * Props for a single line of RealTimeText. + */ +export interface RealTimeTextProps { + /** + * RealTimeText id + */ + id: string; + /** + * Display name of the user + */ + displayName: string; + /** + * RealTimeText content + */ + captionText: string; + /** + * user id of the user + */ + userId?: string; + /** + * Optional callback to override render of the avatar. + * + * @param userId - user Id + */ + onRenderAvatar?: OnRenderAvatarCallback; + /** + * Boolean indicating whether the RealTimeText is still in progress + */ + isTyping?: boolean; + /** + * Strings for RealTimeText + */ + strings?: RealTimeTextStrings; +} + +/* @conditional-compile-remove(rtt) */ +/** + * @beta + * A component for displaying a single line of RealTimeText + */ +export const RealTimeText = (props: RealTimeTextProps): JSX.Element => { + const { displayName, userId, captionText, onRenderAvatar, isTyping } = props; + const theme = useTheme(); + const localeStrings = useLocale().strings.rtt; + const strings = { ...localeStrings, ...props.strings }; + + const personaOptions: IPersona = { + hidePersonaDetails: true, + size: PersonaSize.size32, + text: displayName, + showOverflowTooltip: false, + imageShouldStartVisible: true, + initialsTextColor: 'white', + styles: { + root: { + margin: '0.25rem' + } + } + }; + + const userIcon = onRenderAvatar ? onRenderAvatar(userId ?? '', personaOptions) : ; + + return ( + + {userIcon} + + + + {displayName} + {isTyping && {strings?.isTypingText}} + + + {captionText} + + + + ); +}; diff --git a/packages/react-components/src/components/StreamMedia.tsx b/packages/react-components/src/components/StreamMedia.tsx index 195d5cc4b83..55a1adf7d30 100644 --- a/packages/react-components/src/components/StreamMedia.tsx +++ b/packages/react-components/src/components/StreamMedia.tsx @@ -1,17 +1,21 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -import { mergeStyles, Spinner, Text } from '@fluentui/react'; +import { mergeStyles, Spinner } from '@fluentui/react'; +/* @conditional-compile-remove(remote-ufd) */ +import { Stack } from '@fluentui/react'; import React, { useEffect, useRef, useState } from 'react'; import { invertedVideoInPipStyle, mediaContainer, container, loadingSpinnerContainer, - loadSpinnerStyles, - reconnectingContainer, - reconnectingText + loadSpinnerStyles } from './styles/StreamMedia.styles'; +/* @conditional-compile-remove(remote-ufd) */ +import { reconnectingContainer, reconnectSpinnerStyles } from './styles/StreamMedia.styles'; +/* @conditional-compile-remove(remote-ufd) */ +import { useLocale } from '../localization'; import { useTheme } from '../theming'; import { BaseCustomStyles } from '../types'; @@ -53,6 +57,8 @@ export interface StreamMediaProps { export const StreamMedia = (props: StreamMediaProps): JSX.Element => { const containerEl = useRef(null); const theme = useTheme(); + /* @conditional-compile-remove(remote-ufd) */ + const reconnectingText = useLocale().strings.videoTile.participantReconnecting || 'Reconnecting...'; const { isMirrored, videoStreamElement, styles, loadingState = 'none' } = props; const [pipEnabled, setPipEnabled] = useState(false); @@ -99,13 +105,18 @@ export const StreamMedia = (props: StreamMediaProps): JSX.Element => { )} - {loadingState === 'reconnecting' && ( -
- - Reconnecting... - -
- )} + { + /* @conditional-compile-remove(remote-ufd) */ + loadingState === 'reconnecting' && ( + + + + ) + } ); }; diff --git a/packages/react-components/src/components/VideoTile.tsx b/packages/react-components/src/components/VideoTile.tsx index 44938852475..38255ae9f7c 100644 --- a/packages/react-components/src/components/VideoTile.tsx +++ b/packages/react-components/src/components/VideoTile.tsx @@ -50,6 +50,9 @@ export interface VideoTileStrings { participantStateRinging: string; /** String for displaying the Hold state of the remote participant */ participantStateHold: string; + /* @conditional-compile-remove(remote-ufd) */ + /** String for displaying the reconnecting state of the remote participant */ + participantReconnecting?: string; /** String for the announcement of the muted state of the participant when muted */ moreOptionsParticipantMutedStateMutedAriaLabel: string; /** String for the announcement of the unmuted state of the participant when unmuted */ diff --git a/packages/react-components/src/components/index.ts b/packages/react-components/src/components/index.ts index 68d0148d96e..1b20977d127 100644 --- a/packages/react-components/src/components/index.ts +++ b/packages/react-components/src/components/index.ts @@ -296,6 +296,9 @@ export * from './StartCaptionsButton'; export * from './CaptionsSettingsModal'; +/* @conditional-compile-remove(rtt) */ +export * from './RTTModal'; + export * from './MeetingConferencePhoneInfo'; export { _formatPhoneNumber } from './utils/formatPhoneNumber'; @@ -307,3 +310,8 @@ export * from './NotificationStack'; export * from './IncomingCallNotification'; export * from './IncomingCallStack'; + +/* @conditional-compile-remove(rtt) */ +export * from './RTTDisclosureBanner'; +/* @conditional-compile-remove(rtt) */ +export * from './RealTimeText'; diff --git a/packages/react-components/src/components/styles/Captions.style.ts b/packages/react-components/src/components/styles/Captions.style.ts index 3e9522f1e13..370be58c23e 100644 --- a/packages/react-components/src/components/styles/Captions.style.ts +++ b/packages/react-components/src/components/styles/Captions.style.ts @@ -21,6 +21,33 @@ export const displayNameClassName = mergeStyles({ lineHeight: _pxToRem(16) }); +/* @conditional-compile-remove(rtt) */ +/** + * @private + */ +export const isTypingClassName = (theme: ITheme): string => { + return mergeStyles({ + backgroundColor: theme.palette.themeLighter, + color: theme.palette.themeDarker, + borderRadius: _pxToRem(4), + marginLeft: _pxToRem(4), + fontWeight: 400, + paddingLeft: _pxToRem(4), + paddingRight: _pxToRem(4), + fontSize: _pxToRem(11), + lineHeight: _pxToRem(16) + }); +}; +/* @conditional-compile-remove(rtt) */ +/** + * @private + */ +export const rttContainerClassName = (theme: ITheme, isTyping: boolean): string => { + return mergeStyles({ + borderLeft: isTyping ? `2px solid ${theme.palette.themeLighter}` : 'none' + }); +}; + /** * @private */ diff --git a/packages/react-components/src/components/styles/Notification.styles.ts b/packages/react-components/src/components/styles/Notification.styles.ts index 9d4243c4fad..39ac0860403 100644 --- a/packages/react-components/src/components/styles/Notification.styles.ts +++ b/packages/react-components/src/components/styles/Notification.styles.ts @@ -1,42 +1,47 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -import { Theme, mergeStyles } from '@fluentui/react'; +import { IIconStyles, IStackStyles, Theme, mergeStyles } from '@fluentui/react'; import { _pxToRem } from '@internal/acs-ui-common'; /** * @private */ -export const messageTextStyle = (theme: Theme): string => - mergeStyles({ +export const messageTextStyles = (theme: Theme): IStackStyles => ({ + root: { fontWeight: 400, fontSize: _pxToRem(14), lineHeight: _pxToRem(16), - color: theme.palette.neutralSecondary - }); + color: theme.palette.neutralSecondary, + marginTop: '0.25rem' + } +}); /** * @private */ -export const titleTextClassName = mergeStyles({ - fontWeight: 400, - fontSize: _pxToRem(14), - lineHeight: _pxToRem(16), - alignSelf: 'center' +export const titleTextStyles = (): IStackStyles => ({ + root: { + fontWeight: 400, + fontSize: _pxToRem(14), + lineHeight: _pxToRem(16), + alignSelf: 'center' + } }); /** * @private */ -export const containerStyles = (theme: Theme): string => - mergeStyles({ +export const containerStyles = (theme: Theme): IStackStyles => ({ + root: { boxShadow: theme.effects.elevation8, width: '20rem', padding: '0.75rem', borderRadius: '0.25rem', position: 'relative', backgroundColor: theme.palette.white - }); + } +}); /** * @private @@ -53,12 +58,25 @@ export const hiddenContainerStyles = (theme: Theme): string => /** * @private */ -export const notificationIconClassName = mergeStyles({ - fontSize: '1.25rem', - alignSelf: 'center', - marginRight: '0.5rem', - svg: { - width: '1.25rem', - height: '1.25rem' +export const notificationIconStyles = (): IIconStyles => ({ + root: { + fontSize: '1.25rem', + alignSelf: 'center', + marginRight: '0.5rem', + svg: { + width: '1.25rem', + height: '1.25rem' + } + } +}); + +/** + * @private + */ +export const notificationLinkStyles = (theme: Theme): IStackStyles => ({ + root: { + color: theme.palette.themePrimary, + fontWeight: '600', + paddingLeft: '0.25rem' } }); diff --git a/packages/react-components/src/components/styles/RTTDisclosureBanner.styles.ts b/packages/react-components/src/components/styles/RTTDisclosureBanner.styles.ts new file mode 100644 index 00000000000..2bf3f80858c --- /dev/null +++ b/packages/react-components/src/components/styles/RTTDisclosureBanner.styles.ts @@ -0,0 +1,22 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +/* @conditional-compile-remove(rtt) */ +import { IStackStyles, Theme } from '@fluentui/react'; +/* @conditional-compile-remove(rtt) */ +import { _pxToRem } from '@internal/acs-ui-common'; + +/* @conditional-compile-remove(rtt) */ +/** + * @private + */ +export const rttContainerStyles = (theme: Theme): IStackStyles => ({ + root: { + boxShadow: theme.effects.elevation8, + width: 'fit-content', + padding: '0.75rem', + borderRadius: '0.25rem', + position: 'relative', + backgroundColor: theme.palette.white + } +}); diff --git a/packages/react-components/src/components/styles/StreamMedia.styles.ts b/packages/react-components/src/components/styles/StreamMedia.styles.ts index c49f14317cf..6d1f572c3b5 100644 --- a/packages/react-components/src/components/styles/StreamMedia.styles.ts +++ b/packages/react-components/src/components/styles/StreamMedia.styles.ts @@ -2,7 +2,6 @@ // Licensed under the MIT License. import { ISpinnerStyles, mergeStyles, Theme } from '@fluentui/react'; -import { isDarkThemed } from '../../theming/themeUtils'; /** * @private @@ -44,22 +43,6 @@ export const reconnectingContainer = (): string => alignItems: 'center' }); -/** - * @private - */ -export const reconnectingText = (theme: Theme): string => - mergeStyles({ - // Position centrally on top of content. Parent must have position: relative. - height: '3rem', - lineHeight: '3rem', - justifyContent: 'center', - alignItems: 'center', - // DarkTheme check is done cause the text color should be light in both dark and light themes - // due to background overlay being dark in both themes. - color: isDarkThemed(theme) ? theme.palette.themeDarker : theme.palette.neutralLighter, - fontSize: theme.fonts.large.fontSize - }); - /** * @private */ @@ -76,6 +59,21 @@ export const loadSpinnerStyles: ISpinnerStyles = { } }; +/** + * @private + */ +export const reconnectSpinnerStyles = (): ISpinnerStyles => ({ + ...loadSpinnerStyles, + label: { + color: 'white' + }, + circle: { + ...(loadSpinnerStyles.circle as object), + maxHeight: '2rem', + borderWidth: 'unset' + } +}); + /** * @private */ diff --git a/packages/react-components/src/localization/LocalizationProvider.tsx b/packages/react-components/src/localization/LocalizationProvider.tsx index 5ef83e4dff7..c0ab54566c2 100644 --- a/packages/react-components/src/localization/LocalizationProvider.tsx +++ b/packages/react-components/src/localization/LocalizationProvider.tsx @@ -46,6 +46,12 @@ import { ReactionButtonStrings } from '../components'; import { RichTextSendBoxStrings } from '../components/RichTextEditor/RichTextSendBox'; import { MeetingConferencePhoneInfoModalStrings } from '../components/MeetingConferencePhoneInfo'; import { IncomingCallNotificationStrings } from '../components/IncomingCallNotification'; +/* @conditional-compile-remove(rtt) */ +import { RTTDisclosureBannerStrings } from '../components/RTTDisclosureBanner'; +/* @conditional-compile-remove(rtt) */ +import { RTTModalStrings } from '../components/RTTModal'; +/* @conditional-compile-remove(rtt) */ +import { RealTimeTextStrings } from '../components/RealTimeText'; /** * Locale information for all components exported from this library. @@ -169,7 +175,6 @@ export interface ComponentStrings { /* @conditional-compile-remove(call-readiness) */ /** Strings for BrowserPemissionDeniedIOS */ BrowserPermissionDeniedIOS: BrowserPermissionDeniedIOSStrings; - /** * Strings for the VerticalGallery. */ @@ -179,8 +184,16 @@ export interface ComponentStrings { ParticipantList: ParticipantListStrings; /** Strings for the MeetingConferencePhoneInfoModal */ meetingConferencePhoneInfo: MeetingConferencePhoneInfoModalStrings; - IncomingCallNotification: IncomingCallNotificationStrings; + /* @conditional-compile-remove(rtt) */ + /** Strings for the RTT Disclosure Banner */ + rttDisclosureBanner: RTTDisclosureBannerStrings; + /* @conditional-compile-remove(rtt) */ + /** Strings for the RTTModal */ + rttModal: RTTModalStrings; + /* @conditional-compile-remove(rtt) */ + /** Strings for RealTimeText */ + rtt: RealTimeTextStrings; } /** diff --git a/packages/react-components/src/localization/locales/en-US/strings.json b/packages/react-components/src/localization/locales/en-US/strings.json index cf851aa5815..1ab8a5e80dd 100644 --- a/packages/react-components/src/localization/locales/en-US/strings.json +++ b/packages/react-components/src/localization/locales/en-US/strings.json @@ -66,6 +66,14 @@ "richTextBulletedListAppliedAnnouncement": "Bulleted list applied", "richTextNumberedListAppliedAnnouncement": "Numbered list applied" }, + "rttModal": { + "rttModalAriaLabel": "Turn on RTT Modal", + "rttModalTitle": "Turn on RTT?", + "rttModalText": "Real-time text (RTT) will be turned on for everyone in the meeting.", + "rttConfirmButtonLabel": "Turn on", + "rttCancelButtonLabel": "Cancel", + "rttCloseModalButtonAriaLabel": "Close RTT Modal" + }, "mentionPopover": { "mentionPopoverHeader": "Suggestions" }, @@ -179,6 +187,9 @@ "applauseReactionTooltipContent": "Applause", "surprisedReactionTooltipContent": "Surprised" }, + "rtt": { + "isTypingText": "RTT typing" + }, "messageThread": { "yesterday": "Yesterday", "sunday": "Sunday", @@ -525,6 +536,7 @@ }, "videoTile": { "participantStateRinging": "Calling...", + "participantReconnecting": "Reconnecting...", "participantStateHold": "On hold", "moreOptionsButtonAriaLabel": "More Options {displayName} {isMuted} {isHandRaised} {state} {isSpeaking}", "moreOptionsParticipantMutedStateMutedAriaLabel": "muted", @@ -671,5 +683,10 @@ "incomingCallNotificationRejectButtonLabel": "Decline", "incomingCallNotificationAccceptWithVideoButtonLabel": "Accept with Video", "incomingCallNotificationDismissButtonAriaLabel": "Dismiss" + }, + "rttDisclosureBanner": { + "bannerTitle": "RTT", + "bannerContent": "RTT (real-time text) is enabled for all participants for the entire duration of the meeting.", + "bannerLinkLabel": "Learn more" } } diff --git a/packages/react-components/src/theming/icons.tsx b/packages/react-components/src/theming/icons.tsx index 2e4722a0c3d..0ae8f003106 100644 --- a/packages/react-components/src/theming/icons.tsx +++ b/packages/react-components/src/theming/icons.tsx @@ -72,6 +72,8 @@ import { VideoProhibited16Filled, WifiWarning20Filled } from '@fluentui/react-icons'; +/* @conditional-compile-remove(rtt) */ +import { SlideTextCall20Regular } from '@fluentui/react-icons'; /* @conditional-compile-remove(rich-text-editor) */ import { TextBold20Regular, @@ -407,5 +409,7 @@ export const DEFAULT_COMPONENT_ICONS = { ContextualMenuMicMutedIcon: , IncomingCallNotificationRejectIcon: , IncomingCallNotificationAcceptIcon: , - IncomingCallNotificationAcceptWithVideoIcon: + IncomingCallNotificationAcceptWithVideoIcon: , + /* @conditional-compile-remove(rtt) */ + RTTIcon: }; diff --git a/packages/react-composites/package.json b/packages/react-composites/package.json index aa5548e252d..f66cec09721 100644 --- a/packages/react-composites/package.json +++ b/packages/react-composites/package.json @@ -74,7 +74,7 @@ "peerDependencies": { "@azure/communication-calling": "1.30.1-beta.1 || ^1.29.1", "@azure/communication-calling-effects": "1.1.1-beta.1 || ^1.1.1", - "@azure/communication-chat": "1.6.0-beta.3 || >=1.5.2", + "@azure/communication-chat": "1.6.0-beta.3 || >=1.5.4", "@types/react": ">=16.8.0 <19.0.0", "@types/react-dom": ">=16.8.0 <19.0.0", "react": ">=16.8.0 <19.0.0", diff --git a/packages/react-composites/src/composites/CallComposite/components/LocalDeviceSettings.tsx b/packages/react-composites/src/composites/CallComposite/components/LocalDeviceSettings.tsx index 6a6a3751686..79e7962431f 100644 --- a/packages/react-composites/src/composites/CallComposite/components/LocalDeviceSettings.tsx +++ b/packages/react-composites/src/composites/CallComposite/components/LocalDeviceSettings.tsx @@ -248,7 +248,6 @@ export const LocalDeviceSettings = (props: LocalDeviceSettingsType): JSX.Element @@ -275,11 +274,7 @@ export const LocalDeviceSettings = (props: LocalDeviceSettingsType): JSX.Element
)} -