diff --git a/.changeset/thirty-owls-lay.md b/.changeset/thirty-owls-lay.md
new file mode 100644
index 0000000000..3f3ce64606
--- /dev/null
+++ b/.changeset/thirty-owls-lay.md
@@ -0,0 +1,5 @@
+---
+'@backstage/core': patch
+---
+
+exposes undocumented `PageTheme`
diff --git a/docs/getting-started/app-custom-theme.md b/docs/getting-started/app-custom-theme.md
index 345b7ad969..181f541929 100644
--- a/docs/getting-started/app-custom-theme.md
+++ b/docs/getting-started/app-custom-theme.md
@@ -74,3 +74,64 @@ Note that your list of custom themes overrides the default themes. If you still
want to use the default themes, they are exported as `lightTheme` and
`darkTheme` from
[@backstage/theme](https://www.npmjs.com/package/@backstage/theme).
+
+## Example of a custom theme
+
+```ts
+const themeOptions = createThemeOptions({
+ palette: {
+ ...lightTheme.palette,
+ primary: {
+ main: '#123456',
+ },
+ secondary: {
+ main: '#123456',
+ },
+ error: {
+ main: '#123456'
+ },
+ warning: {
+ main: '#123456',
+ },
+ info: {
+ main: '#123456',
+ },
+ success: {
+ main: '#123456',
+ },
+ background: {
+ default: '#123456',
+ paper: '#123456',
+ },
+ banner: {
+ info: '#123456',
+ error: '#123456'
+ text: '#123456'
+ link: '#123456',
+ },
+ errorBackground: '#123456'
+ warningBackground: '#123456'
+ infoBackground: '#123456'
+ navigation: {
+ background: '#123456',
+ indicator: '#123456'
+ color: '#123456'
+ selectedColor: '#123456',
+ },
+ },
+ defaultPageTheme: 'home',
+ fontFamily: 'Comic Sans',
+ /* below drives the header colors */
+ pageTheme: {
+ home: genPageTheme(['#123456','#123456'], shapes.wave),
+ documentation: genPageTheme(['#123456','#123456'], shapes.wave2),
+ tool: genPageTheme(['#123456','#123456'], shapes.round),
+ service: genPageTheme(['#123456','#123456'], shapes.wave),
+ website: genPageTheme(['#123456','#123456'], shapes.wave),
+ library: genPageTheme(['#123456','#123456'] shapes.wave),
+ other: genPageTheme(['#123456','#123456'], shapes.wave),
+ app: genPageTheme(['#123456','#123456'], shapes.wave),
+ apis: genPageTheme(['#123456','#123456'], shapes.wave),
+ },
+});
+```
diff --git a/packages/core/src/layout/Header/Header.stories.tsx b/packages/core/src/layout/Header/Header.stories.tsx
index badd63a5ad..3deb980dfd 100644
--- a/packages/core/src/layout/Header/Header.stories.tsx
+++ b/packages/core/src/layout/Header/Header.stories.tsx
@@ -45,6 +45,46 @@ export const HomeWithSubtitle = () => (
);
+export const Apis = () => (
+
+
+
+);
+
+export const Grpc = () => (
+
+
+
+);
+
+export const AsyncApi = () => (
+
+
+
+);
+
+export const Graphql = () => (
+
+
+
+);
+
+export const OpenApi = () => (
+
+
+
+);
+
export const Tool = () => (
diff --git a/packages/theme/src/pageTheme.ts b/packages/theme/src/pageTheme.ts
index f86f3a6449..c9a61bd95b 100644
--- a/packages/theme/src/pageTheme.ts
+++ b/packages/theme/src/pageTheme.ts
@@ -63,4 +63,5 @@ export const pageTheme: Record = {
library: genPageTheme(colorVariants.rubyRed, shapes.wave),
other: genPageTheme(colorVariants.darkGrey, shapes.wave),
app: genPageTheme(colorVariants.toastyOrange, shapes.wave),
+ apis: genPageTheme(colorVariants.eveningSea, shapes.wave2),
};
diff --git a/plugins/api-docs/src/components/ApiExplorerPage/ApiExplorerLayout.tsx b/plugins/api-docs/src/components/ApiExplorerPage/ApiExplorerLayout.tsx
index add886fead..fb94df8528 100644
--- a/plugins/api-docs/src/components/ApiExplorerPage/ApiExplorerLayout.tsx
+++ b/plugins/api-docs/src/components/ApiExplorerPage/ApiExplorerLayout.tsx
@@ -26,7 +26,7 @@ export const ApiExplorerLayout = ({ children }: Props) => {
configApi.getOptionalString('organization.name') ?? 'Backstage'
} API Explorer`;
return (
-
+