Skip to content

Commit 174a99b

Browse files
authored
Merge pull request #105 from reactjs/sync-b22cbc3f
Sync with react.dev @ b22cbc3
2 parents 86d4327 + 9628d3a commit 174a99b

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

61 files changed

+2002
-544
lines changed

.eslintrc

+5-3
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@
22
"root": true,
33
"extends": "next/core-web-vitals",
44
"parser": "@typescript-eslint/parser",
5-
"plugins": ["@typescript-eslint"],
5+
"plugins": ["@typescript-eslint", "eslint-plugin-react-compiler"],
66
"rules": {
77
"no-unused-vars": "off",
8-
"@typescript-eslint/no-unused-vars": ["error", { "varsIgnorePattern": "^_" }],
9-
"react-hooks/exhaustive-deps": "error"
8+
"@typescript-eslint/no-unused-vars": ["error", {"varsIgnorePattern": "^_"}],
9+
"react-hooks/exhaustive-deps": "error",
10+
"react/no-unknown-property": ["error", {"ignore": ["meta"]}],
11+
"react-compiler/react-compiler": "error"
1012
},
1113
"env": {
1214
"node": true,

next-env.d.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22
/// <reference types="next/image-types/global" />
33

44
// NOTE: This file should not be edited
5-
// see https://nextjs.org/docs/basic-features/typescript for more information.
5+
// see https://nextjs.org/docs/pages/api-reference/config/typescript for more information.

next.config.js

+1-3
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,8 @@ const nextConfig = {
99
pageExtensions: ['jsx', 'js', 'ts', 'tsx', 'mdx', 'md'],
1010
reactStrictMode: true,
1111
experimental: {
12-
// TODO: Remove after https://github.com/vercel/next.js/issues/49355 is fixed
13-
appDir: false,
1412
scrollRestoration: true,
15-
legacyBrowsers: false,
13+
reactCompiler: true,
1614
},
1715
env: {},
1816
webpack: (config, {dev, isServer, ...options}) => {

package.json

+11-9
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
"ci-check": "npm-run-all prettier:diff --parallel lint tsc lint-heading-ids rss",
1919
"tsc": "tsc --noEmit",
2020
"start": "next start",
21-
"postinstall": "patch-package && (is-ci || husky install .husky)",
21+
"postinstall": "is-ci || husky install .husky",
2222
"check-all": "npm-run-all prettier lint:fix tsc rss",
2323
"rss": "node scripts/generateRss.js"
2424
},
@@ -33,12 +33,12 @@
3333
"date-fns": "^2.16.1",
3434
"debounce": "^1.2.1",
3535
"github-slugger": "^1.3.0",
36-
"next": "^13.4.1",
36+
"next": "15.1.0",
3737
"next-remote-watch": "^1.0.0",
3838
"parse-numeric-range": "^1.2.0",
39-
"react": "^0.0.0-experimental-16d053d59-20230506",
39+
"react": "^19.0.0",
4040
"react-collapsed": "4.0.4",
41-
"react-dom": "^0.0.0-experimental-16d053d59-20230506",
41+
"react-dom": "^19.0.0",
4242
"remark-frontmatter": "^4.0.1",
4343
"remark-gfm": "^3.0.1"
4444
},
@@ -54,20 +54,22 @@
5454
"@types/mdx-js__react": "^1.5.2",
5555
"@types/node": "^14.6.4",
5656
"@types/parse-numeric-range": "^0.0.1",
57-
"@types/react": "^18.0.9",
58-
"@types/react-dom": "^18.0.5",
57+
"@types/react": "^19.0.0",
58+
"@types/react-dom": "^19.0.0",
5959
"@typescript-eslint/eslint-plugin": "^5.36.2",
6060
"@typescript-eslint/parser": "^5.36.2",
6161
"asyncro": "^3.0.0",
6262
"autoprefixer": "^10.4.2",
6363
"babel-eslint": "10.x",
64+
"babel-plugin-react-compiler": "19.0.0-beta-e552027-20250112",
6465
"eslint": "7.x",
6566
"eslint-config-next": "12.0.3",
6667
"eslint-config-react-app": "^5.2.1",
6768
"eslint-plugin-flowtype": "4.x",
6869
"eslint-plugin-import": "2.x",
6970
"eslint-plugin-jsx-a11y": "6.x",
7071
"eslint-plugin-react": "7.x",
72+
"eslint-plugin-react-compiler": "^19.0.0-beta-e552027-20250112",
7173
"eslint-plugin-react-hooks": "^0.0.0-experimental-fabef7a6b-20221215",
7274
"fs-extra": "^9.0.1",
7375
"globby": "^11.0.1",
@@ -78,7 +80,6 @@
7880
"mdast-util-to-string": "^1.1.0",
7981
"metro-cache": "0.72.2",
8082
"npm-run-all": "^4.1.5",
81-
"patch-package": "^6.2.2",
8283
"postcss": "^8.4.5",
8384
"postcss-flexbugs-fixes": "4.2.1",
8485
"postcss-preset-env": "^6.7.0",
@@ -94,7 +95,7 @@
9495
"retext-smartypants": "^4.0.0",
9596
"rss": "^1.2.2",
9697
"tailwindcss": "^3.4.1",
97-
"typescript": "^4.0.2",
98+
"typescript": "^5.7.2",
9899
"unist-util-visit": "^2.0.3",
99100
"webpack-bundle-analyzer": "^4.5.0"
100101
},
@@ -109,5 +110,6 @@
109110
"lint-staged": {
110111
"*.{js,ts,jsx,tsx,css}": "yarn prettier",
111112
"src/**/*.md": "yarn fix-headings"
112-
}
113+
},
114+
"packageManager": "[email protected]"
113115
}

patches/next+13.4.1.patch

-22
This file was deleted.

patches/next-remote-watch+1.0.0.patch

-16
This file was deleted.

src/components/ExternalLink.tsx

+5-1
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
11
/*
22
* Copyright (c) Facebook, Inc. and its affiliates.
33
*/
4+
import type {DetailedHTMLProps, AnchorHTMLAttributes} from 'react';
45

56
export function ExternalLink({
67
href,
78
target,
89
children,
910
...props
10-
}: JSX.IntrinsicElements['a']) {
11+
}: DetailedHTMLProps<
12+
AnchorHTMLAttributes<HTMLAnchorElement>,
13+
HTMLAnchorElement
14+
>) {
1115
return (
1216
<a href={href} target={target ?? '_blank'} rel="noopener" {...props}>
1317
{children}

src/components/Icon/IconArrow.tsx

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@
44

55
import {memo} from 'react';
66
import cn from 'classnames';
7+
import type {SVGProps} from 'react';
78

89
export const IconArrow = memo<
9-
JSX.IntrinsicElements['svg'] & {
10+
SVGProps<SVGSVGElement> & {
1011
/**
1112
* The direction the arrow should point.
1213
* `start` and `end` are relative to the current locale.

src/components/Icon/IconArrowSmall.tsx

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@
44

55
import {memo} from 'react';
66
import cn from 'classnames';
7+
import type {SVGProps} from 'react';
78

89
export const IconArrowSmall = memo<
9-
JSX.IntrinsicElements['svg'] & {
10+
SVGProps<SVGSVGElement> & {
1011
/**
1112
* The direction the arrow should point.
1213
* `start` and `end` are relative to the current locale.

src/components/Icon/IconBsky.tsx

+2-3
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,9 @@
33
*/
44

55
import {memo} from 'react';
6+
import type {SVGProps} from 'react';
67

7-
export const IconBsky = memo<JSX.IntrinsicElements['svg']>(function IconBsky(
8-
props
9-
) {
8+
export const IconBsky = memo<SVGProps<SVGSVGElement>>(function IconBsky(props) {
109
return (
1110
<svg
1211
aria-label="Bluesky"

src/components/Icon/IconClose.tsx

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@
33
*/
44

55
import {memo} from 'react';
6+
import type {SVGProps} from 'react';
67

7-
export const IconClose = memo<JSX.IntrinsicElements['svg']>(function IconClose(
8+
export const IconClose = memo<SVGProps<SVGSVGElement>>(function IconClose(
89
props
910
) {
1011
return (

src/components/Icon/IconFacebookCircle.tsx

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@
33
*/
44

55
import {memo} from 'react';
6+
import type {SVGProps} from 'react';
67

7-
export const IconFacebookCircle = memo<JSX.IntrinsicElements['svg']>(
8+
export const IconFacebookCircle = memo<SVGProps<SVGSVGElement>>(
89
function IconFacebookCircle(props) {
910
return (
1011
<svg

src/components/Icon/IconGitHub.tsx

+16-15
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,20 @@
33
*/
44

55
import {memo} from 'react';
6+
import type {SVGProps} from 'react';
67

7-
export const IconGitHub = memo<JSX.IntrinsicElements['svg']>(
8-
function IconGitHub(props) {
9-
return (
10-
<svg
11-
xmlns="http://www.w3.org/2000/svg"
12-
width="1.5em"
13-
height="1.5em"
14-
viewBox="0 -2 24 24"
15-
fill="currentColor"
16-
{...props}>
17-
<path d="M10 0a10 10 0 0 0-3.16 19.49c.5.1.68-.22.68-.48l-.01-1.7c-2.78.6-3.37-1.34-3.37-1.34-.46-1.16-1.11-1.47-1.11-1.47-.9-.62.07-.6.07-.6 1 .07 1.53 1.03 1.53 1.03.9 1.52 2.34 1.08 2.91.83.1-.65.35-1.09.63-1.34-2.22-.25-4.55-1.11-4.55-4.94 0-1.1.39-1.99 1.03-2.69a3.6 3.6 0 0 1 .1-2.64s.84-.27 2.75 1.02a9.58 9.58 0 0 1 5 0c1.91-1.3 2.75-1.02 2.75-1.02.55 1.37.2 2.4.1 2.64.64.7 1.03 1.6 1.03 2.69 0 3.84-2.34 4.68-4.57 4.93.36.31.68.92.68 1.85l-.01 2.75c0 .26.18.58.69.48A10 10 0 0 0 10 0"></path>
18-
</svg>
19-
);
20-
}
21-
);
8+
export const IconGitHub = memo<SVGProps<SVGSVGElement>>(function IconGitHub(
9+
props
10+
) {
11+
return (
12+
<svg
13+
xmlns="http://www.w3.org/2000/svg"
14+
width="1.5em"
15+
height="1.5em"
16+
viewBox="0 -2 24 24"
17+
fill="currentColor"
18+
{...props}>
19+
<path d="M10 0a10 10 0 0 0-3.16 19.49c.5.1.68-.22.68-.48l-.01-1.7c-2.78.6-3.37-1.34-3.37-1.34-.46-1.16-1.11-1.47-1.11-1.47-.9-.62.07-.6.07-.6 1 .07 1.53 1.03 1.53 1.03.9 1.52 2.34 1.08 2.91.83.1-.65.35-1.09.63-1.34-2.22-.25-4.55-1.11-4.55-4.94 0-1.1.39-1.99 1.03-2.69a3.6 3.6 0 0 1 .1-2.64s.84-.27 2.75 1.02a9.58 9.58 0 0 1 5 0c1.91-1.3 2.75-1.02 2.75-1.02.55 1.37.2 2.4.1 2.64.64.7 1.03 1.6 1.03 2.69 0 3.84-2.34 4.68-4.57 4.93.36.31.68.92.68 1.85l-.01 2.75c0 .26.18.58.69.48A10 10 0 0 0 10 0"></path>
20+
</svg>
21+
);
22+
});

src/components/Icon/IconHamburger.tsx

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@
33
*/
44

55
import {memo} from 'react';
6+
import type {SVGProps} from 'react';
67

7-
export const IconHamburger = memo<JSX.IntrinsicElements['svg']>(
8+
export const IconHamburger = memo<SVGProps<SVGSVGElement>>(
89
function IconHamburger(props) {
910
return (
1011
<svg

src/components/Icon/IconInstagram.tsx

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@
33
*/
44

55
import {memo} from 'react';
6+
import type {SVGProps} from 'react';
67

7-
export const IconInstagram = memo<JSX.IntrinsicElements['svg']>(
8+
export const IconInstagram = memo<SVGProps<SVGSVGElement>>(
89
function IconInstagram(props) {
910
return (
1011
<svg

src/components/Icon/IconLink.tsx

+2-3
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,9 @@
33
*/
44

55
import {memo} from 'react';
6+
import type {SVGProps} from 'react';
67

7-
export const IconLink = memo<JSX.IntrinsicElements['svg']>(function IconLink(
8-
props
9-
) {
8+
export const IconLink = memo<SVGProps<SVGSVGElement>>(function IconLink(props) {
109
return (
1110
<svg
1211
xmlns="http://www.w3.org/2000/svg"

src/components/Icon/IconNewPage.tsx

+23-22
Original file line numberDiff line numberDiff line change
@@ -3,26 +3,27 @@
33
*/
44

55
import {memo} from 'react';
6+
import type {SVGProps} from 'react';
67

7-
export const IconNewPage = memo<JSX.IntrinsicElements['svg']>(
8-
function IconNewPage(props) {
9-
return (
10-
<svg
11-
width="1em"
12-
height="1em"
13-
viewBox="0 0 24 24"
14-
fill="none"
15-
xmlns="http://www.w3.org/2000/svg"
16-
{...props}>
17-
<path
18-
d="M20.5001 2H15.5001C15.3675 2 15.2403 2.05268 15.1465 2.14645C15.0528 2.24021 15.0001 2.36739 15.0001 2.5V3.5C15.0001 3.63261 15.0528 3.75979 15.1465 3.85355C15.2403 3.94732 15.3675 4 15.5001 4H18.5901L7.6501 14.94C7.60323 14.9865 7.56604 15.0418 7.54065 15.1027C7.51527 15.1636 7.5022 15.229 7.5022 15.295C7.5022 15.361 7.51527 15.4264 7.54065 15.4873C7.56604 15.5482 7.60323 15.6035 7.6501 15.65L8.3501 16.35C8.39658 16.3969 8.45188 16.4341 8.51281 16.4594C8.57374 16.4848 8.63909 16.4979 8.7051 16.4979C8.7711 16.4979 8.83646 16.4848 8.89738 16.4594C8.95831 16.4341 9.01362 16.3969 9.0601 16.35L20.0001 5.41V8.5C20.0001 8.63261 20.0528 8.75979 20.1465 8.85355C20.2403 8.94732 20.3675 9 20.5001 9H21.5001C21.6327 9 21.7599 8.94732 21.8537 8.85355C21.9474 8.75979 22.0001 8.63261 22.0001 8.5V3.5C22.0001 3.10218 21.8421 2.72064 21.5608 2.43934C21.2795 2.15804 20.8979 2 20.5001 2V2Z"
19-
fill="currentColor"
20-
/>
21-
<path
22-
d="M21.5 13H20.5C20.3674 13 20.2402 13.0527 20.1464 13.1464C20.0527 13.2402 20 13.3674 20 13.5V20H4V4H10.5C10.6326 4 10.7598 3.94732 10.8536 3.85355C10.9473 3.75979 11 3.63261 11 3.5V2.5C11 2.36739 10.9473 2.24021 10.8536 2.14645C10.7598 2.05268 10.6326 2 10.5 2H3.5C3.10218 2 2.72064 2.15804 2.43934 2.43934C2.15804 2.72064 2 3.10218 2 3.5V20.5C2 20.8978 2.15804 21.2794 2.43934 21.5607C2.72064 21.842 3.10218 22 3.5 22H20.5C20.8978 22 21.2794 21.842 21.5607 21.5607C21.842 21.2794 22 20.8978 22 20.5V13.5C22 13.3674 21.9473 13.2402 21.8536 13.1464C21.7598 13.0527 21.6326 13 21.5 13Z"
23-
fill="currentColor"
24-
/>
25-
</svg>
26-
);
27-
}
28-
);
8+
export const IconNewPage = memo<SVGProps<SVGSVGElement>>(function IconNewPage(
9+
props
10+
) {
11+
return (
12+
<svg
13+
width="1em"
14+
height="1em"
15+
viewBox="0 0 24 24"
16+
fill="none"
17+
xmlns="http://www.w3.org/2000/svg"
18+
{...props}>
19+
<path
20+
d="M20.5001 2H15.5001C15.3675 2 15.2403 2.05268 15.1465 2.14645C15.0528 2.24021 15.0001 2.36739 15.0001 2.5V3.5C15.0001 3.63261 15.0528 3.75979 15.1465 3.85355C15.2403 3.94732 15.3675 4 15.5001 4H18.5901L7.6501 14.94C7.60323 14.9865 7.56604 15.0418 7.54065 15.1027C7.51527 15.1636 7.5022 15.229 7.5022 15.295C7.5022 15.361 7.51527 15.4264 7.54065 15.4873C7.56604 15.5482 7.60323 15.6035 7.6501 15.65L8.3501 16.35C8.39658 16.3969 8.45188 16.4341 8.51281 16.4594C8.57374 16.4848 8.63909 16.4979 8.7051 16.4979C8.7711 16.4979 8.83646 16.4848 8.89738 16.4594C8.95831 16.4341 9.01362 16.3969 9.0601 16.35L20.0001 5.41V8.5C20.0001 8.63261 20.0528 8.75979 20.1465 8.85355C20.2403 8.94732 20.3675 9 20.5001 9H21.5001C21.6327 9 21.7599 8.94732 21.8537 8.85355C21.9474 8.75979 22.0001 8.63261 22.0001 8.5V3.5C22.0001 3.10218 21.8421 2.72064 21.5608 2.43934C21.2795 2.15804 20.8979 2 20.5001 2V2Z"
21+
fill="currentColor"
22+
/>
23+
<path
24+
d="M21.5 13H20.5C20.3674 13 20.2402 13.0527 20.1464 13.1464C20.0527 13.2402 20 13.3674 20 13.5V20H4V4H10.5C10.6326 4 10.7598 3.94732 10.8536 3.85355C10.9473 3.75979 11 3.63261 11 3.5V2.5C11 2.36739 10.9473 2.24021 10.8536 2.14645C10.7598 2.05268 10.6326 2 10.5 2H3.5C3.10218 2 2.72064 2.15804 2.43934 2.43934C2.15804 2.72064 2 3.10218 2 3.5V20.5C2 20.8978 2.15804 21.2794 2.43934 21.5607C2.72064 21.842 3.10218 22 3.5 22H20.5C20.8978 22 21.2794 21.842 21.5607 21.5607C21.842 21.2794 22 20.8978 22 20.5V13.5C22 13.3674 21.9473 13.2402 21.8536 13.1464C21.7598 13.0527 21.6326 13 21.5 13Z"
25+
fill="currentColor"
26+
/>
27+
</svg>
28+
);
29+
});

src/components/Icon/IconRss.tsx

+2-3
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,9 @@
33
*/
44

55
import {memo} from 'react';
6+
import type {SVGProps} from 'react';
67

7-
export const IconRss = memo<JSX.IntrinsicElements['svg']>(function IconRss(
8-
props
9-
) {
8+
export const IconRss = memo<SVGProps<SVGSVGElement>>(function IconRss(props) {
109
return (
1110
<svg
1211
xmlns="http://www.w3.org/2000/svg"

src/components/Icon/IconSearch.tsx

+17-16
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,21 @@
33
*/
44

55
import {memo} from 'react';
6+
import type {SVGProps} from 'react';
67

7-
export const IconSearch = memo<JSX.IntrinsicElements['svg']>(
8-
function IconSearch(props) {
9-
return (
10-
<svg width="1em" height="1em" viewBox="0 0 20 20" {...props}>
11-
<path
12-
d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z"
13-
stroke="currentColor"
14-
fill="none"
15-
strokeWidth="2"
16-
fillRule="evenodd"
17-
strokeLinecap="round"
18-
strokeLinejoin="round"></path>
19-
</svg>
20-
);
21-
}
22-
);
8+
export const IconSearch = memo<SVGProps<SVGSVGElement>>(function IconSearch(
9+
props
10+
) {
11+
return (
12+
<svg width="1em" height="1em" viewBox="0 0 20 20" {...props}>
13+
<path
14+
d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z"
15+
stroke="currentColor"
16+
fill="none"
17+
strokeWidth="2"
18+
fillRule="evenodd"
19+
strokeLinecap="round"
20+
strokeLinejoin="round"></path>
21+
</svg>
22+
);
23+
});

0 commit comments

Comments
 (0)