Update compound-web to 9.3.0 and update Buttons from "sm" to "md". (#3926)

* Update compound-web to 9.3.0 and update Buttons from "sm" to "md".

* Clean up the liast bits

* Update snaps too

* fix test, need to dismiss a new dialog

---------

Co-authored-by: Valere <bill.carson@valrsoft.com>
This commit is contained in:
Will Hunt
2026-04-27 13:54:00 +01:00
committed by GitHub
parent 2ce6098085
commit d335a307bb
14 changed files with 58 additions and 41 deletions

View File

@@ -81,7 +81,7 @@
"@typescript-eslint/parser": "^8.31.0", "@typescript-eslint/parser": "^8.31.0",
"@use-gesture/react": "^10.2.11", "@use-gesture/react": "^10.2.11",
"@vector-im/compound-design-tokens": "^10.0.0", "@vector-im/compound-design-tokens": "^10.0.0",
"@vector-im/compound-web": "^9.0.0", "@vector-im/compound-web": "^9.3.0",
"@vitejs/plugin-react": "^4.0.1", "@vitejs/plugin-react": "^4.0.1",
"@vitest/coverage-v8": "^4.0.18", "@vitest/coverage-v8": "^4.0.18",
"babel-plugin-transform-vite-meta-env": "^1.0.3", "babel-plugin-transform-vite-meta-env": "^1.0.3",

View File

@@ -122,6 +122,7 @@ export class TestHelpers {
await this.maybeDismissBrowserNotSupportedToast(page); await this.maybeDismissBrowserNotSupportedToast(page);
await this.maybeDismissServiceWorkerWarningToast(page); await this.maybeDismissServiceWorkerWarningToast(page);
await this.maybeDismissBackupChat(page);
await TestHelpers.setDevToolElementCallDevUrl(page); await TestHelpers.setDevToolElementCallDevUrl(page);
@@ -170,6 +171,22 @@ export class TestHelpers {
} }
} }
private static async maybeDismissBackupChat(page: Page): Promise<void> {
const toast = page
.locator(".mx_Toast_toast")
.getByText("Back up your chats");
try {
await expect(toast).toBeVisible({ timeout: 700 });
await page
.locator(".mx_Toast_toast")
.getByRole("button", { name: "Dismiss" })
.click();
} catch {
// toast not visible, continue as normal
}
}
public static async maybeDismissKeyBackupToast(page: Page): Promise<void> { public static async maybeDismissKeyBackupToast(page: Page): Promise<void> {
const toast = page const toast = page
.locator(".mx_Toast_toast") .locator(".mx_Toast_toast")

10
pnpm-lock.yaml generated
View File

@@ -148,8 +148,8 @@ importers:
specifier: ^10.0.0 specifier: ^10.0.0
version: 10.1.0(@types/react@19.2.14)(react@19.2.5) version: 10.1.0(@types/react@19.2.14)(react@19.2.5)
'@vector-im/compound-web': '@vector-im/compound-web':
specifier: ^9.0.0 specifier: ^9.3.0
version: 9.2.0(@fontsource/inconsolata@5.2.8)(@fontsource/inter@5.2.8)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(@vector-im/compound-design-tokens@10.1.0(@types/react@19.2.14)(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5) version: 9.3.0(@fontsource/inconsolata@5.2.8)(@fontsource/inter@5.2.8)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(@vector-im/compound-design-tokens@10.1.0(@types/react@19.2.14)(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@vitejs/plugin-react': '@vitejs/plugin-react':
specifier: ^4.0.1 specifier: ^4.0.1
version: 4.7.0(vite@8.0.8(@types/node@24.12.2)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3)) version: 4.7.0(vite@8.0.8(@types/node@24.12.2)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))
@@ -3105,8 +3105,8 @@ packages:
react: react:
optional: true optional: true
'@vector-im/compound-web@9.2.0': '@vector-im/compound-web@9.3.0':
resolution: {integrity: sha512-jHbABGEQ2yqNtm5xRIkklQs198VEfSk9AJQolI+e4WSJ0xg8Ozyv9t9KIuKQAmjdSV9aow5G6hDE861XB6DQgw==} resolution: {integrity: sha512-Elu4Uw8RbfP6JaudQYkVibALYT6qpwubqfKhteTxIPWBWzSYM+P5T+B1uX+ra+grNcXwXUt2xfMxpqYQsAHgYA==}
peerDependencies: peerDependencies:
'@fontsource/inconsolata': ^5 '@fontsource/inconsolata': ^5
'@fontsource/inter': ^5 '@fontsource/inter': ^5
@@ -9596,7 +9596,7 @@ snapshots:
'@types/react': 19.2.14 '@types/react': 19.2.14
react: 19.2.5 react: 19.2.5
'@vector-im/compound-web@9.2.0(@fontsource/inconsolata@5.2.8)(@fontsource/inter@5.2.8)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(@vector-im/compound-design-tokens@10.1.0(@types/react@19.2.14)(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': '@vector-im/compound-web@9.3.0(@fontsource/inconsolata@5.2.8)(@fontsource/inter@5.2.8)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(@vector-im/compound-design-tokens@10.1.0(@types/react@19.2.14)(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies: dependencies:
'@floating-ui/react': 0.27.19(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@floating-ui/react': 0.27.19(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@fontsource/inconsolata': 5.2.8 '@fontsource/inconsolata': 5.2.8

View File

@@ -87,7 +87,7 @@ export const RTCConnectionStats: FC<Props> = ({
<div> <div>
<Button <Button
onClick={() => showFullModal("audio")} onClick={() => showFullModal("audio")}
size="sm" size="md"
kind="tertiary" kind="tertiary"
Icon={MicOnSolidIcon} Icon={MicOnSolidIcon}
> >
@@ -103,7 +103,7 @@ export const RTCConnectionStats: FC<Props> = ({
<div> <div>
<Button <Button
onClick={() => showFullModal("video")} onClick={() => showFullModal("video")}
size="sm" size="md"
kind="tertiary" kind="tertiary"
Icon={VideoCallSolidIcon} Icon={VideoCallSolidIcon}
> >

View File

@@ -32,7 +32,7 @@ import { platform } from "../Platform";
interface MicButtonProps extends ComponentPropsWithoutRef<"button"> { interface MicButtonProps extends ComponentPropsWithoutRef<"button"> {
enabled: boolean; enabled: boolean;
size?: "sm" | "lg"; size?: "md" | "lg";
} }
export const MicButton: FC<MicButtonProps> = ({ enabled, ...props }) => { export const MicButton: FC<MicButtonProps> = ({ enabled, ...props }) => {
@@ -58,7 +58,7 @@ export const MicButton: FC<MicButtonProps> = ({ enabled, ...props }) => {
interface VideoButtonProps extends ComponentPropsWithoutRef<"button"> { interface VideoButtonProps extends ComponentPropsWithoutRef<"button"> {
enabled: boolean; enabled: boolean;
size?: "sm" | "lg"; size?: "md" | "lg";
} }
export const VideoButton: FC<VideoButtonProps> = ({ enabled, ...props }) => { export const VideoButton: FC<VideoButtonProps> = ({ enabled, ...props }) => {
@@ -84,7 +84,7 @@ export const VideoButton: FC<VideoButtonProps> = ({ enabled, ...props }) => {
interface ShareScreenButtonProps extends ComponentPropsWithoutRef<"button"> { interface ShareScreenButtonProps extends ComponentPropsWithoutRef<"button"> {
enabled: boolean; enabled: boolean;
size: "sm" | "lg"; size: "md" | "lg";
} }
export const ShareScreenButton: FC<ShareScreenButtonProps> = ({ export const ShareScreenButton: FC<ShareScreenButtonProps> = ({
@@ -111,7 +111,7 @@ export const ShareScreenButton: FC<ShareScreenButtonProps> = ({
}; };
interface EndCallButtonProps extends ComponentPropsWithoutRef<"button"> { interface EndCallButtonProps extends ComponentPropsWithoutRef<"button"> {
size?: "sm" | "lg"; size?: "md" | "lg";
} }
export const EndCallButton: FC<EndCallButtonProps> = ({ export const EndCallButton: FC<EndCallButtonProps> = ({
@@ -134,7 +134,7 @@ export const EndCallButton: FC<EndCallButtonProps> = ({
}; };
interface LoudspeakerButtonProps extends ComponentPropsWithoutRef<"button"> { interface LoudspeakerButtonProps extends ComponentPropsWithoutRef<"button"> {
size?: "sm" | "lg"; size?: "md" | "lg";
loudspeakerModeEnabled: boolean; loudspeakerModeEnabled: boolean;
} }
export const LoudspeakerButton: FC<LoudspeakerButtonProps> = ({ export const LoudspeakerButton: FC<LoudspeakerButtonProps> = ({
@@ -195,7 +195,7 @@ export const SettingsIconButton: FC<SettingsIconButtonProps> = ({
}; };
interface SettingsButtonProps extends ComponentPropsWithoutRef<"button"> { interface SettingsButtonProps extends ComponentPropsWithoutRef<"button"> {
size?: "sm" | "lg"; size?: "md" | "lg";
/** If this buttons should be setup to be used in the app bar */ /** If this buttons should be setup to be used in the app bar */
showForScreenWidth?: "wide" | "narrow"; showForScreenWidth?: "wide" | "narrow";
} }

View File

@@ -15,7 +15,7 @@ export const InviteButton: FC<
> = (props) => { > = (props) => {
const { t } = useTranslation(); const { t } = useTranslation();
return ( return (
<Button kind="secondary" size="sm" Icon={UserAddIcon} {...props}> <Button kind="secondary" size="md" Icon={UserAddIcon} {...props}>
{t("action.invite")} {t("action.invite")}
</Button> </Button>
); );

View File

@@ -173,7 +173,7 @@ export interface ReactionData {
interface ReactionToggleButtonProps extends ComponentPropsWithoutRef<"button"> { interface ReactionToggleButtonProps extends ComponentPropsWithoutRef<"button"> {
reactionData: ReactionData; reactionData: ReactionData;
identifier: string; identifier: string;
size?: "sm" | "lg"; size?: "md" | "lg";
/** List of participants raising their hand */ /** List of participants raising their hand */
} }

View File

@@ -10,7 +10,7 @@ exports[`Can close reaction dialog 1`] = `
aria-expanded="true" aria-expanded="true"
aria-haspopup="true" aria-haspopup="true"
aria-labelledby="_r_bb_" aria-labelledby="_r_bb_"
class="_button_13vu4_8 _has-icon_13vu4_60 _icon-only_13vu4_53" class="_button_1nw83_8 _has-icon_1nw83_60 _icon-only_1nw83_53"
data-kind="primary" data-kind="primary"
data-size="lg" data-size="lg"
role="button" role="button"
@@ -44,7 +44,7 @@ exports[`Can fully expand emoji picker 1`] = `
aria-expanded="true" aria-expanded="true"
aria-haspopup="true" aria-haspopup="true"
aria-labelledby="_r_7m_" aria-labelledby="_r_7m_"
class="_button_13vu4_8 _has-icon_13vu4_60 _icon-only_13vu4_53" class="_button_1nw83_8 _has-icon_1nw83_60 _icon-only_1nw83_53"
data-kind="primary" data-kind="primary"
data-size="lg" data-size="lg"
role="button" role="button"
@@ -75,7 +75,7 @@ exports[`Can lower hand 1`] = `
aria-expanded="false" aria-expanded="false"
aria-haspopup="true" aria-haspopup="true"
aria-labelledby="_r_36_" aria-labelledby="_r_36_"
class="_button_13vu4_8 _has-icon_13vu4_60 _icon-only_13vu4_53" class="_button_1nw83_8 _has-icon_1nw83_60 _icon-only_1nw83_53"
data-kind="secondary" data-kind="secondary"
data-size="lg" data-size="lg"
role="button" role="button"
@@ -109,7 +109,7 @@ exports[`Can open menu 1`] = `
aria-expanded="true" aria-expanded="true"
aria-haspopup="true" aria-haspopup="true"
aria-labelledby="_r_0_" aria-labelledby="_r_0_"
class="_button_13vu4_8 _has-icon_13vu4_60 _icon-only_13vu4_53" class="_button_1nw83_8 _has-icon_1nw83_60 _icon-only_1nw83_53"
data-kind="primary" data-kind="primary"
data-size="lg" data-size="lg"
role="button" role="button"
@@ -140,7 +140,7 @@ exports[`Can raise hand 1`] = `
aria-expanded="false" aria-expanded="false"
aria-haspopup="true" aria-haspopup="true"
aria-labelledby="_r_1j_" aria-labelledby="_r_1j_"
class="_button_13vu4_8 raisedButton _has-icon_13vu4_60 _icon-only_13vu4_53" class="_button_1nw83_8 raisedButton _has-icon_1nw83_60 _icon-only_1nw83_53"
data-kind="primary" data-kind="primary"
data-size="lg" data-size="lg"
role="button" role="button"

View File

@@ -101,7 +101,7 @@ export const CallFooter: FC<FooterProps> = ({
tileStoreGeneration, tileStoreGeneration,
}) => { }) => {
const buttons: JSX.Element[] = []; const buttons: JSX.Element[] = [];
const buttonSize = asPip ? "sm" : "lg"; const buttonSize = asPip ? "md" : "lg";
const showSettingsButton = const showSettingsButton =
openSettings !== undefined && !asPip && !hideControls; openSettings !== undefined && !asPip && !hideControls;
const showLayoutSwitcher = !asPip && !hideControls; const showLayoutSwitcher = !asPip && !hideControls;

View File

@@ -113,7 +113,7 @@ export const AvatarInputField: FC<Props> = ({
iconOnly iconOnly
Icon={EditIcon} Icon={EditIcon}
kind="tertiary" kind="tertiary"
size="sm" size="md"
aria-label={t("action.edit")} aria-label={t("action.edit")}
/> />
} }
@@ -136,7 +136,7 @@ export const AvatarInputField: FC<Props> = ({
iconOnly iconOnly
Icon={EditIcon} Icon={EditIcon}
kind="tertiary" kind="tertiary"
size="sm" size="md"
aria-label={t("action.edit")} aria-label={t("action.edit")}
onClick={onSelectUpload} onClick={onSelectUpload}
/> />

View File

@@ -30,7 +30,7 @@ export const EarpieceOverlay: FC<Props> = ({ show, onBackToVideoPressed }) => {
<Text>{t("handset.overlay_description")}</Text> <Text>{t("handset.overlay_description")}</Text>
<Button <Button
kind="primary" kind="primary"
size="sm" size="md"
onClick={() => { onClick={() => {
onBackToVideoPressed?.(); onBackToVideoPressed?.();
}} }}

View File

@@ -209,7 +209,7 @@ export const LobbyView: FC<Props> = ({
className={classNames(styles.join, { className={classNames(styles.join, {
[styles.wait]: waitingForInvite, [styles.wait]: waitingForInvite,
})} })}
size={waitingForInvite ? "sm" : "lg"} size={waitingForInvite ? "md" : "lg"}
disabled={waitingForInvite} disabled={waitingForInvite}
onClick={() => { onClick={() => {
if (!waitingForInvite) onEnter(); if (!waitingForInvite) onEnter();

View File

@@ -134,7 +134,7 @@ exports[`ConnectionLostError: Action handling should reset error state 1`] = `
You were disconnected from the call. You were disconnected from the call.
</p> </p>
<button <button
class="_button_13vu4_8" class="_button_1nw83_8"
data-kind="secondary" data-kind="secondary"
data-size="lg" data-size="lg"
role="button" role="button"
@@ -143,7 +143,7 @@ exports[`ConnectionLostError: Action handling should reset error state 1`] = `
Reconnect Reconnect
</button> </button>
<button <button
class="_button_13vu4_8 homeLink" class="_button_1nw83_8 homeLink"
data-kind="tertiary" data-kind="tertiary"
data-size="lg" data-size="lg"
role="button" role="button"
@@ -297,7 +297,7 @@ exports[`should have a close button in widget mode 1`] = `
The server is not configured to work with Element Call. Please contact your server admin (Domain: example.com, Error Code: MISSING_MATRIX_RTC_TRANSPORT). The server is not configured to work with Element Call. Please contact your server admin (Domain: example.com, Error Code: MISSING_MATRIX_RTC_TRANSPORT).
</p> </p>
<button <button
class="_button_13vu4_8" class="_button_1nw83_8"
data-kind="primary" data-kind="primary"
data-size="lg" data-size="lg"
role="button" role="button"
@@ -451,7 +451,7 @@ exports[`should render the error page with link back to home 1`] = `
The server is not configured to work with Element Call. Please contact your server admin (Domain: example.com, Error Code: MISSING_MATRIX_RTC_TRANSPORT). The server is not configured to work with Element Call. Please contact your server admin (Domain: example.com, Error Code: MISSING_MATRIX_RTC_TRANSPORT).
</p> </p>
<button <button
class="_button_13vu4_8 homeLink" class="_button_1nw83_8 homeLink"
data-kind="tertiary" data-kind="tertiary"
data-size="lg" data-size="lg"
role="button" role="button"
@@ -605,7 +605,7 @@ exports[`should report correct error for 'Call is not supported' 1`] = `
The server is not configured to work with Element Call. Please contact your server admin (Domain: example.com, Error Code: MISSING_MATRIX_RTC_TRANSPORT). The server is not configured to work with Element Call. Please contact your server admin (Domain: example.com, Error Code: MISSING_MATRIX_RTC_TRANSPORT).
</p> </p>
<button <button
class="_button_13vu4_8 homeLink" class="_button_1nw83_8 homeLink"
data-kind="tertiary" data-kind="tertiary"
data-size="lg" data-size="lg"
role="button" role="button"
@@ -754,7 +754,7 @@ exports[`should report correct error for 'Connection lost' 1`] = `
You were disconnected from the call. You were disconnected from the call.
</p> </p>
<button <button
class="_button_13vu4_8" class="_button_1nw83_8"
data-kind="secondary" data-kind="secondary"
data-size="lg" data-size="lg"
role="button" role="button"
@@ -763,7 +763,7 @@ exports[`should report correct error for 'Connection lost' 1`] = `
Reconnect Reconnect
</button> </button>
<button <button
class="_button_13vu4_8 homeLink" class="_button_1nw83_8 homeLink"
data-kind="tertiary" data-kind="tertiary"
data-size="lg" data-size="lg"
role="button" role="button"
@@ -912,7 +912,7 @@ exports[`should report correct error for 'Incompatible browser' 1`] = `
Your web browser does not support encrypted calls. Supported browsers include Chrome, Safari, and Firefox 117+. Your web browser does not support encrypted calls. Supported browsers include Chrome, Safari, and Firefox 117+.
</p> </p>
<button <button
class="_button_13vu4_8 homeLink" class="_button_1nw83_8 homeLink"
data-kind="tertiary" data-kind="tertiary"
data-size="lg" data-size="lg"
role="button" role="button"
@@ -1061,7 +1061,7 @@ exports[`should report correct error for 'Insufficient capacity' 1`] = `
The server has reached its maximum capacity and you cannot join the call at this time. Try again later, or contact your server admin if the problem persists. The server has reached its maximum capacity and you cannot join the call at this time. Try again later, or contact your server admin if the problem persists.
</p> </p>
<button <button
class="_button_13vu4_8 homeLink" class="_button_1nw83_8 homeLink"
data-kind="tertiary" data-kind="tertiary"
data-size="lg" data-size="lg"
role="button" role="button"

View File

@@ -147,9 +147,9 @@ exports[`InCallView > rendering > renders 1`] = `
Only works while using app Only works while using app
</p> </p>
<button <button
class="_button_13vu4_8" class="_button_1nw83_8"
data-kind="primary" data-kind="primary"
data-size="sm" data-size="md"
role="button" role="button"
tabindex="0" tabindex="0"
> >
@@ -305,7 +305,7 @@ exports[`InCallView > rendering > renders 1`] = `
> >
<button <button
aria-labelledby="_r_d_" aria-labelledby="_r_d_"
class="_button_13vu4_8 settingsOnlyShowNarrow _has-icon_13vu4_60 _icon-only_13vu4_53" class="_button_1nw83_8 settingsOnlyShowNarrow _has-icon_1nw83_60 _icon-only_1nw83_53"
data-kind="secondary" data-kind="secondary"
data-size="lg" data-size="lg"
data-testid="settings-bottom-center" data-testid="settings-bottom-center"
@@ -329,7 +329,7 @@ exports[`InCallView > rendering > renders 1`] = `
aria-checked="false" aria-checked="false"
aria-disabled="true" aria-disabled="true"
aria-labelledby="_r_i_" aria-labelledby="_r_i_"
class="_button_13vu4_8 _has-icon_13vu4_60 _icon-only_13vu4_53" class="_button_1nw83_8 _has-icon_1nw83_60 _icon-only_1nw83_53"
data-kind="primary" data-kind="primary"
data-size="lg" data-size="lg"
data-testid="incall_mute" data-testid="incall_mute"
@@ -353,7 +353,7 @@ exports[`InCallView > rendering > renders 1`] = `
aria-checked="false" aria-checked="false"
aria-disabled="true" aria-disabled="true"
aria-labelledby="_r_n_" aria-labelledby="_r_n_"
class="_button_13vu4_8 _has-icon_13vu4_60 _icon-only_13vu4_53" class="_button_1nw83_8 _has-icon_1nw83_60 _icon-only_1nw83_53"
data-kind="primary" data-kind="primary"
data-size="lg" data-size="lg"
data-testid="incall_videomute" data-testid="incall_videomute"
@@ -375,7 +375,7 @@ exports[`InCallView > rendering > renders 1`] = `
</button> </button>
<button <button
aria-labelledby="_r_s_" aria-labelledby="_r_s_"
class="_button_13vu4_8 endCall _has-icon_13vu4_60 _icon-only_13vu4_53 _destructive_13vu4_110" class="_button_1nw83_8 endCall _has-icon_1nw83_60 _icon-only_1nw83_53 _destructive_1nw83_110"
data-kind="primary" data-kind="primary"
data-size="lg" data-size="lg"
data-testid="incall_leave" data-testid="incall_leave"