diff --git a/examples/with-goober/package.json b/examples/with-goober/package.json
index 8793b454ca5b..a92c1009be0d 100644
--- a/examples/with-goober/package.json
+++ b/examples/with-goober/package.json
@@ -6,10 +6,15 @@
"start": "next start"
},
"dependencies": {
- "goober": "^2.0.2",
- "goober-autoprefixer": "^1.2.0",
+ "goober": "^2.1.10",
+ "goober-autoprefixer": "^1.2.3",
"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.7",
+ "@types/react": "^18.0.17",
+ "typescript": "^4.7.4"
}
}
diff --git a/examples/with-goober/pages/_app.js b/examples/with-goober/pages/_app.tsx
similarity index 53%
rename from examples/with-goober/pages/_app.js
rename to examples/with-goober/pages/_app.tsx
index 1c7e527a9750..09fb2bf00f1b 100644
--- a/examples/with-goober/pages/_app.js
+++ b/examples/with-goober/pages/_app.tsx
@@ -1,12 +1,13 @@
-import React from 'react'
-import { prefix } from 'goober-autoprefixer'
+import { createElement } from 'react'
import { setup } from 'goober'
+import { prefix } from 'goober/prefixer'
+import type { AppProps } from 'next/app'
// goober's needs to know how to render the `styled` nodes.
// So to let it know, we run the `setup` function with the
// `createElement` function and prefixer function.
-setup(React.createElement, prefix)
+setup(createElement, prefix)
-export default function App({ Component, pageProps }) {
+export default function App({ Component, pageProps }: AppProps) {
return
}
diff --git a/examples/with-goober/pages/_document.js b/examples/with-goober/pages/_document.tsx
similarity index 63%
rename from examples/with-goober/pages/_document.js
rename to examples/with-goober/pages/_document.tsx
index c7550d37d991..b3c283a033c7 100644
--- a/examples/with-goober/pages/_document.js
+++ b/examples/with-goober/pages/_document.tsx
@@ -1,10 +1,19 @@
-import Document, { Html, Head, Main, NextScript } from 'next/document'
import { extractCss } from 'goober'
+import NextDocument, {
+ DocumentContext,
+ Head,
+ Html,
+ Main,
+ NextScript,
+} from 'next/document'
-export default class MyDocument extends Document {
- static async getInitialProps({ renderPage }) {
+type Props = {
+ css: string
+}
+
+class Document extends NextDocument {
+ static async getInitialProps({ renderPage }: DocumentContext) {
const page = await renderPage()
- // Extrach the css for each page render
const css = extractCss()
return { ...page, css }
}
@@ -27,3 +36,5 @@ export default class MyDocument extends Document {
)
}
}
+
+export default Document
diff --git a/examples/with-goober/pages/index.js b/examples/with-goober/pages/index.tsx
similarity index 100%
rename from examples/with-goober/pages/index.js
rename to examples/with-goober/pages/index.tsx
diff --git a/examples/with-goober/tsconfig.json b/examples/with-goober/tsconfig.json
new file mode 100644
index 000000000000..b8d597880a1a
--- /dev/null
+++ b/examples/with-goober/tsconfig.json
@@ -0,0 +1,20 @@
+{
+ "compilerOptions": {
+ "target": "es5",
+ "lib": ["dom", "dom.iterable", "esnext"],
+ "allowJs": true,
+ "skipLibCheck": true,
+ "strict": false,
+ "forceConsistentCasingInFileNames": true,
+ "noEmit": true,
+ "esModuleInterop": true,
+ "module": "esnext",
+ "moduleResolution": "node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "jsx": "preserve",
+ "incremental": true
+ },
+ "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"],
+ "exclude": ["node_modules"]
+}