From 4e1bc8f6dec892ef8d29cea17816660c7000df7f Mon Sep 17 00:00:00 2001
From: Gautam Singh <5769869+gautamsi@users.noreply.github.com>
Date: Sun, 30 Jun 2024 02:59:39 -0500
Subject: [PATCH] fix custom ui examples and tests
---
.../app/(admin)/.admin/index.tsx | 18 ++++++++++
.../app/(admin)/[listKey]/[id]/page.tsx | 4 +++
.../app/(admin)/[listKey]/create/page.tsx | 4 +++
.../app/(admin)/[listKey]/page.tsx | 4 +++
.../app/(admin)/config.tsx | 1 +
.../app/(admin)/layout.tsx | 16 +++++++++
.../app/(admin)/no-access/page.tsx | 4 +++
.../app/(admin)/page.tsx | 2 ++
.../config}/components/CustomNavigation.tsx | 0
.../{admin/config.ts => app/config/index.ts} | 0
.../custom-admin-ui-navigation/app/layout.tsx | 11 ++++++
.../custom-admin-ui-navigation/next-env.d.ts | 5 +++
.../next.config.mjs | 14 ++++++++
.../custom-admin-ui-navigation/tsconfig.json | 34 +++++++++++++++++++
.../app/(admin)/.admin/index.tsx | 18 ++++++++++
.../app/(admin)/[listKey]/[id]/page.tsx | 4 +++
.../app/(admin)/[listKey]/create/page.tsx | 4 +++
.../app/(admin)/[listKey]/page.tsx | 4 +++
.../app/(admin)/config.tsx | 1 +
.../(admin)/custom-page/page.tsx} | 9 +++--
.../app/(admin)/layout.tsx | 16 +++++++++
.../app/(admin)/no-access/page.tsx | 4 +++
.../app/(admin)/page.tsx | 2 ++
.../config}/components/CustomNavigation.tsx | 0
.../{admin/config.ts => app/config/index.ts} | 0
examples/custom-admin-ui-pages/app/layout.tsx | 11 ++++++
examples/custom-admin-ui-pages/next-env.d.ts | 5 +++
.../custom-admin-ui-pages/next.config.mjs | 14 ++++++++
examples/custom-admin-ui-pages/tsconfig.json | 34 +++++++++++++++++++
29 files changed, 238 insertions(+), 5 deletions(-)
create mode 100644 examples/custom-admin-ui-navigation/app/(admin)/.admin/index.tsx
create mode 100644 examples/custom-admin-ui-navigation/app/(admin)/[listKey]/[id]/page.tsx
create mode 100644 examples/custom-admin-ui-navigation/app/(admin)/[listKey]/create/page.tsx
create mode 100644 examples/custom-admin-ui-navigation/app/(admin)/[listKey]/page.tsx
create mode 100644 examples/custom-admin-ui-navigation/app/(admin)/config.tsx
create mode 100644 examples/custom-admin-ui-navigation/app/(admin)/layout.tsx
create mode 100644 examples/custom-admin-ui-navigation/app/(admin)/no-access/page.tsx
create mode 100644 examples/custom-admin-ui-navigation/app/(admin)/page.tsx
rename examples/custom-admin-ui-navigation/{admin => app/config}/components/CustomNavigation.tsx (100%)
rename examples/custom-admin-ui-navigation/{admin/config.ts => app/config/index.ts} (100%)
create mode 100644 examples/custom-admin-ui-navigation/app/layout.tsx
create mode 100644 examples/custom-admin-ui-navigation/next-env.d.ts
create mode 100644 examples/custom-admin-ui-navigation/next.config.mjs
create mode 100644 examples/custom-admin-ui-navigation/tsconfig.json
create mode 100644 examples/custom-admin-ui-pages/app/(admin)/.admin/index.tsx
create mode 100644 examples/custom-admin-ui-pages/app/(admin)/[listKey]/[id]/page.tsx
create mode 100644 examples/custom-admin-ui-pages/app/(admin)/[listKey]/create/page.tsx
create mode 100644 examples/custom-admin-ui-pages/app/(admin)/[listKey]/page.tsx
create mode 100644 examples/custom-admin-ui-pages/app/(admin)/config.tsx
rename examples/custom-admin-ui-pages/{admin/pages/custom-page.tsx => app/(admin)/custom-page/page.tsx} (87%)
create mode 100644 examples/custom-admin-ui-pages/app/(admin)/layout.tsx
create mode 100644 examples/custom-admin-ui-pages/app/(admin)/no-access/page.tsx
create mode 100644 examples/custom-admin-ui-pages/app/(admin)/page.tsx
rename examples/custom-admin-ui-pages/{admin => app/config}/components/CustomNavigation.tsx (100%)
rename examples/custom-admin-ui-pages/{admin/config.ts => app/config/index.ts} (100%)
create mode 100644 examples/custom-admin-ui-pages/app/layout.tsx
create mode 100644 examples/custom-admin-ui-pages/next-env.d.ts
create mode 100644 examples/custom-admin-ui-pages/next.config.mjs
create mode 100644 examples/custom-admin-ui-pages/tsconfig.json
diff --git a/examples/custom-admin-ui-navigation/app/(admin)/.admin/index.tsx b/examples/custom-admin-ui-navigation/app/(admin)/.admin/index.tsx
new file mode 100644
index 00000000000..5dd11446daf
--- /dev/null
+++ b/examples/custom-admin-ui-navigation/app/(admin)/.admin/index.tsx
@@ -0,0 +1,18 @@
+/* eslint-disable */
+import * as view0 from '@keystone-6/core/___internal-do-not-use-will-break-in-patch/admin-ui/id-field-view'
+import * as view1 from '@keystone-6/core/fields/types/text/views'
+import * as view2 from '@keystone-6/core/fields/types/select/views'
+import * as view3 from '@keystone-6/core/fields/types/checkbox/views'
+import * as view4 from '@keystone-6/core/fields/types/relationship/views'
+import * as view5 from '@keystone-6/core/fields/types/timestamp/views'
+
+import * as adminConfig from '../config'
+
+export const config = {
+ lazyMetadataQuery: {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"keystone","loc":{"start":22,"end":30}},"arguments":[],"directives":[],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"adminMeta","loc":{"start":39,"end":48}},"arguments":[],"directives":[],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"lists","loc":{"start":59,"end":64}},"arguments":[],"directives":[],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"key","loc":{"start":77,"end":80}},"arguments":[],"directives":[],"loc":{"start":77,"end":80}},{"kind":"Field","name":{"kind":"Name","value":"isHidden","loc":{"start":91,"end":99}},"arguments":[],"directives":[],"loc":{"start":91,"end":99}},{"kind":"Field","name":{"kind":"Name","value":"fields","loc":{"start":110,"end":116}},"arguments":[],"directives":[],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"path","loc":{"start":131,"end":135}},"arguments":[],"directives":[],"loc":{"start":131,"end":135}},{"kind":"Field","name":{"kind":"Name","value":"createView","loc":{"start":148,"end":158}},"arguments":[],"directives":[],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"fieldMode","loc":{"start":175,"end":184}},"arguments":[],"directives":[],"loc":{"start":175,"end":184}}],"loc":{"start":159,"end":198}},"loc":{"start":148,"end":198}}],"loc":{"start":117,"end":210}},"loc":{"start":110,"end":210}}],"loc":{"start":65,"end":220}},"loc":{"start":59,"end":220}}],"loc":{"start":49,"end":228}},"loc":{"start":39,"end":228}}],"loc":{"start":31,"end":234}},"loc":{"start":22,"end":234}}]}}]},
+ fieldViews: [view0,view1,view2,view3,view4,view5],
+ adminMetaHash: '1mrsjib',
+ adminConfig,
+ apiPath: '/api/graphql',
+ adminPath: '',
+};
diff --git a/examples/custom-admin-ui-navigation/app/(admin)/[listKey]/[id]/page.tsx b/examples/custom-admin-ui-navigation/app/(admin)/[listKey]/[id]/page.tsx
new file mode 100644
index 00000000000..c5d7ea2be62
--- /dev/null
+++ b/examples/custom-admin-ui-navigation/app/(admin)/[listKey]/[id]/page.tsx
@@ -0,0 +1,4 @@
+'use client'
+import { ItemPage } from '@keystone-6/core/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ItemPage'
+
+export default ItemPage
diff --git a/examples/custom-admin-ui-navigation/app/(admin)/[listKey]/create/page.tsx b/examples/custom-admin-ui-navigation/app/(admin)/[listKey]/create/page.tsx
new file mode 100644
index 00000000000..d6042acaa96
--- /dev/null
+++ b/examples/custom-admin-ui-navigation/app/(admin)/[listKey]/create/page.tsx
@@ -0,0 +1,4 @@
+'use client'
+import { CreateItemPage } from '@keystone-6/core/___internal-do-not-use-will-break-in-patch/admin-ui/pages/CreateItemPage'
+
+export default CreateItemPage
diff --git a/examples/custom-admin-ui-navigation/app/(admin)/[listKey]/page.tsx b/examples/custom-admin-ui-navigation/app/(admin)/[listKey]/page.tsx
new file mode 100644
index 00000000000..f6e75f8cfab
--- /dev/null
+++ b/examples/custom-admin-ui-navigation/app/(admin)/[listKey]/page.tsx
@@ -0,0 +1,4 @@
+'use client'
+import { ListPage } from '@keystone-6/core/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ListPage'
+
+export default ListPage
diff --git a/examples/custom-admin-ui-navigation/app/(admin)/config.tsx b/examples/custom-admin-ui-navigation/app/(admin)/config.tsx
new file mode 100644
index 00000000000..f2b986e29ca
--- /dev/null
+++ b/examples/custom-admin-ui-navigation/app/(admin)/config.tsx
@@ -0,0 +1 @@
+export { components } from '../config'
\ No newline at end of file
diff --git a/examples/custom-admin-ui-navigation/app/(admin)/layout.tsx b/examples/custom-admin-ui-navigation/app/(admin)/layout.tsx
new file mode 100644
index 00000000000..abb5a0f3b2c
--- /dev/null
+++ b/examples/custom-admin-ui-navigation/app/(admin)/layout.tsx
@@ -0,0 +1,16 @@
+'use client'
+import { Layout } from '@keystone-6/core/___internal-do-not-use-will-break-in-patch/admin-ui/pages/App'
+import { config } from './.admin'
+
+
+export default function AdminLayout ({
+ children,
+}: {
+ children: React.ReactNode
+}) {
+ return (
+
+ {children}
+
+ )
+}
\ No newline at end of file
diff --git a/examples/custom-admin-ui-navigation/app/(admin)/no-access/page.tsx b/examples/custom-admin-ui-navigation/app/(admin)/no-access/page.tsx
new file mode 100644
index 00000000000..70877231fee
--- /dev/null
+++ b/examples/custom-admin-ui-navigation/app/(admin)/no-access/page.tsx
@@ -0,0 +1,4 @@
+'use client'
+import { getNoAccessPage } from '@keystone-6/core/___internal-do-not-use-will-break-in-patch/admin-ui/pages/NoAccessPage'
+
+export default getNoAccessPage({ sessionsEnabled: false })
diff --git a/examples/custom-admin-ui-navigation/app/(admin)/page.tsx b/examples/custom-admin-ui-navigation/app/(admin)/page.tsx
new file mode 100644
index 00000000000..5c268390b0f
--- /dev/null
+++ b/examples/custom-admin-ui-navigation/app/(admin)/page.tsx
@@ -0,0 +1,2 @@
+'use client'
+export { HomePage as default } from '@keystone-6/core/___internal-do-not-use-will-break-in-patch/admin-ui/pages/HomePage'
diff --git a/examples/custom-admin-ui-navigation/admin/components/CustomNavigation.tsx b/examples/custom-admin-ui-navigation/app/config/components/CustomNavigation.tsx
similarity index 100%
rename from examples/custom-admin-ui-navigation/admin/components/CustomNavigation.tsx
rename to examples/custom-admin-ui-navigation/app/config/components/CustomNavigation.tsx
diff --git a/examples/custom-admin-ui-navigation/admin/config.ts b/examples/custom-admin-ui-navigation/app/config/index.ts
similarity index 100%
rename from examples/custom-admin-ui-navigation/admin/config.ts
rename to examples/custom-admin-ui-navigation/app/config/index.ts
diff --git a/examples/custom-admin-ui-navigation/app/layout.tsx b/examples/custom-admin-ui-navigation/app/layout.tsx
new file mode 100644
index 00000000000..38a4853e3a5
--- /dev/null
+++ b/examples/custom-admin-ui-navigation/app/layout.tsx
@@ -0,0 +1,11 @@
+export default function RootLayout ({
+ children,
+}: {
+ children: React.ReactNode
+}) {
+ return (
+
+
{children}
+
+ )
+}
diff --git a/examples/custom-admin-ui-navigation/next-env.d.ts b/examples/custom-admin-ui-navigation/next-env.d.ts
new file mode 100644
index 00000000000..4f11a03dc6c
--- /dev/null
+++ b/examples/custom-admin-ui-navigation/next-env.d.ts
@@ -0,0 +1,5 @@
+///
+///
+
+// NOTE: This file should not be edited
+// see https://nextjs.org/docs/basic-features/typescript for more information.
diff --git a/examples/custom-admin-ui-navigation/next.config.mjs b/examples/custom-admin-ui-navigation/next.config.mjs
new file mode 100644
index 00000000000..bec106de70d
--- /dev/null
+++ b/examples/custom-admin-ui-navigation/next.config.mjs
@@ -0,0 +1,14 @@
+// you don't need this if you're building something outside of the Keystone repo
+
+export default {
+ experimental: {
+ // without this, 'Error: Expected Upload to be a GraphQL nullable type.'
+ serverComponentsExternalPackages: ['graphql'],
+ },
+ eslint: {
+ ignoreDuringBuilds: true,
+ },
+ typescript: {
+ ignoreBuildErrors: true,
+ },
+}
diff --git a/examples/custom-admin-ui-navigation/tsconfig.json b/examples/custom-admin-ui-navigation/tsconfig.json
new file mode 100644
index 00000000000..ccb2ed95d83
--- /dev/null
+++ b/examples/custom-admin-ui-navigation/tsconfig.json
@@ -0,0 +1,34 @@
+{
+ "compilerOptions": {
+ "lib": [
+ "dom",
+ "dom.iterable",
+ "esnext"
+ ],
+ "allowJs": true,
+ "skipLibCheck": true,
+ "strict": false,
+ "noEmit": true,
+ "incremental": true,
+ "module": "esnext",
+ "esModuleInterop": true,
+ "moduleResolution": "node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "jsx": "preserve",
+ "plugins": [
+ {
+ "name": "next"
+ }
+ ]
+ },
+ "include": [
+ "next-env.d.ts",
+ ".next/types/**/*.ts",
+ "**/*.ts",
+ "**/*.tsx"
+ ],
+ "exclude": [
+ "node_modules"
+ ]
+}
diff --git a/examples/custom-admin-ui-pages/app/(admin)/.admin/index.tsx b/examples/custom-admin-ui-pages/app/(admin)/.admin/index.tsx
new file mode 100644
index 00000000000..5dd11446daf
--- /dev/null
+++ b/examples/custom-admin-ui-pages/app/(admin)/.admin/index.tsx
@@ -0,0 +1,18 @@
+/* eslint-disable */
+import * as view0 from '@keystone-6/core/___internal-do-not-use-will-break-in-patch/admin-ui/id-field-view'
+import * as view1 from '@keystone-6/core/fields/types/text/views'
+import * as view2 from '@keystone-6/core/fields/types/select/views'
+import * as view3 from '@keystone-6/core/fields/types/checkbox/views'
+import * as view4 from '@keystone-6/core/fields/types/relationship/views'
+import * as view5 from '@keystone-6/core/fields/types/timestamp/views'
+
+import * as adminConfig from '../config'
+
+export const config = {
+ lazyMetadataQuery: {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"keystone","loc":{"start":22,"end":30}},"arguments":[],"directives":[],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"adminMeta","loc":{"start":39,"end":48}},"arguments":[],"directives":[],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"lists","loc":{"start":59,"end":64}},"arguments":[],"directives":[],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"key","loc":{"start":77,"end":80}},"arguments":[],"directives":[],"loc":{"start":77,"end":80}},{"kind":"Field","name":{"kind":"Name","value":"isHidden","loc":{"start":91,"end":99}},"arguments":[],"directives":[],"loc":{"start":91,"end":99}},{"kind":"Field","name":{"kind":"Name","value":"fields","loc":{"start":110,"end":116}},"arguments":[],"directives":[],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"path","loc":{"start":131,"end":135}},"arguments":[],"directives":[],"loc":{"start":131,"end":135}},{"kind":"Field","name":{"kind":"Name","value":"createView","loc":{"start":148,"end":158}},"arguments":[],"directives":[],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"fieldMode","loc":{"start":175,"end":184}},"arguments":[],"directives":[],"loc":{"start":175,"end":184}}],"loc":{"start":159,"end":198}},"loc":{"start":148,"end":198}}],"loc":{"start":117,"end":210}},"loc":{"start":110,"end":210}}],"loc":{"start":65,"end":220}},"loc":{"start":59,"end":220}}],"loc":{"start":49,"end":228}},"loc":{"start":39,"end":228}}],"loc":{"start":31,"end":234}},"loc":{"start":22,"end":234}}]}}]},
+ fieldViews: [view0,view1,view2,view3,view4,view5],
+ adminMetaHash: '1mrsjib',
+ adminConfig,
+ apiPath: '/api/graphql',
+ adminPath: '',
+};
diff --git a/examples/custom-admin-ui-pages/app/(admin)/[listKey]/[id]/page.tsx b/examples/custom-admin-ui-pages/app/(admin)/[listKey]/[id]/page.tsx
new file mode 100644
index 00000000000..c5d7ea2be62
--- /dev/null
+++ b/examples/custom-admin-ui-pages/app/(admin)/[listKey]/[id]/page.tsx
@@ -0,0 +1,4 @@
+'use client'
+import { ItemPage } from '@keystone-6/core/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ItemPage'
+
+export default ItemPage
diff --git a/examples/custom-admin-ui-pages/app/(admin)/[listKey]/create/page.tsx b/examples/custom-admin-ui-pages/app/(admin)/[listKey]/create/page.tsx
new file mode 100644
index 00000000000..d6042acaa96
--- /dev/null
+++ b/examples/custom-admin-ui-pages/app/(admin)/[listKey]/create/page.tsx
@@ -0,0 +1,4 @@
+'use client'
+import { CreateItemPage } from '@keystone-6/core/___internal-do-not-use-will-break-in-patch/admin-ui/pages/CreateItemPage'
+
+export default CreateItemPage
diff --git a/examples/custom-admin-ui-pages/app/(admin)/[listKey]/page.tsx b/examples/custom-admin-ui-pages/app/(admin)/[listKey]/page.tsx
new file mode 100644
index 00000000000..f6e75f8cfab
--- /dev/null
+++ b/examples/custom-admin-ui-pages/app/(admin)/[listKey]/page.tsx
@@ -0,0 +1,4 @@
+'use client'
+import { ListPage } from '@keystone-6/core/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ListPage'
+
+export default ListPage
diff --git a/examples/custom-admin-ui-pages/app/(admin)/config.tsx b/examples/custom-admin-ui-pages/app/(admin)/config.tsx
new file mode 100644
index 00000000000..f2b986e29ca
--- /dev/null
+++ b/examples/custom-admin-ui-pages/app/(admin)/config.tsx
@@ -0,0 +1 @@
+export { components } from '../config'
\ No newline at end of file
diff --git a/examples/custom-admin-ui-pages/admin/pages/custom-page.tsx b/examples/custom-admin-ui-pages/app/(admin)/custom-page/page.tsx
similarity index 87%
rename from examples/custom-admin-ui-pages/admin/pages/custom-page.tsx
rename to examples/custom-admin-ui-pages/app/(admin)/custom-page/page.tsx
index ccf76ad67aa..346ab365520 100644
--- a/examples/custom-admin-ui-pages/admin/pages/custom-page.tsx
+++ b/examples/custom-admin-ui-pages/app/(admin)/custom-page/page.tsx
@@ -1,8 +1,7 @@
-/** @jsxRuntime classic */
-/** @jsx jsx */
+'use client'
import Link from 'next/link'
import { PageContainer } from '@keystone-6/core/admin-ui/components'
-import { jsx, Heading } from '@keystone-ui/core'
+import { Heading } from '@keystone-ui/core'
// Please note that while this capability is driven by Next.js's pages directory
// We do not currently support any of the auxillary methods that Next.js provides i.e. `getStaticProps`
// Presently the only export from the directory that is supported is the page component itself.
@@ -10,7 +9,7 @@ export default function CustomPage () {
return (
Custom Page}>
diff --git a/examples/custom-admin-ui-pages/app/(admin)/layout.tsx b/examples/custom-admin-ui-pages/app/(admin)/layout.tsx
new file mode 100644
index 00000000000..abb5a0f3b2c
--- /dev/null
+++ b/examples/custom-admin-ui-pages/app/(admin)/layout.tsx
@@ -0,0 +1,16 @@
+'use client'
+import { Layout } from '@keystone-6/core/___internal-do-not-use-will-break-in-patch/admin-ui/pages/App'
+import { config } from './.admin'
+
+
+export default function AdminLayout ({
+ children,
+}: {
+ children: React.ReactNode
+}) {
+ return (
+
+ {children}
+
+ )
+}
\ No newline at end of file
diff --git a/examples/custom-admin-ui-pages/app/(admin)/no-access/page.tsx b/examples/custom-admin-ui-pages/app/(admin)/no-access/page.tsx
new file mode 100644
index 00000000000..70877231fee
--- /dev/null
+++ b/examples/custom-admin-ui-pages/app/(admin)/no-access/page.tsx
@@ -0,0 +1,4 @@
+'use client'
+import { getNoAccessPage } from '@keystone-6/core/___internal-do-not-use-will-break-in-patch/admin-ui/pages/NoAccessPage'
+
+export default getNoAccessPage({ sessionsEnabled: false })
diff --git a/examples/custom-admin-ui-pages/app/(admin)/page.tsx b/examples/custom-admin-ui-pages/app/(admin)/page.tsx
new file mode 100644
index 00000000000..5c268390b0f
--- /dev/null
+++ b/examples/custom-admin-ui-pages/app/(admin)/page.tsx
@@ -0,0 +1,2 @@
+'use client'
+export { HomePage as default } from '@keystone-6/core/___internal-do-not-use-will-break-in-patch/admin-ui/pages/HomePage'
diff --git a/examples/custom-admin-ui-pages/admin/components/CustomNavigation.tsx b/examples/custom-admin-ui-pages/app/config/components/CustomNavigation.tsx
similarity index 100%
rename from examples/custom-admin-ui-pages/admin/components/CustomNavigation.tsx
rename to examples/custom-admin-ui-pages/app/config/components/CustomNavigation.tsx
diff --git a/examples/custom-admin-ui-pages/admin/config.ts b/examples/custom-admin-ui-pages/app/config/index.ts
similarity index 100%
rename from examples/custom-admin-ui-pages/admin/config.ts
rename to examples/custom-admin-ui-pages/app/config/index.ts
diff --git a/examples/custom-admin-ui-pages/app/layout.tsx b/examples/custom-admin-ui-pages/app/layout.tsx
new file mode 100644
index 00000000000..38a4853e3a5
--- /dev/null
+++ b/examples/custom-admin-ui-pages/app/layout.tsx
@@ -0,0 +1,11 @@
+export default function RootLayout ({
+ children,
+}: {
+ children: React.ReactNode
+}) {
+ return (
+
+
{children}
+
+ )
+}
diff --git a/examples/custom-admin-ui-pages/next-env.d.ts b/examples/custom-admin-ui-pages/next-env.d.ts
new file mode 100644
index 00000000000..4f11a03dc6c
--- /dev/null
+++ b/examples/custom-admin-ui-pages/next-env.d.ts
@@ -0,0 +1,5 @@
+///
+///
+
+// NOTE: This file should not be edited
+// see https://nextjs.org/docs/basic-features/typescript for more information.
diff --git a/examples/custom-admin-ui-pages/next.config.mjs b/examples/custom-admin-ui-pages/next.config.mjs
new file mode 100644
index 00000000000..bec106de70d
--- /dev/null
+++ b/examples/custom-admin-ui-pages/next.config.mjs
@@ -0,0 +1,14 @@
+// you don't need this if you're building something outside of the Keystone repo
+
+export default {
+ experimental: {
+ // without this, 'Error: Expected Upload to be a GraphQL nullable type.'
+ serverComponentsExternalPackages: ['graphql'],
+ },
+ eslint: {
+ ignoreDuringBuilds: true,
+ },
+ typescript: {
+ ignoreBuildErrors: true,
+ },
+}
diff --git a/examples/custom-admin-ui-pages/tsconfig.json b/examples/custom-admin-ui-pages/tsconfig.json
new file mode 100644
index 00000000000..ccb2ed95d83
--- /dev/null
+++ b/examples/custom-admin-ui-pages/tsconfig.json
@@ -0,0 +1,34 @@
+{
+ "compilerOptions": {
+ "lib": [
+ "dom",
+ "dom.iterable",
+ "esnext"
+ ],
+ "allowJs": true,
+ "skipLibCheck": true,
+ "strict": false,
+ "noEmit": true,
+ "incremental": true,
+ "module": "esnext",
+ "esModuleInterop": true,
+ "moduleResolution": "node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "jsx": "preserve",
+ "plugins": [
+ {
+ "name": "next"
+ }
+ ]
+ },
+ "include": [
+ "next-env.d.ts",
+ ".next/types/**/*.ts",
+ "**/*.ts",
+ "**/*.tsx"
+ ],
+ "exclude": [
+ "node_modules"
+ ]
+}