Skip to main content

app.config.ts

Complete reference for live Ginko Docs presentation options and their layer defaults.

app/app.config.ts owns public identity, navigation, optional UI, analytics, and landing-page copy. Nuxt merges consumer values over the layer defaults, so set only fields you intend to change.

app/app.config.ts
export default defineAppConfig({
  ginkoDocs: {
    site: {
      name: { en: "Example Docs", de: "Example-Dokumentation" },
      description: {
        en: "Documentation for Example.",
        de: "Dokumentation für Example.",
      },
      url: "https://docs.example.com",
      logo: { light: "/logo.svg", dark: "/logo-dark.svg" },
    },
  },
});

Localized values use { en: string, de?: string }. When de is absent, the layer falls back to en.

Theme palettes

FieldTypeDefaultBehavior
theme.neutralNeutral palette name'zinc'Surfaces, text, borders, inputs, and code
theme.primaryPrimary palette name'neutral'Primary actions, focus rings, and one chart color

Neutral palettes are slate, gray, zinc, neutral, stone, taupe, mauve, mist, and olive. Primary palettes are neutral, red, orange, amber, yellow, lime, green, emerald, teal, cyan, sky, blue, indigo, violet, purple, fuchsia, pink, and rose. Both fields also accept custom for a consumer-defined palette.

app/app.config.ts
export default defineAppConfig({
  ginkoDocs: {
    theme: {
      neutral: "stone",
      primary: "blue",
    },
  },
});

primary: 'neutral' follows the selected neutral ramp and keeps the default monochrome appearance. See Theme and override the layer for custom-palette variables and direct token overrides.

Prose appearance

FieldTypeDefault
prose.appearance'quiet' | 'tint''quiet'
prose.componentsPartial family-to-appearance mapcallout, aside, excerpt, and tabs use 'tint'

An authored component appearance prop overrides its family value; the family value overrides prose.appearance. Families are callout, aside, excerpt, cards, readMore, accordion, tabs, code, files, api, figure, quiz, steps, and timeline.

Site

FieldTypeDefaultUsed for
site.nameLocalized textGinko Docs in both localesHeader, metadata, structured data, social images
site.descriptionLocalized textDocumentation sites built with Nuxt and Ginko Content. / Dokumentations-Sites auf Basis von Nuxt und Ginko Content.Metadata and structured data
site.urlstringhttp://localhost:3000Canonical, alternate, raw, and MCP URLs
site.logo.lightstring/logo.svgLight-mode header and social-image logo
site.logo.darkstring/logo-dark.svgDark-mode header logo
site.docsSidebarSwitcher'dropdown' | 'list' | 'tabs''tabs'Documentation section selector
site.lupinumAttributionbooleantrueLupinum credit in the footer

Use a production site.url; local defaults would produce incorrect canonical and agent links after deployment.

FieldTypeDefault
nav.links'auto' | GinkoDocsLink[]'auto'
nav.socialIconsbooleanfalse

'auto' adds Documentation and adds Blog only when blog routes exist. An array replaces the generated links completely.

nav.socialIcons renders the configured social links as icon buttons in the header bar, and switches the mobile menu from labelled pills to the same icons. It stays off by default so upgrading never adds links to an existing header.

app/app.config.ts
export default defineAppConfig({
  ginkoDocs: {
    nav: {
      links: [
        {
          label: { en: "Guides", de: "Anleitungen" },
          to: { en: "/docs", de: "/de/dokumentation" },
          icon: "lucide:book-open",
          description: {
            en: "Learn to use Example.",
            de: "Example kennenlernen.",
          },
        },
      ],
    },
  },
});

A link requires localized label and to; icon and localized description are optional. URLs beginning with http:// or https:// are treated as external.

Announcement banner

FieldTypeDefaultBehavior
banner.enabledbooleanfalseShow or hide the banner explicitly
banner.idstring'default'Forms the dismissal key ginko-docs:banner:<id>
banner.textLocalized textunset; runtime fallback: Introducing the Ginko Content docs pipeline. / Neu: die Ginko-Content-Dokumentationspipeline.Announcement copy
banner.link.labelLocalized textunset; runtime fallback: Read the announcement / Ankündigung lesenOptional linked label
banner.link.toLocalized textunsetOptional destination
banner.showOnLandingbooleantrueShow the banner on the landing page

Change banner.id when an updated announcement should reappear after a reader dismissed an earlier one.

Analytics is disabled until a Plausible site script ID is set.

FieldTypeDefault
analytics.plausible.scriptIdstringunset
social.githubGinkoDocsSocialEntryunset
social.discordGinkoDocsSocialEntryunset
social.linkedinGinkoDocsSocialEntryunset

Social entries render in the order they are configured, so listing Discord first puts it first in the header. A plain URL uses the platform's built-in label and icon; an object overrides either:

app/app.config.ts
export default defineAppConfig({
  ginkoDocs: {
    nav: { socialIcons: true },
    social: {
      discord: { href: "https://discord.gg/example", icon: "brand:discord" },
      github: "https://github.com/example/repo",
    },
  },
});

icon accepts any Iconify name the application has registered. The layer bundles a closed icon set with no API fallback, so a site that wants true brand marks registers them through Nuxt Icon's customCollections and names them here. Lucide has no Discord mark; the built-in default is a generic chat icon.

Copy scriptId from the site-specific script URL in Plausible. For https://plausible.io/js/pa-ExampleSiteScriptId.js, use only ExampleSiteScriptId. The ID is public and safe to commit. Do not put it in an environment variable or secret.

Plausible owns enhanced measurements such as outbound links, file downloads, and 404 pages. Configure them in the Plausible Site Installation settings. Ginko Docs loads no analytics script when scriptId is unset.

Page features

FieldTypeDefaultBehavior
feedback.enabledbooleanfalseShow the helpful/not-helpful prompt
ogImage.enabledbooleantrueGenerate per-page social images
ogImage.componentstring'GinkoDocs'Nuxt OG Image template component
markdownActions.chatGptbooleantrueShow the ChatGPT action
markdownActions.claudebooleantrueShow the Claude action
markdownActions.mcpbooleantrueShow the MCP URL action
images.zoombooleantrueEnable click-to-zoom prose images
toc.depth2 | 3 | 43Include headings through h2, h3, or h4

The feedback control appears only when feedback.enabled is true and a Plausible script ID is set. Feedback events use the name docs-feedback with path, helpful, and locale properties. Add the matching custom-event goal and properties in Plausible. A negative answer can link to a prefilled issue when repository is set.

The Markdown action fields affect only the menu. Agent routes, Markdown negotiation, link headers, and MCP registration are controlled by Nuxt module configuration and the deployment target.

repository is unset by default.

FieldTypeRuntime default
repository.urlstringrequired when repository is set
repository.branchstring'main'
repository.contentDirectorystring'content'

The URL must be the repository base URL. Ginko Docs derives edit links and new-issue links from it.

Landing page

The layer provides localized title, description, and primary action copy. Its initial landing configuration is:

FieldDefault
landing.titlePublish structured documentation. / Veröffentliche strukturierte Dokumentation.
landing.descriptionA Nuxt layer for searchable, localized documentation with stable routes and agent-readable output. / Ein Nuxt-Layer für durchsuchbare, lokalisierte Dokumentation mit stabilen Routen und agentenlesbarer Ausgabe.
landing.primary.label“Get started” / “Erste Schritte”
landing.primary.to/docs / /de/dokumentation
landing.secondaryunset
landing.herounset
landing.installunset
landing.features[]
landing.agentunset
landing.ctaunset

The full landing shape is:

ginkoDocs.landing
title: LocalizedText required
Hero headline.
description: LocalizedText required
Hero paragraph below the title.
primary: Link required
Primary hero action with localized label and to.
secondary?: Link
Optional second hero action.
hero.media?: HeroMedia
Hero image, code panel, or code tabs. The accepted forms are documented in the panel below.
install.command?: string
Copyable install command rendered under the hero actions.
features: FeatureCard[] = []
Feature summaries rendered as cards.
agent?: AgentBand
Dark full-width band with localized copy and a terminal transcript.
cta?: ClosingCta
Final call to action; its primary link falls back to landing.primary.

Hero media is a union discriminated by type; each tab of the panel below documents one accepted form:

hero.media
type: "image" required
Renders a product screenshot.
src: string required
Public path of the image.
alt: string required
Alternative text announced by screen readers.