diff --git a/apps/docs/app/layout.tsx b/apps/docs/app/layout.tsx
index 1074889fa23..e19b37c7e6b 100644
--- a/apps/docs/app/layout.tsx
+++ b/apps/docs/app/layout.tsx
@@ -12,6 +12,21 @@ import { GlobalProviders } from '~/features/app.providers'
import { TopNavSkeleton } from '~/layouts/MainSkeleton'
import { BASE_PATH, IS_PRODUCTION } from '~/lib/constants'
+import { Inter, Roboto_Mono } from 'next/font/google'
+
+// If loading a variable font, you don't need to specify the font weight
+const inter = Inter({
+ subsets: ['latin'],
+ display: 'swap',
+ variable: '--font-inter',
+})
+
+const roboto_mono = Roboto_Mono({
+ subsets: ['latin'],
+ display: 'swap',
+ variable: '--font-roboto-mono',
+})
+
const metadata: Metadata = {
applicationName: 'Supabase Docs',
title: 'Supabase Docs',
@@ -45,7 +60,7 @@ const viewport: Viewport = {
const RootLayout = ({ children }: { children: React.ReactNode }) => {
return (
-
+
{children}
diff --git a/apps/docs/next-env.d.ts b/apps/docs/next-env.d.ts
index 40c3d68096c..725dd6f2451 100644
--- a/apps/docs/next-env.d.ts
+++ b/apps/docs/next-env.d.ts
@@ -1,5 +1,6 @@
///
///
+///
// NOTE: This file should not be edited
// see https://nextjs.org/docs/app/building-your-application/configuring/typescript for more information.
diff --git a/apps/docs/package.json b/apps/docs/package.json
index 1950af77461..cdd0adb4496 100644
--- a/apps/docs/package.json
+++ b/apps/docs/package.json
@@ -30,6 +30,7 @@
"@mdx-js/loader": "^2.1.5",
"@mdx-js/react": "^2.3.0",
"@next/bundle-analyzer": "^14.2.3",
+ "@next/font": "^14.2.15",
"@next/mdx": "^14.2.3",
"@octokit/auth-app": "^6.0.3",
"@octokit/core": "^5.1.0",
diff --git a/apps/studio/data/api-keys/api-keys-query.ts b/apps/studio/data/api-keys/api-keys-query.ts
new file mode 100644
index 00000000000..2727f523667
--- /dev/null
+++ b/apps/studio/data/api-keys/api-keys-query.ts
@@ -0,0 +1,39 @@
+import { useQuery, UseQueryOptions } from '@tanstack/react-query'
+import { get, handleError } from 'data/fetchers'
+import { ResponseError } from 'types'
+
+import { apiKeysKeys } from './keys'
+
+export interface APIKeysVariables {
+ projectRef?: string
+}
+
+export async function getAPIKeys({ projectRef }: APIKeysVariables, signal?: AbortSignal) {
+ if (!projectRef) throw new Error('projectRef is required')
+
+ const { data, error } = await get(`/v1/projects/{ref}/api-keys`, {
+ params: { path: { ref: projectRef } },
+ signal,
+ })
+
+ if (error) {
+ handleError(error)
+ }
+
+ return data
+}
+
+export type APIKeysData = Awaited>
+
+export const useAPIKeysQuery = (
+ { projectRef }: APIKeysVariables,
+ { enabled, ...options }: UseQueryOptions = {}
+) =>
+ useQuery(
+ apiKeysKeys.list(projectRef),
+ ({ signal }) => getAPIKeys({ projectRef }, signal),
+ {
+ enabled: enabled && !!projectRef,
+ ...options,
+ }
+ )
diff --git a/apps/studio/next-env.d.ts b/apps/studio/next-env.d.ts
index a4a7b3f5cfa..725dd6f2451 100644
--- a/apps/studio/next-env.d.ts
+++ b/apps/studio/next-env.d.ts
@@ -1,5 +1,6 @@
///
///
+///
// NOTE: This file should not be edited
-// see https://nextjs.org/docs/pages/building-your-application/configuring/typescript for more information.
+// see https://nextjs.org/docs/app/building-your-application/configuring/typescript for more information.
diff --git a/apps/studio/package.json b/apps/studio/package.json
index 55ad9b69b3d..c4d94c7172f 100644
--- a/apps/studio/package.json
+++ b/apps/studio/package.json
@@ -31,6 +31,7 @@
"@hookform/resolvers": "^3.1.1",
"@monaco-editor/react": "^4.6.0",
"@next/bundle-analyzer": "^14.2.3",
+ "@next/font": "^14.2.15",
"@radix-ui/react-popover": "^1.0.7",
"@radix-ui/react-tooltip": "^1.0.7",
"@sentry/nextjs": "^7.108.0",
diff --git a/apps/studio/pages/_app.tsx b/apps/studio/pages/_app.tsx
index b1c6e7fff68..fa1f485a816 100644
--- a/apps/studio/pages/_app.tsx
+++ b/apps/studio/pages/_app.tsx
@@ -54,6 +54,18 @@ import HCaptchaLoadedStore from 'stores/hcaptcha-loaded-store'
import { AppPropsWithLayout } from 'types'
import { SonnerToaster } from 'ui'
import { CommandProvider } from 'ui-patterns/CommandMenu'
+import { Inter, Roboto_Mono } from 'next/font/google'
+
+const inter = Inter({
+ subsets: ['latin'],
+ variable: '--font-inter',
+})
+
+const roboto_mono = Roboto_Mono({
+ subsets: ['latin'],
+ weight: ['400', '700'],
+ variable: '--font-roboto-mono',
+})
dayjs.extend(customParseFormat)
dayjs.extend(utc)
@@ -123,52 +135,62 @@ function CustomApp({ Component, pageProps }: AppPropsWithLayout) {
const isTestEnv = process.env.NEXT_PUBLIC_NODE_ENV === 'test'
return (
-
-
-
-
-
-
-
- Supabase
-
-
-
-
-
-
-
-
-
-
-
- {getLayout()}
-
-
-
-
-
-
-
-
-
-
-
-
+ <>
+
+
+
+
+
+
+
+
+ Supabase
+
+
+
+
+
+
+
+
+
+
+
+ {getLayout()}
+
+
+
+
+
+
+
+
+
+
+
+
- {!isTestEnv && }
- {!isTestEnv && }
-
-
-
-
-
-
+ {!isTestEnv && }
+ {!isTestEnv && (
+
+ )}
+
+
+
+
+
+
+ >
)
}
diff --git a/apps/studio/pages/_document.tsx b/apps/studio/pages/_document.tsx
index 72fe3436392..e7e79c945fb 100644
--- a/apps/studio/pages/_document.tsx
+++ b/apps/studio/pages/_document.tsx
@@ -24,7 +24,6 @@ class MyDocument extends Document {
: `${BASE_PATH}/monaco-editor/editor/editor.main.css`
}
/>
-
diff --git a/apps/www/package.json b/apps/www/package.json
index 6fbfcbd3cd5..77f30f49a46 100644
--- a/apps/www/package.json
+++ b/apps/www/package.json
@@ -19,6 +19,7 @@
"@heroicons/react": "^1.0.6",
"@mdx-js/react": "^2.3.0",
"@next/bundle-analyzer": "^14.2.3",
+ "@next/font": "^14.2.15",
"@next/mdx": "^14.2.3",
"@octokit/auth-app": "^6.0.3",
"@octokit/core": "^5.0.2",
@@ -87,9 +88,9 @@
"@types/classnames": "^2.3.1",
"@types/common-tags": "^1.8.4",
"@types/dat.gui": "^0.7.10",
+ "@types/lodash": "^4.0.0",
"@types/mdx-js__react": "^1.5.6",
"@types/node": "^20.11.16",
- "@types/lodash": "^4.0.0",
"@types/parse-numeric-range": "^0.0.1",
"@types/react": "^18.2.24",
"@types/react-copy-to-clipboard": "^5.0.4",
diff --git a/apps/www/pages/_app.tsx b/apps/www/pages/_app.tsx
index a2884f5133d..5b77e40bdff 100644
--- a/apps/www/pages/_app.tsx
+++ b/apps/www/pages/_app.tsx
@@ -22,6 +22,18 @@ import { API_URL, APP_NAME, DEFAULT_META_DESCRIPTION, IS_PREVIEW } from '~/lib/c
import { post } from '~/lib/fetchWrapper'
import supabase from '~/lib/supabase'
import useDarkLaunchWeeks from '../hooks/useDarkLaunchWeeks'
+import { Inter, Roboto_Mono } from 'next/font/google'
+
+const inter = Inter({
+ subsets: ['latin'],
+ variable: '--font-inter',
+})
+
+const roboto_mono = Roboto_Mono({
+ subsets: ['latin'],
+ weight: ['400', '700'],
+ variable: '--font-roboto',
+})
export default function App({ Component, pageProps }: AppProps) {
const router = useRouter()
@@ -86,6 +98,12 @@ export default function App({ Component, pageProps }: AppProps) {
return (
<>
+
diff --git a/package-lock.json b/package-lock.json
index 884657ab1ac..f683937b331 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -861,6 +861,7 @@
"@mdx-js/loader": "^2.1.5",
"@mdx-js/react": "^2.3.0",
"@next/bundle-analyzer": "^14.2.3",
+ "@next/font": "^14.2.15",
"@next/mdx": "^14.2.3",
"@octokit/auth-app": "^6.0.3",
"@octokit/core": "^5.1.0",
@@ -1817,6 +1818,7 @@
"@hookform/resolvers": "^3.1.1",
"@monaco-editor/react": "^4.6.0",
"@next/bundle-analyzer": "^14.2.3",
+ "@next/font": "^14.2.15",
"@radix-ui/react-popover": "^1.0.7",
"@radix-ui/react-tooltip": "^1.0.7",
"@sentry/nextjs": "^7.108.0",
@@ -3000,6 +3002,7 @@
"@heroicons/react": "^1.0.6",
"@mdx-js/react": "^2.3.0",
"@next/bundle-analyzer": "^14.2.3",
+ "@next/font": "^14.2.15",
"@next/mdx": "^14.2.3",
"@octokit/auth-app": "^6.0.3",
"@octokit/core": "^5.0.2",
@@ -9427,6 +9430,14 @@
"glob": "10.3.10"
}
},
+ "node_modules/@next/font": {
+ "version": "14.2.15",
+ "resolved": "https://registry.npmjs.org/@next/font/-/font-14.2.15.tgz",
+ "integrity": "sha512-QopYhBmCDDrNDynbi+ZD1hDZXmQXVFo7TmAFp4DQgO/kogz1OLbQ92hPigJbj572eZ3GaaVxNIyYVn3/eAsehg==",
+ "peerDependencies": {
+ "next": "*"
+ }
+ },
"node_modules/@next/mdx": {
"version": "14.2.3",
"resolved": "https://registry.npmjs.org/@next/mdx/-/mdx-14.2.3.tgz",
diff --git a/packages/config/tailwind.config.js b/packages/config/tailwind.config.js
index 9254c114124..5b310fcdaa0 100644
--- a/packages/config/tailwind.config.js
+++ b/packages/config/tailwind.config.js
@@ -361,9 +361,15 @@ const uiConfig = ui({
xs: '480px',
},
fontFamily: {
- sans: ['Circular', 'custom-font', 'Helvetica Neue', 'Helvetica', 'Arial', 'sans-serif'],
- mono: ['Office Code Pro', 'Source Code Pro', 'Menlo', 'monospace'],
+ // sans: ['Circular', 'custom-font', 'Helvetica Neue', 'Helvetica', 'Arial', 'sans-serif'],
+ sans: ['var(--font-inter)'],
+ mono: ['var(--font-roboto-mono)'],
+ // mono: ['Office Code Pro', 'Source Code Pro', 'Menlo', 'monospace'],
},
+ // fontFamily: {
+ // sans: ['var(--font-inter)'],
+ // mono: ['var(--font-roboto-mono)'],
+ // },
// shadcn defaults START
keyframes: {