Customization Introduction
Learn the fundamentals of documentation customization
Customizing your documentation allows you to create a unique and branded experience for your users. There are three main approaches for customization:
-
Customization via settings file - choose from a variety of pre-built themes and tweak using available theme settings
-
Extending the default theme - build upon the existing design while adding your own enhancements via code
-
Creating a new theme - develop a completely new theme from scratch via code
Customization via Settings File
This is the simplest way to customize your documentation.
You can do this by editing the docs.json
file in the root of your project.
{ "theme": { "name": "poetry", "logo": "/path/to/logo.svg", "favicon": "/path/to/favicon.svg", // ... other theme settings } }
For more details on the theme settings, see the reference guide.
Customization via Code
To customize your documentation via code, you'll need to work with a .docs/theme
directory inside your project root:
. ├─ .docs # .docs root │ └─ theme │ ├─ index.ts # theme entry │ └─ index.css # theme styles entry | └─ docs.json # settings file
CSS Tokens
List of all available css tokens you can find here.
theme/index.css
You can customize theme styles via index.css:
/* your custom css styles */
Tip
Check out sample project.
theme/index.tsExperimental
xyd
will lookup for index.ts
if you want to modify or create new theme behavior.
This file is only necessary when you need to extend default theme's functionality or create a new theme:
import {BaseTheme} from "xyd-js/themes" export default class MyTheme extends BaseTheme { constructor() { super(); // you can access theme settings here // this.theme # do stuff what u want with `theme` } }
However, if you only want to customize styles, you can simply use index.css
without creating an index.ts
file.
Learn more about extending the default theme or creating a custom theme via code.
Theme Reference
Theme settings are defined as an object with the following reference:
name
"poetry" | "cosmo" | "opener" | "picasso" | string
Required
A theme name.logo
any
Path to logo image or object with path to "light" and "dark" mode logo images, and where the logo links to.fonts
ThemeFont
Font configuration for the theme.Font
Font
family
string
The font family to use.weight
string
The font weight to use.src
string
The font src to use.format
"woff2" | "woff" | "ttf"
The font format to use.
Font[]
Font[]
{ body?: Font
{ body?: Font
Font[]; coder?: Font
Font[]; coder?: Font
Font[]; }
Font[]; }
favicon
string
Path to the favicon image. For example: /path/to/favicon.svgicons
Icons
The iconify library setup.library
The iconify libraryIconLibrary
IconLibrary
name
string
Required
The iconify library nameversion
string
The iconify library versiondefault
boolean
The default iconify icon namenoprefix
boolean
Merge icons from the library into the default iconify library
string
string
IconLibrary[]
IconLibrary[]
appearance
Appearance
Appearance configuration for the theme.colorScheme
"light" | "dark" | "os"
The default color scheme to use.colors
Colors
Colors configuration for the theme.primary
string
Required
The primary color of the theme.light
string
The light color of the theme.dark
string
The dark color of the theme.
cssTokens
{ [token: string]: string; }
CSS tokens for the theme.presets
string[]
Presets for the theme.logo
AppearanceLogo
Logo appearance for the theme.sidebar
boolean | "mobile" | "desktop"
If `true` then the logo will be displayed on the sidebar.header
boolean | "mobile" | "desktop"
If `true` then the logo will be displayed on the header.
search
AppearanceSearch
Search appearance for the theme.fullWidth
boolean
If `true` then the search bar will be displayed as a full width.sidebar
boolean | "mobile" | "desktop"
If `true` then the search bar will be displayed on the sidebar.middle
boolean | "mobile" | "desktop"
If `true` then the search bar will be displayed in the middle of the header.right
boolean | "mobile" | "desktop"
If `true` then the search bar will be displayed on the right side of the header.
header
AppearanceHeader
Header appearance for the theme.externalArrow
boolean
If `true` then the header external links will display an external arrow.separator
"right"
If `right` then separator will be displayed on the right side of the header.type
"classic" | "pad"
The type of the header.buttonSize
"sm" | "md" | "lg"
The button size of the header.
tabs
AppearanceTabs
Tabs appearance for the theme.surface
"center" | "sidebar"
The tabs to display in the header.
sidebar
AppearanceSidebar
Sidebar appearance for the theme.externalArrow
boolean
If `true` then the sidebar will display a scroll shadow.scrollShadow
boolean
If `true` then the sidebar will display a scroll shadow.scrollbar
"secondary"
The color of the sidebar scrollbar.scrollbarColor
string
The color of the sidebar scrollbar.scrollTransition
"smooth" | "instant"
The transition behaviour of the sidebar scroll when navigating to a new page.
buttons
AppearanceButtons
Buttons appearance for the theme.rounded
boolean | "sm" | "md" | "lg"
tables
AppearanceTables
Table appearance for the theme.kind
"secondary"
The kind of the table.
banner
AppearanceBanner
Banner appearance for the theme.fixed
boolean
If `true` then the banner will have fixed position (always visible).
content
AppearanceContent
Content appearance for the theme.contentDecorator
"secondary"
Content decorator for the theme.breadcrumbs
boolean
If `true` then the breadcrumbs will be displayed.sectionSeparator
boolean
If `true` then the section separator will be displayed.
footer
AppearanceFooter
Footer appearance for the theme.surface
"page"
The footer surface.
writer
Writer
Writer configuration for the theme.maxTocDepth
number
The maximum number of table of conten§ts levels.copyPage
boolean
Copy page button
coder
Coder
Coder configuration for the theme, including options like syntax highlighting.lines
boolean
If `true` then code blocks will have line numbers by default.scroll
boolean
If `true` then code blocks will have a scrollbar by default.syntaxHighlight
any
Syntax highlighting configuration.
head
array of [string, Record<string, string | boolean>, ]
Head configurationscripts
string[]
Custom scripts to be added to the head of the every page. Paths are relative to the root of the project or absolute.
Full settings reference you can read here.
Show your support! Star us on GitHub ⭐️