394 lines · 12.5 KB · TypeScript
RawDownload
import { field, group } from '@nuxt/content/preview' export default defineNuxtSchema({  appConfig: {    ui: group({      title: 'UI',      description: 'UI Customization.',      icon: 'i-lucide-palette',      fields: {        colors: group({          title: 'Colors',          description: 'Manage main colors of your application',          icon: 'i-lucide-palette',          fields: {            primary: field({              type: 'string',              title: 'Primary',              description: 'Primary color of your UI.',              icon: 'i-lucide-palette',              default: 'neutral',              required: ['slate', 'gray', 'zinc', 'neutral', 'stone', 'red', 'orange', 'amber', 'yellow', 'lime', 'green', 'emerald', 'teal', 'cyan', 'sky', 'blue', 'indigo', 'violet', 'purple', 'fuchsia', 'pink', 'rose'],            }),            neutral: field({              type: 'string',              title: 'Neutral',              description: 'Neutral color of your UI.',              icon: 'i-lucide-palette',              default: 'zinc',              required: ['slate', 'gray', 'zinc', 'neutral', 'stone'],            }),          },        }),        icons: group({          title: 'Icons',          description: 'Manage icons used in the application.',          icon: 'i-lucide-settings',          fields: {            search: field({              type: 'icon',              title: 'Search Bar',              description: 'Icon to display in the search bar.',              icon: 'i-lucide-search',              default: 'i-lucide-search',            }),            dark: field({              type: 'icon',              title: 'Dark mode',              description: 'Icon of color mode button for dark mode.',              icon: 'i-lucide-moon',              default: 'i-lucide-moon',            }),            light: field({              type: 'icon',              title: 'Light mode',              description: 'Icon of color mode button for light mode.',              icon: 'i-lucide-sun',              default: 'i-lucide-sun',            }),            external: field({              type: 'icon',              title: 'External Link',              description: 'Icon for external link.',              icon: 'i-lucide-external-link',              default: 'i-lucide-external-link',            }),            chevron: field({              type: 'icon',              title: 'Chevron',              description: 'Icon for chevron.',              icon: 'i-lucide-chevron-down',              default: 'i-lucide-chevron-down',            }),            hash: field({              type: 'icon',              title: 'Hash',              description: 'Icon for hash anchors.',              icon: 'i-lucide-hash',              default: 'i-lucide-hash',            }),          },        }),      },    }),    seo: group({      title: 'SEO',      description: 'SEO configuration.',      icon: 'i-lucide-search',      fields: {        title: field({          type: 'string',          title: 'Title',          description: 'Title to display in the header.',          icon: 'i-lucide-type',          default: '',        }),        description: field({          type: 'string',          title: 'Description',          description: 'Description to display in the header.',          icon: 'i-lucide-type',          default: '',        }),      },    }),    header: group({      title: 'Header',      description: 'Header configuration.',      icon: 'i-lucide-layout',      fields: {        title: field({          type: 'string',          title: 'Title',          description: 'Title to display in the header.',          icon: 'i-lucide-type',          default: '',        }),        logo: group({          title: 'Logo',          description: 'Header logo configuration.',          icon: 'i-lucide-image',          fields: {            light: field({              type: 'media',              title: 'Light Mode Logo',              description: 'Pick an image from your gallery.',              icon: 'i-lucide-sun',              default: '',            }),            dark: field({              type: 'media',              title: 'Dark Mode Logo',              description: 'Pick an image from your gallery.',              icon: 'i-lucide-moon',              default: '',            }),            alt: field({              type: 'string',              title: 'Alt',              description: 'Alt to display for accessibility.',              icon: 'i-lucide-text',              default: '',            }),            wordmark: group({              title: 'Wordmark',              description: 'Wordmark (text logo) configuration for brand assets.',              icon: 'i-lucide-type',              fields: {                light: field({                  type: 'media',                  title: 'Light Mode Wordmark',                  description: 'Wordmark image for light mode.',                  icon: 'i-lucide-sun',                  default: '',                }),                dark: field({                  type: 'media',                  title: 'Dark Mode Wordmark',                  description: 'Wordmark image for dark mode.',                  icon: 'i-lucide-moon',                  default: '',                }),              },            }),            class: field({              type: 'string',              title: 'Class',              description: 'Additional CSS classes to apply to the logo image.',              icon: 'i-lucide-paintbrush',              default: '',            }),            display: field({              type: 'string',              title: 'Display',              description: 'Which logo variant to show in the header: "logo" for the icon or "wordmark" for the full wordmark.',              icon: 'i-lucide-layout',              default: 'logo',            }),            favicon: field({              type: 'media',              title: 'Favicon',              description: 'Path to the favicon file for brand asset downloads.',              icon: 'i-lucide-app-window',              default: '/favicon.ico',            }),            brandAssetsUrl: field({              type: 'string',              title: 'Brand Assets URL',              description: 'Link to the full brand assets page (shown in the logo context menu).',              icon: 'i-lucide-palette',              default: '',            }),          },        }),      },    }),    navigation: group({      title: 'Navigation',      description: 'Navigation configuration.',      icon: 'i-lucide-navigation',      fields: {        sub: field({          type: 'string',          title: 'Sub Navigation',          description: 'Enable sub-navigation for multi-section docs. Use "header" for a secondary tab bar below the header, or "aside" for section anchors at the top of the sidebar.',          icon: 'i-lucide-layout-panel-left',          default: '',        }),      },    }),    socials: field({      type: 'object',      title: 'Social Networks',      description: 'Social links configuration.',      icon: 'i-lucide-network',      default: {},    }),    toc: group({      title: 'Table of contents',      description: 'TOC configuration.',      icon: 'i-lucide-list',      fields: {        title: field({          type: 'string',          title: 'Title',          description: 'Title of the table of contents.',          icon: 'i-lucide-heading',          default: 'On this page',        }),        bottom: group({          title: 'Bottom',          description: 'Bottom section of the table of contents.',          icon: 'i-lucide-list',          fields: {            title: field({              type: 'string',              title: 'Title',              description: 'Title of the bottom section.',              icon: 'i-lucide-heading',              default: 'Community',            }),            links: field({              type: 'array',              title: 'Links',              description: 'Links to display in the bottom section.',              icon: 'i-lucide-link',              default: [],            }),          },        }),      },    }),    github: group({      title: 'GitHub',      description: 'GitHub configuration.',      icon: 'i-simple-icons-github',      fields: {        url: field({          type: 'string',          title: 'URL',          description: 'GitHub URL.',          icon: 'i-simple-icons-github',          default: '',        }),        branch: field({          type: 'string',          title: 'Branch',          description: 'GitHub branch.',          icon: 'i-lucide-git-branch',          default: 'main',        }),        rootDir: field({          type: 'string',          title: 'Root Directory',          description: 'Root directory of the GitHub repository.',          icon: 'i-lucide-folder',          default: '',        }),      },    }),    docus: group({      title: 'Docus',      description: 'Docus configuration.',      icon: 'i-lucide-settings',      fields: {        locale: field({          type: 'string',          title: 'Locale',          description: 'Default locale for single-language documentation.',          icon: 'i-lucide-languages',          default: 'en',        }),        colorMode: field({          type: 'string',          title: 'Color Mode',          description: 'Force a specific color mode. Leave empty for system preference with toggle.',          icon: 'i-lucide-monitor',          default: '',          required: ['', 'light', 'dark'],        }),        shortcuts: group({          title: 'Shortcuts',          description: 'Keyboard shortcuts configuration.',          icon: 'i-lucide-keyboard',          fields: {            toggleColorMode: field({              type: 'string',              title: 'Toggle Color Mode',              description: 'Shortcut to toggle light and dark mode (e.g., d, meta_d). Leave empty to disable.',              icon: 'i-lucide-keyboard',              default: 'd',            }),          },        }),      },    }),    search: group({      title: 'Search',      description: 'Search configuration.',      icon: 'i-lucide-search',      fields: {        fts: field({          type: 'boolean',          title: 'Full-Text Search',          description: 'Use SQLite FTS5 full-text search instead of Fuse.js. Requires @nuxt/content v3.14+.',          icon: 'i-lucide-database',          default: false,        }),      },    }),    assistant: group({      title: 'Assistant',      description: 'Assistant configuration.',      icon: 'i-custom-ai',      fields: {        floatingInput: field({          type: 'boolean',          title: 'Floating Input',          description: 'Show the floating input at the bottom of documentation pages.',          icon: 'i-lucide-message-circle',          default: true,        }),        explainWithAi: field({          type: 'boolean',          title: 'Explain with AI',          description: 'Show the "Explain with AI" button in the documentation sidebar.',          icon: 'i-lucide-brain',          default: true,        }),        faqQuestions: field({          type: 'array',          title: 'FAQ Questions',          description: 'List of FAQ questions. Can be an array of strings or an array of categories with questions.',          icon: 'i-lucide-help-circle',          default: [],        }),        shortcuts: group({          title: 'Shortcuts',          description: 'Keyboard shortcuts configuration.',          icon: 'i-lucide-keyboard',          fields: {            focusInput: field({              type: 'string',              title: 'Focus Input',              description: 'Shortcut to focus the floating input (e.g., meta_i, ctrl_k).',              icon: 'i-lucide-keyboard',              default: 'meta_i',            }),          },        }),        icons: group({          title: 'Icons',          description: 'Icons configuration.',          icon: 'i-lucide-settings',          fields: {            trigger: field({              type: 'icon',              title: 'Trigger',              description: 'Icon for the AI chat trigger button and slideover header.',              icon: 'i-lucide-sparkles',              default: 'i-lucide-sparkles',            }),            explain: field({              type: 'icon',              title: 'Explain',              description: 'Icon for the "Explain with AI" button.',              icon: 'i-lucide-brain',              default: 'i-lucide-brain',            }),          },        }),      },    }),  },})