mirror of
https://github.com/imfing/hextra.git
synced 2025-08-24 19:36:38 -04:00

* docs(blog): prepare for v0.10 release post * Update v0.10.md * Update v0.10.md to refine upgrade instructions and enhance blog features. Added synchronized tab switching and pagination controls, while improving the search experience and table of contents navigation. * Enhance v0.10 release documentation with detailed upgrade instructions and migration guide. Added Tailwind theme variable customization section and clarified breaking changes. Improved clarity on CSS class prefix changes for better user experience. * Update v0.10.md to enhance upgrade instructions, clarify breaking changes, and improve overall readability. Adjusted formatting for consistency and added details on asset management and user experience improvements. * Add notable new features to v0.10.md, including dropdown menu support, enhanced search experience, and blog list pagination. Updated FlexSearch upgrade details for clarity and improved migration guide by removing redundant breaking change notes. * chore: update zh-cn translation * chore: update ja translation * chore: update fa and ja translations * chore: prepare release
252 lines
7.1 KiB
Markdown
252 lines
7.1 KiB
Markdown
---
|
|
title: Customizing Hextra
|
|
linkTitle: Customization
|
|
---
|
|
|
|
Hextra offers some default customization options in the `hugo.yaml` config file to configure the theme.
|
|
This page describes the available options and how to customize the theme further.
|
|
|
|
<!--more-->
|
|
|
|
## Custom CSS
|
|
|
|
To add custom CSS, we need to create a file `assets/css/custom.css` in our site. Hextra will automatically load this file.
|
|
|
|
### Font Family
|
|
|
|
The font family of the content can be customized using:
|
|
|
|
```css {filename="assets/css/custom.css"}
|
|
.content {
|
|
font-family: "Times New Roman", Times, serif;
|
|
}
|
|
```
|
|
|
|
### Inline Code Element
|
|
|
|
The color of text mixed with `other text` can customized with:
|
|
|
|
```css {filename="assets/css/custom.css"}
|
|
.content code:not(.code-block code) {
|
|
color: #c97c2e;
|
|
}
|
|
```
|
|
|
|
### Primary Color
|
|
|
|
The primary color of the theme can be customized by setting the `--primary-hue`, `--primary-saturation` and `--primary-lightness` variables:
|
|
|
|
```css {filename="assets/css/custom.css"}
|
|
:root {
|
|
--primary-hue: 100deg;
|
|
--primary-saturation: 90%;
|
|
--primary-lightness: 50%;
|
|
}
|
|
```
|
|
|
|
### Component Layout Variables
|
|
|
|
Hextra provides CSS variables to customize the width of pages, navbar, and footer:
|
|
|
|
```css {filename="assets/css/custom.css"}
|
|
:root {
|
|
/* Page width - also configurable via hugo.yaml params.page.width */
|
|
--hextra-max-page-width: 80rem; /* default: 80rem (normal), 90rem (wide), 100% (full) */
|
|
|
|
/* Navbar width - also configurable via hugo.yaml params.navbar.width */
|
|
--hextra-max-navbar-width: 90rem; /* independent navbar width */
|
|
|
|
/* Footer width - also configurable via hugo.yaml params.footer.width */
|
|
--hextra-max-footer-width: 80rem; /* independent footer width */
|
|
}
|
|
```
|
|
|
|
### Tailwind Theme Variables
|
|
|
|
Starting with Hextra v0.10.0, which is built on Tailwind CSS v4, you can customize the theme by overriding CSS variables inside the `@layer theme` block.
|
|
|
|
This lets you customize the global look and feel without having to modify every individual class.
|
|
|
|
```css {filename="assets/css/custom.css"}
|
|
@layer theme {
|
|
:root {
|
|
--hx-default-mono-font-family: "JetBrains Mono", monospace;
|
|
}
|
|
}
|
|
```
|
|
|
|
Check out [Tailwind Theme Variables documentation](https://tailwindcss.com/docs/theme#default-theme-variable-reference) for details.
|
|
|
|
### Further Theme Customization
|
|
|
|
The theme can be further customized by overriding the default styles via the exposed css classes. An example for customizing the footer element:
|
|
|
|
```css {filename="assets/css/custom.css"}
|
|
.hextra-footer {
|
|
/* Styles will be applied to the footer element */
|
|
}
|
|
|
|
.hextra-footer:is(html[class~="dark"] *) {
|
|
/* Styles will be applied to the footer element in dark mode */
|
|
}
|
|
```
|
|
|
|
The following classes can be used to customize various parts of the theme.
|
|
|
|
#### General
|
|
|
|
- `hextra-scrollbar` - The scrollbar element
|
|
- `content` - Page content container
|
|
|
|
#### Shortcodes
|
|
|
|
##### Badge
|
|
|
|
- `hextra-badge` - The badge element
|
|
|
|
##### Card
|
|
|
|
- `hextra-card` - The card element
|
|
- `hextra-card-image` - The card image element
|
|
- `hextra-card-icon` - The card icon element
|
|
- `hextra-card-subtitle` - The card subtitle element
|
|
|
|
##### Cards
|
|
|
|
- `hextra-cards` - The cards grid container
|
|
|
|
##### Jupyter Notebook
|
|
|
|
- `hextra-jupyter-code-cell` - The Jupyter code cell container
|
|
- `hextra-jupyter-code-cell-outputs-container` - The Jupyter code cell outputs container
|
|
- `hextra-jupyter-code-cell-outputs` - The Jupyter code cell output div element
|
|
|
|
##### PDF
|
|
|
|
- `hextra-pdf` - The PDF container element
|
|
|
|
##### Steps
|
|
|
|
- `hextra-steps` - The steps container
|
|
|
|
##### Tabs
|
|
|
|
- `hextra-tabs-panel` - The tabs panel container
|
|
- `hextra-tabs-toggle` - The tabs toggle button
|
|
|
|
##### Filetree
|
|
|
|
- `hextra-filetree` - The filetree container
|
|
|
|
##### Folder
|
|
|
|
- `hextra-filetree-folder` - The filetree folder container
|
|
|
|
#### Navbar
|
|
|
|
- `hextra-nav-container` - The navbar container
|
|
- `hextra-nav-container-blur` - The navbar container in blur element
|
|
- `hextra-hamburger-menu` - The hamburger menu button
|
|
|
|
#### Footer
|
|
|
|
- `hextra-footer` - The footer element
|
|
- `hextra-custom-footer` - The custom footer section container
|
|
|
|
#### Search
|
|
|
|
- `hextra-search-wrapper` - The search wrapper container
|
|
- `hextra-search-input` - The search input element
|
|
- `hextra-search-results` - The search results list container
|
|
|
|
Optional nested classes used within the search UI:
|
|
|
|
- `hextra-search-title` - The result title element
|
|
- `hextra-search-active` - The active result anchor
|
|
- `hextra-search-no-result` - The empty state element
|
|
- `hextra-search-prefix` - The breadcrumb/prefix label for grouped results
|
|
- `hextra-search-excerpt` - The result snippet text
|
|
- `hextra-search-match` - The highlighted query span
|
|
|
|
#### Table of Contents
|
|
|
|
- `hextra-toc` - The table of contents container
|
|
|
|
#### Sidebar
|
|
|
|
- `hextra-sidebar-container` - The sidebar container
|
|
- `hextra-sidebar-active-item` - The active item in the sidebar
|
|
|
|
#### Language Switcher
|
|
|
|
- `hextra-language-switcher` - The language switcher button
|
|
- `hextra-language-options` - The language options container
|
|
|
|
#### Theme Toggle
|
|
|
|
- `hextra-theme-toggle` - The theme toggle button
|
|
|
|
#### Code Copy Button
|
|
|
|
- `hextra-code-copy-btn-container` - The code copy button container
|
|
- `hextra-code-copy-btn` - The code copy button
|
|
- `hextra-copy-icon` - The copy icon element
|
|
- `hextra-success-icon` - The success icon element
|
|
|
|
#### Code Block
|
|
|
|
- `hextra-code-block` - The code block container
|
|
- `hextra-code-filename` - The filename element for code blocks
|
|
|
|
#### Feature Card
|
|
|
|
- `hextra-feature-card` - The feature card link element
|
|
|
|
#### Feature Grid
|
|
|
|
- `hextra-feature-grid` - The feature grid container
|
|
|
|
### Syntax Highlighting
|
|
|
|
List of available syntax highlighting themes are available at [Chroma Styles Gallery](https://xyproto.github.io/splash/docs/all.html). The stylesheet can be generated using the command:
|
|
|
|
```shell
|
|
hugo gen chromastyles --style=github
|
|
```
|
|
|
|
To override the default syntax highlighting theme, we can add the generated styles to the custom CSS file.
|
|
|
|
## Custom Scripts
|
|
|
|
You may add custom scripts to the end of the head for every page by adding the following file:
|
|
|
|
```
|
|
layouts/partials/custom/head-end.html
|
|
```
|
|
|
|
## Custom Extra Section in Footer
|
|
|
|
You can add extra section in the footer by creating a file `layouts/partials/custom/footer.html` in your site.
|
|
|
|
```html {filename="layouts/partials/custom/footer.html"}
|
|
<!-- Your footer element here -->
|
|
```
|
|
|
|
The added section will be added before the copyright section in the footer.
|
|
You can use [HTML](https://developer.mozilla.org/en-US/docs/Web/HTML) and [Hugo template syntax](https://gohugo.io/templates/) to add your own content.
|
|
|
|
Hugo variables available in the footer section are: `.switchesVisible` and `.displayCopyright`.
|
|
|
|
## Custom Layouts
|
|
|
|
The layouts of the theme can be overridden by creating a file with the same name in the `layouts` directory of your site.
|
|
For example, to override the `single.html` layout for docs, create a file `layouts/docs/single.html` in your site.
|
|
|
|
For further information, refer to the [Hugo Templates][hugo-template-docs].
|
|
|
|
## Further Customization
|
|
|
|
Didn't find what you were looking for? Feel free to [open a discussion](https://github.com/imfing/hextra/discussions) or make a contribution to the theme!
|
|
|
|
[hugo-template-docs]: https://gohugo.io/templates/
|