Skip to content

config

function defineStudioCMSConfig(config:
| undefined
| {
componentRegistry: Record<string, string>;
dashboardConfig: {
AuthConfig: {
enabled: boolean;
providers: {
auth0: boolean;
discord: boolean;
github: boolean;
google: boolean;
usernameAndPassword: boolean;
usernameAndPasswordConfig: {
allowUserRegistration: ... | ... | ...;
};
};
};
dashboardEnabled: boolean;
dashboardRouteOverride: string;
developerConfig: {
testingAndDemoMode: boolean;
};
faviconURL: string;
inject404Route: boolean;
versionCheck: boolean;
};
dateLocale: string;
dateTimeFormat: DateTimeFormatOptions;
dbStartPage: boolean;
defaultFrontEndConfig: | boolean
| {
favicon: string;
htmlDefaultHead: {
attrs: Record<string, undefined | string | boolean>;
content: string;
tag: | "title"
| "base"
| "link"
| "style"
| "meta"
| "script"
| "noscript"
| "template";
}[];
htmlDefaultLanguage: string;
injectQuickActionsMenu: boolean;
};
imageService: {
cdnPlugin: "cloudinary-js";
};
includedIntegrations: {
robotsTXT: | boolean
| RobotsConfig;
};
overrides: {
CustomImageOverride: string;
FormattedDateOverride: string;
};
plugins: StudioCMSPlugin[];
rendererConfig: {
markdocConfig: {
argParse: {
file: string;
location: boolean;
slots: boolean;
};
renderType: | "html"
| "react-static"
| MarkdocRenderer;
transformConfig: {
functions: Record<string, any>;
nodes: Record<string, {}>;
partials: Record<string, any>;
tags: Record<string, {}>;
validation: {
environment: ... | ...;
parents: ... | ...;
validateFunctions: ... | ... | ...;
};
variables: Record<string, any>;
};
};
mdxConfig: {
recmaPlugins: PluggableList;
rehypePlugins: PluggableList;
remarkPlugins: PluggableList;
remarkRehypeOptions: {
allowDangerousHtml: null | boolean;
clobberPrefix: null | string;
file: any;
footnoteBackContent: | null
| string
| (...args: [..., ..., ...(...)[]]) => ... | ... | ... | ... | ...;
footnoteBackLabel: null | string | (...args: [..., ..., ...(...)[]]) => string;
footnoteLabel: null | string;
footnoteLabelProperties: | null
| Record<string, ... | ... | ... | ... | ... | ... | ...>;
footnoteLabelTagName: null | string;
handlers: any;
passThrough: null | string[];
unknownHandler: any;
};
};
renderer: | "studiocms"
| "astro"
| "markdoc"
| "mdx"
| CustomRenderer;
studiocms: | false
| {
autoLinkHeadings: boolean;
callouts: | false
| {
theme: "github" | "obsidian" | "vitepress";
};
discordSubtext: boolean;
sanitize: {
allowAttributes: Record<string, ...[]>;
allowComments: boolean;
allowComponents: boolean;
allowCustomElements: boolean;
allowElements: string[];
blockElements: string[];
dropAttributes: Record<string, ...[]>;
dropElements: string[];
};
};
};
sdk: | boolean
| {
cacheConfig: | boolean
| {
lifetime: string;
};
};
verbose: boolean;
}):
| undefined
| {
componentRegistry: Record<string, string>;
dashboardConfig: {
AuthConfig: {
enabled: boolean;
providers: {
auth0: boolean;
discord: boolean;
github: boolean;
google: boolean;
usernameAndPassword: boolean;
usernameAndPasswordConfig: {
allowUserRegistration: ... | ... | ...;
};
};
};
dashboardEnabled: boolean;
dashboardRouteOverride: string;
developerConfig: {
testingAndDemoMode: boolean;
};
faviconURL: string;
inject404Route: boolean;
versionCheck: boolean;
};
dateLocale: string;
dateTimeFormat: DateTimeFormatOptions;
dbStartPage: boolean;
defaultFrontEndConfig: | boolean
| {
favicon: string;
htmlDefaultHead: {
attrs: Record<string, undefined | string | boolean>;
content: string;
tag: | "title"
| "base"
| "link"
| "style"
| "meta"
| "script"
| "noscript"
| "template";
}[];
htmlDefaultLanguage: string;
injectQuickActionsMenu: boolean;
};
imageService: {
cdnPlugin: "cloudinary-js";
};
includedIntegrations: {
robotsTXT: | boolean
| RobotsConfig;
};
overrides: {
CustomImageOverride: string;
FormattedDateOverride: string;
};
plugins: StudioCMSPlugin[];
rendererConfig: {
markdocConfig: {
argParse: {
file: string;
location: boolean;
slots: boolean;
};
renderType: | "html"
| "react-static"
| MarkdocRenderer;
transformConfig: {
functions: Record<string, any>;
nodes: Record<string, {}>;
partials: Record<string, any>;
tags: Record<string, {}>;
validation: {
environment: ... | ...;
parents: ... | ...;
validateFunctions: ... | ... | ...;
};
variables: Record<string, any>;
};
};
mdxConfig: {
recmaPlugins: PluggableList;
rehypePlugins: PluggableList;
remarkPlugins: PluggableList;
remarkRehypeOptions: {
allowDangerousHtml: null | boolean;
clobberPrefix: null | string;
file: any;
footnoteBackContent: | null
| string
| (...args: [..., ..., ...(...)[]]) => ... | ... | ... | ... | ...;
footnoteBackLabel: null | string | (...args: [..., ..., ...(...)[]]) => string;
footnoteLabel: null | string;
footnoteLabelProperties: | null
| Record<string, ... | ... | ... | ... | ... | ... | ...>;
footnoteLabelTagName: null | string;
handlers: any;
passThrough: null | string[];
unknownHandler: any;
};
};
renderer: | "studiocms"
| "astro"
| "markdoc"
| "mdx"
| CustomRenderer;
studiocms: | false
| {
autoLinkHeadings: boolean;
callouts: | false
| {
theme: "github" | "obsidian" | "vitepress";
};
discordSubtext: boolean;
sanitize: {
allowAttributes: Record<string, ...[]>;
allowComments: boolean;
allowComponents: boolean;
allowCustomElements: boolean;
allowElements: string[];
blockElements: string[];
dropAttributes: Record<string, ...[]>;
dropElements: string[];
};
};
};
sdk: | boolean
| {
cacheConfig: | boolean
| {
lifetime: string;
};
};
verbose: boolean;
}

Defined in: studiocms/packages/studiocms/src/utils/defineStudioCMSConfig.ts:31

A utility function to define the StudioCMS config object. This function is used to define the optional StudioCMS config object in the Astro project root. The expected file name is studiocms.config.mjs. And it should be adjacent to the Astro project’s astro.config.mjs file.

StudioCMS will attempt to import this file and use the default export as the StudioCMS config object automatically if it exists.

Using this function is optional, but it can be useful for IDEs to provide better intellisense and type checking.

undefined |

{ componentRegistry: Record<string, string>; dashboardConfig: { AuthConfig: { enabled: boolean; providers: { auth0: boolean; discord: boolean; github: boolean; google: boolean; usernameAndPassword: boolean; usernameAndPasswordConfig: { allowUserRegistration: … | … | …; }; }; }; dashboardEnabled: boolean; dashboardRouteOverride: string; developerConfig: { testingAndDemoMode: boolean; }; faviconURL: string; inject404Route: boolean; versionCheck: boolean; }; dateLocale: string; dateTimeFormat: DateTimeFormatOptions; dbStartPage: boolean; defaultFrontEndConfig: | boolean | { favicon: string; htmlDefaultHead: { attrs: Record<string, undefined | string | boolean>; content: string; tag: | "title" | "base" | "link" | "style" | "meta" | "script" | "noscript" | "template"; }[]; htmlDefaultLanguage: string; injectQuickActionsMenu: boolean; }; imageService: { cdnPlugin: "cloudinary-js"; }; includedIntegrations: { robotsTXT: | boolean | RobotsConfig; }; overrides: { CustomImageOverride: string; FormattedDateOverride: string; }; plugins: StudioCMSPlugin[]; rendererConfig: { markdocConfig: { argParse: { file: string; location: boolean; slots: boolean; }; renderType: | "html" | "react-static" | MarkdocRenderer; transformConfig: { functions: Record<string, any>; nodes: Record<string, {}>; partials: Record<string, any>; tags: Record<string, {}>; validation: { environment: … | …; parents: … | …; validateFunctions: … | … | …; }; variables: Record<string, any>; }; }; mdxConfig: { recmaPlugins: PluggableList; rehypePlugins: PluggableList; remarkPlugins: PluggableList; remarkRehypeOptions: { allowDangerousHtml: null | boolean; clobberPrefix: null | string; file: any; footnoteBackContent: | null | string | (…args: […, …, ...(...)[]]) => … | … | … | … | …; footnoteBackLabel: null | string | (…args: […, …, ...(...)[]]) => string; footnoteLabel: null | string; footnoteLabelProperties: | null | Record<string, … | … | … | … | … | … | …>; footnoteLabelTagName: null | string; handlers: any; passThrough: null | string[]; unknownHandler: any; }; }; renderer: | "studiocms" | "astro" | "markdoc" | "mdx" | CustomRenderer; studiocms: | false | { autoLinkHeadings: boolean; callouts: | false | { theme: "github" | "obsidian" | "vitepress"; }; discordSubtext: boolean; sanitize: { allowAttributes: Record<string, …[]>; allowComments: boolean; allowComponents: boolean; allowCustomElements: boolean; allowElements: string[]; blockElements: string[]; dropAttributes: Record<string, …[]>; dropElements: string[]; }; }; }; sdk: | boolean | { cacheConfig: | boolean | { lifetime: string; }; }; verbose: boolean; }

Record<string, string> = ...

Component Registry

{ AuthConfig: { enabled: boolean; providers: { auth0: boolean; discord: boolean; github: boolean; google: boolean; usernameAndPassword: boolean; usernameAndPasswordConfig: { allowUserRegistration: … | … | …; }; }; }; dashboardEnabled: boolean; dashboardRouteOverride: string; developerConfig: { testingAndDemoMode: boolean; }; faviconURL: string; inject404Route: boolean; versionCheck: boolean; } = dashboardConfigSchema

Allows customization of the Dashboard Configuration

{ enabled: boolean; providers: { auth0: boolean; discord: boolean; github: boolean; google: boolean; usernameAndPassword: boolean; usernameAndPasswordConfig: { allowUserRegistration: … | … | …; }; }; } = authConfigSchema

Auth Configuration - Allows customization of the Authentication Configuration

boolean = ...

Auth Enabled - Allows enabling or disabling of the Authentication Configuration

Default

true

{ auth0: boolean; discord: boolean; github: boolean; google: boolean; usernameAndPassword: boolean; usernameAndPasswordConfig: { allowUserRegistration: … | … | …; }; } = authProviderSchema

Auth Providers - Allows enabling or disabling of the Authentication Providers

boolean = ...

Auth0 Auth Provider - Powered by Arctic

Requires an Auth0 Application to be created and configured using ENV Variables

Default

false

boolean = ...

Discord Auth Provider - Powered by Arctic

Requires a Discord OAuth App to be created and configured using ENV Variables

Default

false

boolean = ...

GitHub Auth Provider - Powered by Arctic

Requires a GitHub OAuth App to be created and configured using ENV Variables

Default

false

boolean = ...

Google Auth Provider - Powered by Arctic

Requires a Google OAuth App to be created and configured using ENV Variables

Default

false

boolean = ...

Username and Password Auth Provider

dashboardConfig.AuthConfig.providers.usernameAndPasswordConfig?
'Read the “', dashboardConfig.AuthConfig.providers.usernameAndPasswordConfig?, '” section'

{ allowUserRegistration: … | … | …; } = localUsernameAndPasswordConfig

dashboardConfig.AuthConfig.providers.usernameAndPasswordConfig.allowUserRegistration?
'Read the “', dashboardConfig.AuthConfig.providers.usernameAndPasswordConfig.allowUserRegistration?, '” section'

… | … | … = ...

Allow User Registration - Allows users to register an account

Default

false

boolean = ...

OPTIONAL - This allows the user to enable or disable the Astro StudioCMS dashboard but still provide all the helper’s and utilities to those who are customizing their setup, doing so will disable the dashboard and you will need to manage your content via your database

Default

true

string = ...

OPTIONAL - This allows the user to override the default dashboard route to a custom route

Note: Use with caution, this is an advanced feature

Usage

  • The default route is dashboard without any / or \ characters. If you want to override the route to /admin you would set this value to admin

Default

"dashboard"

{ testingAndDemoMode: boolean; } = developerConfigSchema

Developer Options/Configuration

boolean = ...

Enable Testing and Demo Mode

This will enable the testing and demo mode for the Astro StudioCMS dashboard, this will allow you to test the dashboard without having to authenticate. This is useful for testing and demo purposes as it will allow you to see how the dashboard works and looks but disable any changes to the database.

Default

false

string = ...

OPTIONAL - This allows the user to override the default Favicon URL to a custom URL

boolean = ...

OPTIONAL - This allows the user to enable or disable the default 404 route for the dashboard

Default

true

boolean = ...

OPTIONAL - This allows the user to enable or disable the version check for the dashboard

This will check for the latest version of StudioCMS and notify the user if there is a new version available.

Default

true

string = ...

Date Locale used for formatting dates

DateTimeFormatOptions = ...

DateTime Format Options

boolean = ...

Project Initialization Page - Used during First Time Setup to initialize the database

Default

true

| boolean | { favicon: string; htmlDefaultHead: { attrs: Record<string, undefined | string | boolean>; content: string; tag: | "title" | "base" | "link" | "style" | "meta" | "script" | "noscript" | "template"; }[]; htmlDefaultLanguage: string; injectQuickActionsMenu: boolean; } = DefaultFrontEndConfigSchema

Default Frontend Configuration

Allows customization of the default frontend configuration

Default

true

{ cdnPlugin: "cloudinary-js"; } = imageServiceSchema

Allows customization of the Image Service Options

"cloudinary-js" = ...

If the user wants to use a custom Supported CDN Plugin, they can specify it here.

Currently Supported CDN Plugins: cloudinary-js

{ robotsTXT: | boolean | RobotsConfig; } = includedIntegrationsSchema

Allows enabling and disabling of the included integrations

| boolean | RobotsConfig = ...

Allows the user to enable/disable the use of the StudioCMS Custom astro-robots-txt Integration

Default

robotsTXT: { policy: [ { userAgent: ['*'], allow: ['/'], disallow: ['/dashboard/'] } ] }

{ CustomImageOverride: string; FormattedDateOverride: string; } = overridesSchema

Component Overrides - Allows for customizing the components used in StudioCMS

string = ...

Allows the user to override the default image component used in StudioCMS for rendering images.

string = ...

Allows the user to override the default formatted date component used in StudioCMS for rendering dates.

StudioCMSPlugin[] = ...

Add Plugins to the StudioCMS

{ markdocConfig: { argParse: { file: string; location: boolean; slots: boolean; }; renderType: | "html" | "react-static" | MarkdocRenderer; transformConfig: { functions: Record<string, any>; nodes: Record<string, {}>; partials: Record<string, any>; tags: Record<string, {}>; validation: { environment: … | …; parents: … | …; validateFunctions: … | … | …; }; variables: Record<string, any>; }; }; mdxConfig: { recmaPlugins: PluggableList; rehypePlugins: PluggableList; remarkPlugins: PluggableList; remarkRehypeOptions: { allowDangerousHtml: null | boolean; clobberPrefix: null | string; file: any; footnoteBackContent: | null | string | (…args: […, …, ...(...)[]]) => … | … | … | … | …; footnoteBackLabel: null | string | (…args: […, …, ...(...)[]]) => string; footnoteLabel: null | string; footnoteLabelProperties: | null | Record<string, … | … | … | … | … | … | …>; footnoteLabelTagName: null | string; handlers: any; passThrough: null | string[]; unknownHandler: any; }; }; renderer: | "studiocms" | "astro" | "markdoc" | "mdx" | CustomRenderer; studiocms: | false | { autoLinkHeadings: boolean; callouts: | false | { theme: "github" | "obsidian" | "vitepress"; }; discordSubtext: boolean; sanitize: { allowAttributes: Record<string, …[]>; allowComments: boolean; allowComponents: boolean; allowCustomElements: boolean; allowElements: string[]; blockElements: string[]; dropAttributes: Record<string, …[]>; dropElements: string[]; }; }; } = StudioCMSRendererConfigSchema

Renderer Configuration

Allows customization of the current renderer being used

{ argParse: { file: string; location: boolean; slots: boolean; }; renderType: | "html" | "react-static" | MarkdocRenderer; transformConfig: { functions: Record<string, any>; nodes: Record<string, {}>; partials: Record<string, any>; tags: Record<string, {}>; validation: { environment: … | …; parents: … | …; validateFunctions: … | … | …; }; variables: Record<string, any>; }; } = markdocConfigSchema

Allows customization of the Markdoc Configuration

Markdoc is a powerful, flexible, Markdown-based authoring framework. Built by Stripe.

See

https://markdoc.dev/^ for more info about markdoc.

{ file: string; location: boolean; slots: boolean; } = ...

The MarkDoc Arg Parse to use for rendering pages and posts

string = ...

boolean = ...

boolean = ...

| "html" | "react-static" | MarkdocRenderer = ...

The MarkDoc Content Renderer to use for rendering pages and posts

Can be one of the following: html, react-static, or a custom renderer

{ functions: Record<string, any>; nodes: Record<string, {}>; partials: Record<string, any>; tags: Record<string, {}>; validation: { environment: … | …; parents: … | …; validateFunctions: … | … | …; }; variables: Record<string, any>; } = ...

The MarkDoc Transform Config to use for rendering pages and posts

See

https://markdoc.dev/docs/config^

Record<string, any> = ...

Record<string, {}> = ...

Record<string, any> = ...

Record<string, {}> = ...

{ environment: … | …; parents: … | …; validateFunctions: … | … | …; } = ...

rendererConfig.markdocConfig.transformConfig.validation.environment?
'Read the “', rendererConfig.markdocConfig.transformConfig.validation.environment?, '” section'

… | … = ...

rendererConfig.markdocConfig.transformConfig.validation.parents?
'Read the “', rendererConfig.markdocConfig.transformConfig.validation.parents?, '” section'

… | … = ...

rendererConfig.markdocConfig.transformConfig.validation.validateFunctions?
'Read the “', rendererConfig.markdocConfig.transformConfig.validation.validateFunctions?, '” section'

… | … | … = ...

Record<string, any> = ...

{ recmaPlugins: PluggableList; rehypePlugins: PluggableList; remarkPlugins: PluggableList; remarkRehypeOptions: { allowDangerousHtml: null | boolean; clobberPrefix: null | string; file: any; footnoteBackContent: | null | string | (…args: […, …, ...(...)[]]) => … | … | … | … | …; footnoteBackLabel: null | string | (…args: […, …, ...(...)[]]) => string; footnoteLabel: null | string; footnoteLabelProperties: | null | Record<string, … | … | … | … | … | … | …>; footnoteLabelTagName: null | string; handlers: any; passThrough: null | string[]; unknownHandler: any; }; } = mdxConfigSchema

Allows customization of the MDX Configuration

MDX is a JSX in Markdown loader, parser, and renderer for ambitious projects.

See

https://mdxjs.com/^ for more info about MDX.

PluggableList = ...

List of recma plugins (optional); this is a new ecosystem, currently in beta, to transform esast trees (JavaScript)

PluggableList = ...

List of rehype plugins (optional).

PluggableList = ...

List of remark plugins (optional).

{ allowDangerousHtml: null | boolean; clobberPrefix: null | string; file: any; footnoteBackContent: | null | string | (…args: […, …, ...(...)[]]) => … | … | … | … | …; footnoteBackLabel: null | string | (…args: […, …, ...(...)[]]) => string; footnoteLabel: null | string; footnoteLabelProperties: | null | Record<string, … | … | … | … | … | … | …>; footnoteLabelTagName: null | string; handlers: any; passThrough: null | string[]; unknownHandler: any; } = ...

Options to pass through to remark-rehype (optional); the option allowDangerousHtml will always be set to true and the MDX nodes (see nodeTypes) are passed through; In particular, you might want to pass configuration for footnotes if your content is not in English.

rendererConfig.mdxConfig.remarkRehypeOptions.allowDangerousHtml?
'Read the “', rendererConfig.mdxConfig.remarkRehypeOptions.allowDangerousHtml?, '” section'

null | boolean = ...

null | string = ...

any = ...

rendererConfig.mdxConfig.remarkRehypeOptions.footnoteBackContent?
'Read the “', rendererConfig.mdxConfig.remarkRehypeOptions.footnoteBackContent?, '” section'

| null | string | (…args: […, …, ...(...)[]]) => … | … | … | … | … = ...

rendererConfig.mdxConfig.remarkRehypeOptions.footnoteBackLabel?
'Read the “', rendererConfig.mdxConfig.remarkRehypeOptions.footnoteBackLabel?, '” section'

null | string | (…args: […, …, ...(...)[]]) => string = ...

null | string = ...

rendererConfig.mdxConfig.remarkRehypeOptions.footnoteLabelProperties?
'Read the “', rendererConfig.mdxConfig.remarkRehypeOptions.footnoteLabelProperties?, '” section'

| null | Record<string, … | … | … | … | … | … | …> = ...

rendererConfig.mdxConfig.remarkRehypeOptions.footnoteLabelTagName?
'Read the “', rendererConfig.mdxConfig.remarkRehypeOptions.footnoteLabelTagName?, '” section'

null | string = ...

any = ...

null | string[] = ...

any = ...

| "studiocms" | "astro" | "markdoc" | "mdx" | CustomRenderer = ...

The Markdown Content Renderer to use for rendering pages and posts

Astro is the built-in Astro remark-markdown plugin.

See

Markdoc is a powerful, flexible, Markdown-based authoring framework. Built by Stripe.

| false | { autoLinkHeadings: boolean; callouts: | false | { theme: "github" | "obsidian" | "vitepress"; }; discordSubtext: boolean; sanitize: { allowAttributes: Record<string, …[]>; allowComments: boolean; allowComponents: boolean; allowCustomElements: boolean; allowElements: string[]; blockElements: string[]; dropAttributes: Record<string, …[]>; dropElements: string[]; }; } = StudioCMSMarkdownExtendedSchema

Allows customization of the StudioCMS Markdown Extended Configuration

StudioCMS Markdown Extended is a collection of custom markdown features for StudioCMS.

See

https://github.com/withstudiocms/markdown-remark/tree/main^ for more info about StudioCMS Markdown Extended.

| boolean | { cacheConfig: | boolean | { lifetime: string; }; } = SDKSchema

SDKSchema is a Zod schema that validates the SDK configuration. It can either be a boolean or an object containing cache configuration.

If it is a boolean, it defaults to true and transforms into an object with default cache configuration.

If it is an object, it must contain the cacheConfig property which is validated by the SDKCacheSchema.

boolean = ...

Whether to show verbose output

Default

false

| undefined | { componentRegistry: Record<string, string>; dashboardConfig: { AuthConfig: { enabled: boolean; providers: { auth0: boolean; discord: boolean; github: boolean; google: boolean; usernameAndPassword: boolean; usernameAndPasswordConfig: { allowUserRegistration: … | … | …; }; }; }; dashboardEnabled: boolean; dashboardRouteOverride: string; developerConfig: { testingAndDemoMode: boolean; }; faviconURL: string; inject404Route: boolean; versionCheck: boolean; }; dateLocale: string; dateTimeFormat: DateTimeFormatOptions; dbStartPage: boolean; defaultFrontEndConfig: | boolean | { favicon: string; htmlDefaultHead: { attrs: Record<string, undefined | string | boolean>; content: string; tag: | "title" | "base" | "link" | "style" | "meta" | "script" | "noscript" | "template"; }[]; htmlDefaultLanguage: string; injectQuickActionsMenu: boolean; }; imageService: { cdnPlugin: "cloudinary-js"; }; includedIntegrations: { robotsTXT: | boolean | RobotsConfig; }; overrides: { CustomImageOverride: string; FormattedDateOverride: string; }; plugins: StudioCMSPlugin[]; rendererConfig: { markdocConfig: { argParse: { file: string; location: boolean; slots: boolean; }; renderType: | "html" | "react-static" | MarkdocRenderer; transformConfig: { functions: Record<string, any>; nodes: Record<string, {}>; partials: Record<string, any>; tags: Record<string, {}>; validation: { environment: … | …; parents: … | …; validateFunctions: … | … | …; }; variables: Record<string, any>; }; }; mdxConfig: { recmaPlugins: PluggableList; rehypePlugins: PluggableList; remarkPlugins: PluggableList; remarkRehypeOptions: { allowDangerousHtml: null | boolean; clobberPrefix: null | string; file: any; footnoteBackContent: | null | string | (…args: […, …, ...(...)[]]) => … | … | … | … | …; footnoteBackLabel: null | string | (…args: […, …, ...(...)[]]) => string; footnoteLabel: null | string; footnoteLabelProperties: | null | Record<string, … | … | … | … | … | … | …>; footnoteLabelTagName: null | string; handlers: any; passThrough: null | string[]; unknownHandler: any; }; }; renderer: | "studiocms" | "astro" | "markdoc" | "mdx" | CustomRenderer; studiocms: | false | { autoLinkHeadings: boolean; callouts: | false | { theme: "github" | "obsidian" | "vitepress"; }; discordSubtext: boolean; sanitize: { allowAttributes: Record<string, …[]>; allowComments: boolean; allowComponents: boolean; allowCustomElements: boolean; allowElements: string[]; blockElements: string[]; dropAttributes: Record<string, …[]>; dropElements: string[]; }; }; }; sdk: | boolean | { cacheConfig: | boolean | { lifetime: string; }; }; verbose: boolean; }

studiocms.config.mjs
import { defineStudioCMSConfig } from 'studiocms';
export default defineStudioCMSConfig({
dbStartPage: true,
contentRenderer: 'marked',
verbose: true,
dateLocale: 'en-us',
// ...Other Options
})

Re-exports CustomRenderer

Re-exports Renderer

Re-exports StudioCMSOptions