From bb872fd94450e1b9c1c9ed70418208429c25dd4b Mon Sep 17 00:00:00 2001 From: Henrik Wenz Date: Mon, 5 Sep 2022 18:28:23 +0200 Subject: [PATCH] [Docs] Migrate image-component example to typescript (#40204) @styfle as suggested here the TS PR. > I suggest creating the first PR that is just JS => TS. > > The create a second PR that makes style changes. > ## Changelog - Update react - Migrated to typescript ## Related https://github.com/vercel/next.js/pull/40153 ## Documentation / Examples - [x] Make sure the linting passes by running `pnpm lint` - [x] The examples guidelines are followed from [our contributing doc](https://github.com/vercel/next.js/blob/canary/contributing.md#adding-examples) --- .../{view-source.js => view-source.tsx} | 12 ++++++++---- examples/image-component/package.json | 9 +++++++-- examples/image-component/pages/_app.js | 5 ----- examples/image-component/pages/_app.tsx | 6 ++++++ .../pages/{background.js => background.tsx} | 12 ++++++------ .../pages/{color.js => color.tsx} | 6 +++--- .../pages/{index.js => index.tsx} | 7 +++++-- .../pages/{layout-fill.js => layout-fill.tsx} | 2 +- .../{layout-fixed.js => layout-fixed.tsx} | 2 +- ...yout-intrinsic.js => layout-intrinsic.tsx} | 2 +- ...ut-responsive.js => layout-responsive.tsx} | 2 +- .../pages/{placeholder.js => placeholder.tsx} | 2 +- .../pages/{shimmer.js => shimmer.tsx} | 6 +++--- examples/image-component/tsconfig.json | 19 +++++++++++++++++++ 14 files changed, 62 insertions(+), 30 deletions(-) rename examples/image-component/components/{view-source.js => view-source.tsx} (77%) delete mode 100644 examples/image-component/pages/_app.js create mode 100644 examples/image-component/pages/_app.tsx rename examples/image-component/pages/{background.js => background.tsx} (59%) rename examples/image-component/pages/{color.js => color.tsx} (85%) rename examples/image-component/pages/{index.js => index.tsx} (95%) rename examples/image-component/pages/{layout-fill.js => layout-fill.tsx} (94%) rename examples/image-component/pages/{layout-fixed.js => layout-fixed.tsx} (87%) rename examples/image-component/pages/{layout-intrinsic.js => layout-intrinsic.tsx} (86%) rename examples/image-component/pages/{layout-responsive.js => layout-responsive.tsx} (86%) rename examples/image-component/pages/{placeholder.js => placeholder.tsx} (88%) rename examples/image-component/pages/{shimmer.js => shimmer.tsx} (89%) create mode 100644 examples/image-component/tsconfig.json diff --git a/examples/image-component/components/view-source.js b/examples/image-component/components/view-source.tsx similarity index 77% rename from examples/image-component/components/view-source.js rename to examples/image-component/components/view-source.tsx index be1d66f32389..7b316f9d0cc5 100644 --- a/examples/image-component/components/view-source.js +++ b/examples/image-component/components/view-source.tsx @@ -1,13 +1,17 @@ -import { svg, arm } from './view-source.module.css' +import styles from './view-source.module.css' -const ViewSource = ({ pathname }) => ( +type ViewSourceProps = { + pathname: string +} + +const ViewSource = ({ pathname }: ViewSourceProps) => ( ( > diff --git a/examples/image-component/package.json b/examples/image-component/package.json index f9170ae254fa..e800958c5882 100644 --- a/examples/image-component/package.json +++ b/examples/image-component/package.json @@ -7,7 +7,12 @@ }, "dependencies": { "next": "latest", - "react": "^17.0.2", - "react-dom": "^17.0.2" + "react": "^18.2.0", + "react-dom": "^18.2.0" + }, + "devDependencies": { + "@types/node": "18.7.14", + "@types/react": "16.9.17", + "typescript": "4.8.2" } } diff --git a/examples/image-component/pages/_app.js b/examples/image-component/pages/_app.js deleted file mode 100644 index 14b610ee850f..000000000000 --- a/examples/image-component/pages/_app.js +++ /dev/null @@ -1,5 +0,0 @@ -import '../app.css' - -export default function MyApp({ Component, pageProps }) { - return -} diff --git a/examples/image-component/pages/_app.tsx b/examples/image-component/pages/_app.tsx new file mode 100644 index 000000000000..bde43d8134e7 --- /dev/null +++ b/examples/image-component/pages/_app.tsx @@ -0,0 +1,6 @@ +import type { AppProps } from 'next/app' +import '../app.css' + +export default function MyApp({ Component, pageProps }: AppProps) { + return +} diff --git a/examples/image-component/pages/background.js b/examples/image-component/pages/background.tsx similarity index 59% rename from examples/image-component/pages/background.js rename to examples/image-component/pages/background.tsx index b3e05ab83890..d3c0d8dc1226 100644 --- a/examples/image-component/pages/background.js +++ b/examples/image-component/pages/background.tsx @@ -1,11 +1,11 @@ import Image from 'next/image' import ViewSource from '../components/view-source' -import { bgWrap, bgText } from '../styles.module.css' +import styles from '../styles.module.css' -const Background = () => ( +const BackgroundPage = () => (
- -
+ +
Mountains ( quality={100} />
-

+

Image Component
as a Background @@ -22,4 +22,4 @@ const Background = () => (

) -export default Background +export default BackgroundPage diff --git a/examples/image-component/pages/color.js b/examples/image-component/pages/color.tsx similarity index 85% rename from examples/image-component/pages/color.js rename to examples/image-component/pages/color.tsx index dca5d6d3b972..b04797028014 100644 --- a/examples/image-component/pages/color.js +++ b/examples/image-component/pages/color.tsx @@ -5,20 +5,20 @@ import ViewSource from '../components/view-source' const keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=' -const triplet = (e1, e2, e3) => +const triplet = (e1: number, e2: number, e3: number) => keyStr.charAt(e1 >> 2) + keyStr.charAt(((e1 & 3) << 4) | (e2 >> 4)) + keyStr.charAt(((e2 & 15) << 2) | (e3 >> 6)) + keyStr.charAt(e3 & 63) -const rgbDataURL = (r, g, b) => +const rgbDataURL = (r: number, g: number, b: number) => `data:image/gif;base64,R0lGODlhAQABAPAA${ triplet(0, r, g) + triplet(b, 255, 255) }/yH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==` const Color = () => (
- +

Image Component With Color Data URL

Dog +const Code = (props: PropsWithChildren) => ( + +) const Index = () => (
- +

Image Component with Next.js

diff --git a/examples/image-component/pages/layout-fill.js b/examples/image-component/pages/layout-fill.tsx similarity index 94% rename from examples/image-component/pages/layout-fill.js rename to examples/image-component/pages/layout-fill.tsx index 526723d427f8..dca195e8096c 100644 --- a/examples/image-component/pages/layout-fill.js +++ b/examples/image-component/pages/layout-fill.tsx @@ -4,7 +4,7 @@ import mountains from '../public/mountains.jpg' const Fill = () => (

- +

Image Component With Layout Fill

Mountains diff --git a/examples/image-component/pages/layout-fixed.js b/examples/image-component/pages/layout-fixed.tsx similarity index 87% rename from examples/image-component/pages/layout-fixed.js rename to examples/image-component/pages/layout-fixed.tsx index cd5e26d8b4e3..bff545973566 100644 --- a/examples/image-component/pages/layout-fixed.js +++ b/examples/image-component/pages/layout-fixed.tsx @@ -4,7 +4,7 @@ import mountains from '../public/mountains.jpg' const Fixed = () => (
- +

Image Component With Layout Fixed

Mountains (
- +

Image Component With Layout Intrinsic

Mountains (
- +

Image Component With Layout Responsive

Mountains (
- +

Image Component With Placeholder Blur

Mountains ` +const shimmer = (w: number, h: number) => ` @@ -15,14 +15,14 @@ const shimmer = (w, h) => ` ` -const toBase64 = (str) => +const toBase64 = (str: string) => typeof window === 'undefined' ? Buffer.from(str).toString('base64') : window.btoa(str) const Shimmer = () => (
- +

Image Component With Shimmer Data URL