Skip to content

Commit 5873a04

Browse files
sirtimidclaude
andcommitted
chore(deps): Update MetaMask design system and React to v18
- Update @metamask/design-system-react: ^0.1.0 → ^0.6.0 - Update @metamask/design-system-tailwind-preset: ^0.5.0 → ^0.6.1 - Update @metamask/design-tokens: ^8.0.0 → ^8.1.1 - Update react and react-dom: ^17.0.2 → ^18.3.1 - Update @types/react and @types/react-dom to v18 - Update @testing-library/react: ^12.1.5 → ^16.3.0 - Update @radix-ui/react-slot: 1.2.3 → 1.2.4 (removes patch) Code changes for React 18 compatibility: - Use createRoot API instead of deprecated render - Explicitly type children prop in TableHeader (React 18 change) - Update test imports from @testing-library/react-hooks to @testing-library/react - Update Vite config for React externals Co-Authored-By: Claude Opus 4.5 <[email protected]>
1 parent 8c4f04b commit 5873a04

22 files changed

+197
-345
lines changed

.yarn/patches/@radix-ui-react-slot-npm-1.2.3-6e45e6d89b.patch

Lines changed: 0 additions & 13 deletions
This file was deleted.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@
125125
}
126126
},
127127
"resolutions": {
128-
"@radix-ui/react-slot@npm:^1.1.0": "patch:@radix-ui/react-slot@npm%3A1.2.3#~/.yarn/patches/@radix-ui-react-slot-npm-1.2.3-6e45e6d89b.patch",
128+
"@radix-ui/react-slot@npm:^1.1.0": "1.2.4",
129129
"cookie": "^0.7.0",
130130
"@chainsafe/libp2p-noise": "16.1.5",
131131
"@libp2p/interface": "2.11.0",

packages/extension/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@
5151
"@metamask/ocap-kernel": "workspace:^",
5252
"@metamask/streams": "workspace:^",
5353
"@metamask/utils": "^11.9.0",
54-
"react": "^17.0.2",
55-
"react-dom": "^17.0.2",
54+
"react": "^18.3.1",
55+
"react-dom": "^18.3.1",
5656
"ses": "^1.14.0"
5757
},
5858
"devDependencies": {
@@ -67,8 +67,8 @@
6767
"@playwright/test": "^1.54.2",
6868
"@testing-library/jest-dom": "^6.6.3",
6969
"@types/chrome": "^0.0.313",
70-
"@types/react": "^17.0.11",
71-
"@types/react-dom": "^17.0.11",
70+
"@types/react": "^18.3.18",
71+
"@types/react-dom": "^18.3.5",
7272
"@typescript-eslint/eslint-plugin": "^8.29.0",
7373
"@typescript-eslint/parser": "^8.29.0",
7474
"@typescript-eslint/utils": "^8.29.0",

packages/extension/src/popup.test.tsx

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
import { App } from '@metamask/kernel-ui';
2-
import { render } from 'react-dom';
2+
import { createRoot } from 'react-dom/client';
33
import { describe, it, expect, vi, beforeEach } from 'vitest';
44

5-
vi.mock('react-dom', () => ({
6-
render: vi.fn(),
5+
const mockRender = vi.fn();
6+
7+
vi.mock('react-dom/client', () => ({
8+
createRoot: vi.fn(() => ({
9+
render: mockRender,
10+
})),
711
}));
812

913
vi.mock('@metamask/kernel-ui', () => ({
@@ -13,15 +17,17 @@ vi.mock('@metamask/kernel-ui', () => ({
1317
describe('popup', () => {
1418
beforeEach(() => {
1519
document.body.innerHTML = '';
20+
vi.clearAllMocks();
1621
});
1722

18-
it('should create root element and mount App', async () => {
23+
it('creates root element and mounts App', async () => {
1924
const root = document.createElement('div');
2025
root.id = 'root';
2126
document.body.appendChild(root);
2227
await import('./popup.tsx');
23-
expect(render).toHaveBeenCalledWith(expect.any(Object), root);
24-
const renderArgs = vi.mocked(render).mock.calls[0];
28+
expect(createRoot).toHaveBeenCalledWith(root);
29+
expect(mockRender).toHaveBeenCalledWith(expect.any(Object));
30+
const renderArgs = mockRender.mock.calls[0];
2531
expect(renderArgs).toBeDefined();
2632
expect(renderArgs?.[0]).toBeDefined();
2733
expect((renderArgs?.[0] as unknown as React.ReactElement)?.type).toBe(App);

packages/extension/src/popup.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import '@metamask/kernel-ui/styles.css';
22
import { App } from '@metamask/kernel-ui';
33
import { createElement } from 'react';
4-
import { render } from 'react-dom';
4+
import { createRoot } from 'react-dom/client';
55

6-
render(createElement(App), document.getElementById('root'));
6+
createRoot(document.getElementById('root') as HTMLElement).render(
7+
createElement(App),
8+
);

packages/kernel-ui/package.json

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,9 @@
5959
"test:watch": "vitest --config vitest.config.ts"
6060
},
6161
"dependencies": {
62-
"@metamask/design-system-react": "^0.1.0",
63-
"@metamask/design-system-tailwind-preset": "^0.5.0",
64-
"@metamask/design-tokens": "^8.0.0",
62+
"@metamask/design-system-react": "^0.6.0",
63+
"@metamask/design-system-tailwind-preset": "^0.6.1",
64+
"@metamask/design-tokens": "^8.1.1",
6565
"@metamask/kernel-browser-runtime": "workspace:^",
6666
"@metamask/kernel-rpc-methods": "workspace:^",
6767
"@metamask/kernel-utils": "workspace:^",
@@ -71,8 +71,8 @@
7171
"tailwindcss": "^3.0.0"
7272
},
7373
"peerDependencies": {
74-
"react": "^17.0.2",
75-
"react-dom": "^17.0.2"
74+
"react": "^18.3.1",
75+
"react-dom": "^18.3.1"
7676
},
7777
"devDependencies": {
7878
"@arethetypeswrong/cli": "^0.17.4",
@@ -84,14 +84,13 @@
8484
"@solana/addresses": "^2.0.0",
8585
"@testing-library/dom": "^10.4.0",
8686
"@testing-library/jest-dom": "^6.6.3",
87-
"@testing-library/react": "^12.1.5",
88-
"@testing-library/react-hooks": "^8.0.1",
87+
"@testing-library/react": "^16.3.0",
8988
"@testing-library/user-event": "^14.6.1",
9089
"@ts-bridge/cli": "^0.6.3",
9190
"@ts-bridge/shims": "^0.1.1",
9291
"@types/chrome": "^0.0.313",
93-
"@types/react": "^17.0.11",
94-
"@types/react-dom": "^17.0.11",
92+
"@types/react": "^18.3.18",
93+
"@types/react-dom": "^18.3.5",
9594
"@typescript-eslint/eslint-plugin": "^8.29.0",
9695
"@typescript-eslint/parser": "^8.29.0",
9796
"@typescript-eslint/utils": "^8.29.0",

packages/kernel-ui/src/components/table/TableHeader.tsx

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
1+
import type { PropsWithChildren } from 'react';
12
import {
23
Text as TextComponent,
34
TextVariant,
45
TextColor,
56
FontWeight,
67
} from '@metamask/design-system-react';
78

8-
export const TableHeader: React.FC<{
9-
first?: boolean;
10-
variant?: TextVariant;
11-
}> = ({ first, variant = TextVariant.BodyXs, children }) => {
9+
export const TableHeader: React.FC<
10+
PropsWithChildren<{
11+
first?: boolean;
12+
variant?: TextVariant;
13+
}>
14+
> = ({ first, variant = TextVariant.BodyXs, children }) => {
1215
return (
1316
<th
1417
className={`text-left py-2 px-3 ${first ? 'border-r border-muted' : ''}`}

packages/kernel-ui/src/context/PanelContext.test.tsx

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
import { waitFor } from '@testing-library/react';
2-
import { renderHook } from '@testing-library/react-hooks';
1+
import { waitFor, renderHook } from '@testing-library/react';
32
import { describe, it, expect, vi } from 'vitest';
43

54
vi.mock('@metamask/kernel-utils', () => ({
@@ -259,11 +258,10 @@ describe('PanelContext', () => {
259258
});
260259

261260
describe('usePanelContext', () => {
262-
it('should throw error when used outside of PanelProvider', async () => {
261+
it('throws error when used outside of PanelProvider', async () => {
263262
const { usePanelContext } = await import('./PanelContext.tsx');
264-
const { result } = renderHook(() => usePanelContext());
265-
expect(result.error).toStrictEqual(
266-
new Error('usePanelContext must be used within a PanelProvider'),
263+
expect(() => renderHook(() => usePanelContext())).toThrow(
264+
'usePanelContext must be used within a PanelProvider',
267265
);
268266
});
269267
});

packages/kernel-ui/src/hooks/useDarkMode.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { renderHook } from '@testing-library/react-hooks';
1+
import { renderHook } from '@testing-library/react';
22
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
33

44
import { useDarkMode } from './useDarkMode.ts';

packages/kernel-ui/src/hooks/useDatabase.test.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
import { waitFor } from '@testing-library/react';
2-
import { renderHook } from '@testing-library/react-hooks';
1+
import { waitFor, renderHook } from '@testing-library/react';
32
import { describe, it, expect, vi, beforeEach } from 'vitest';
43

54
import { useDatabase } from './useDatabase.ts';

0 commit comments

Comments
 (0)