Hinode logo
  • About 
  • Docs 
  • Components 
  • Guides 
  • Releases 
  •  
Docs
  • Getting Started
    • Introduction
    • Commands
    • Hosting and Deployment
    • Upgrading
    • Private Modules and Packages
    • Contribute
    • Troubleshooting
  • Content
    • Content Management
    • Content Organization
    • Typography
    • Links and Cross-References
    • Images and Figures
    • Tables
    • Icons
  • Configuration
    • Layout
    • Colors
    • Color Modes
    • Fonts
    • Languages
    • Navigation
    • Documentation
    • Analytics
    • Modules
    • Cookie Consent
    • Digital Asset Managers
  • Components
    • Abbr
    • Accordion
    • Alert
    • Animation
    • Args
    • Badge
    • Breadcrumb
    • Button
    • Button Group
    • Card
    • Card Group
    • Carousel
    • Collapse
    • Command Prompt
    • Docs
    • Example
    • File
    • Icon
    • Image
    • Ins
    • Kbd
    • Link
    • Map
    • Mark
    • Navbar
    • Navs and Tabs
    • Persona
    • Release
    • Spinner
    • Sub
    • Sup
    • Table
    • Timeline
    • Toast
    • Tooltip
    • Video
  • Advanced Settings
    • Overview
    • Styles
    • Scripts
    • Icons
    • Partial Development
    • Module Development
    • Server Headers
    • Server-Side Redirection
  • About
    • Credits
    • License
  • Getting Started
    • Introduction
    • Commands
    • Hosting and Deployment
    • Upgrading
    • Private Modules and Packages
    • Contribute
    • Troubleshooting
  • Content
    • Content Management
    • Content Organization
    • Typography
    • Links and Cross-References
    • Images and Figures
    • Tables
    • Icons
  • Configuration
    • Layout
    • Colors
    • Color Modes
    • Fonts
    • Languages
    • Navigation
    • Documentation
    • Analytics
    • Modules
    • Cookie Consent
    • Digital Asset Managers
  • Components
    • Abbr
    • Accordion
    • Alert
    • Animation
    • Args
    • Badge
    • Breadcrumb
    • Button
    • Button Group
    • Card
    • Card Group
    • Carousel
    • Collapse
    • Command Prompt
    • Docs
    • Example
    • File
    • Icon
    • Image
    • Ins
    • Kbd
    • Link
    • Map
    • Mark
    • Navbar
    • Navs and Tabs
    • Persona
    • Release
    • Spinner
    • Sub
    • Sup
    • Table
    • Timeline
    • Toast
    • Tooltip
    • Video
  • Advanced Settings
    • Overview
    • Styles
    • Scripts
    • Icons
    • Partial Development
    • Module Development
    • Server Headers
    • Server-Side Redirection
  • About
    • Credits
    • License

Navigation

Share via
Hinode
Link copied to clipboard

Help the user navigate your website using configurable navigation elements.

On this page
Basic Configuration   Main Navigation   Menus   Example   Versioning   Customization   Sidebar Navigation   Menus   Versioning   Customization   Breadcrumb   Example   Customization   Table of Contents   Customization  

Hinode supports several types of navigation that utilize Bootstrap elements. The main navigation is positioned on the top of the screen and includes a search input element. An optional secondary navigation is available as sidebar. Next to these navigation items, pages may optionally include a breadcrumb to indicate the current page’s location within the site’s navigational hierarchy. Finally, pages may also include a table of contents element that is linked to the scroll position of the current page.

Basic Configuration  

The basic configuration of the navigation elements is set in the navigation section of the site parameters. The following settings are supported:

Setting Default Description
anchor - Flag indicating to display anchor links on hovering a heading.
logo - Address of the brand logo image, e.g. “/img/logo_embedded.svg”. The vector image file is expected to be present in your local static/img folder.
color - Theme Color of the navigation bar. Set the style to set the correct contrast of the menu items. The navigation bar is transparent when no color is set, but is set to the body color when scrolling to enhance the contrast.
style “light” Style of the navigation bar, either “light” or “dark”. It changes the colors of the menu items accordingly.
fixed false Flag indicating to keep the navigation bar fixed at the top of the screen.
overlay false v0.23.0      Flag indicating to render the navigation bar as overlay on top of the page body. In this state, the navigation is transparent and the page body starts at the top of the viewport. The navigation becomes opaque when scrolling and is set to the specified theme color.
overlayMode “dark” v0.23.0      Style of the navigation bar when overlay is set, either “light” or “dark”.
horizontal false v0.21.0      Flag indicating the second level navigation should render horizontally. By default, the navbar uses regular dropdown menus instead.
offset “3em” Applies an Offset to Main Elements  when fixed is set to true.
size “md” Optional breakpoint of the navbar toggler, either “xs”, “sm”, “md” (default), “lg”, or “xl”.
search true Flag indicating to include a search input.
breadcrumb false Flag indicating to add breadcrumb navigation to the top of any single page. List pages are excluded.
toc true Flag indicating to enable table of contents globally. Individual pages can override this setting in the frontmatter using the value includeToc.
sidebar true Flag indicating to enable sidebar navigation globally. If set, a sidebar is displayed when applicable.
Setting Default
anchor -
Flag indicating to display anchor links on hovering a heading.
logo -
Address of the brand logo image, e.g. “/img/logo_embedded.svg”. The vector image file is expected to be present in your local static/img folder.
color -
Theme Color of the navigation bar. Set the style to set the correct contrast of the menu items. The navigation bar is transparent when no color is set, but is set to the body color when scrolling to enhance the contrast.
style “light”
Style of the navigation bar, either “light” or “dark”. It changes the colors of the menu items accordingly.
fixed false
Flag indicating to keep the navigation bar fixed at the top of the screen.
overlay false
v0.23.0      Flag indicating to render the navigation bar as overlay on top of the page body. In this state, the navigation is transparent and the page body starts at the top of the viewport. The navigation becomes opaque when scrolling and is set to the specified theme color.
overlayMode “dark”
v0.23.0      Style of the navigation bar when overlay is set, either “light” or “dark”.
horizontal false
v0.21.0      Flag indicating the second level navigation should render horizontally. By default, the navbar uses regular dropdown menus instead.
offset “3em”
Applies an Offset to Main Elements  when fixed is set to true.
size “md”
Optional breakpoint of the navbar toggler, either “xs”, “sm”, “md” (default), “lg”, or “xl”.
search true
Flag indicating to include a search input.
breadcrumb false
Flag indicating to add breadcrumb navigation to the top of any single page. List pages are excluded.
toc true
Flag indicating to enable table of contents globally. Individual pages can override this setting in the frontmatter using the value includeToc.
sidebar true
Flag indicating to enable sidebar navigation globally. If set, a sidebar is displayed when applicable.

The below configuration shows the default configuration set in config/_default/params.toml.

  • config/_default/params.toml
[navigation]
    anchor = true
    logo = "/img/logo_icon.svg"
    color = "body"
    fixed = true
    overlay = false
    overlayMode = "dark"
    horizontal = false
    offset = "5.5rem"
    search = true
    searchModal = false
    breadcrumb = true
    toc = true
    sidebar = true
    size = "md"
...

Main Navigation  

The main navigation uses Hugo’s Menu System  to generate a responsive navigation bar at the top of the page. The navigation bar uses a breakpoint to add a toggler for smaller screens. A language switcher is added automatically if your site supports multiple languages. The language switcher links to the currently translated page if available.

Menus  

The navigation bar uses Hugo’s Menu System  to generate the menu items. The navigation supports nesting at one level deep. Hinode supports three additional parameters:

Argument Required Description
alias No If set, the active menu item is linked to the specific menu entry instead of being derived from the target URL.
button No v0.24.10      If set, renders the menu item as a (small) button.
spacing No v0.24.10      If set, inserts a spacer. All prior menu items are left aligned, whilst the remaining menu items and right aligned.
Argument Required
alias No
If set, the active menu item is linked to the specific menu entry instead of being derived from the target URL.
button No
v0.24.10      If set, renders the menu item as a (small) button.
spacing No
v0.24.10      If set, inserts a spacer. All prior menu items are left aligned, whilst the remaining menu items and right aligned.

The following example defines an example menu configuration called sample (the main configuration is called main).

  • config/_default/menus/menus.en.toml
[[sample]]
  name = "About"
  pageRef = "/docs/about/credits/"
  weight = 10
  [sample.params]
    alias = true

[[sample]]
  name = "Guides"
  pageRef = "/guides/"
  weight = 30

[[sample]]
  parent = "Guides"
  name = "Getting started"
  pageRef = "/guides/editing/"
  weight = 10

[[sample]]
  parent = "Guides"
  name = "Developing Hugo modules"
  pageRef = "/guides/modules/"
  weight = 20

[[sample]]
  parent = "Guides"
  name = "Optimization"
  pageRef = "/guides/optimization/"
  weight = 30

[[sample]]
  name = "GitHub"
  url = "https://github.com/gethinode/hinode"
  weight = 40
...

Example  

The example below illustrates the navigation bar based on the sample configuration defined in the previous paragraph. The About and About (no alias) menu entries illustrate the behavior of the alias parameter. The GitHub menu entry shows an icon to indicate it is an external link and opens in a new window.

Sample
  • About 
  • About (No Alias) 
  • Guides 
    • Getting Started 
    • Developing Hugo Modules 
    • Optimization 
  • GitHub   

Versioning  

The main navigation supports versioning too. When configured, a drop-down menu containing the available versions is automatically added. See the Documentation Configuration for more details.

Customization  

Hinode includes a navigation bar at the top of the screen by default. You can modify the configuration in the layouts/_default/baseof.html file. The navigation bar is also available as Shortcode.

The following variables are available to modify the styling of the horizontal navigation. You can override them in assets/scss/theme/_variables.scss.

  • assets/scss/common/_variables.scss
$dropdown-transition: opacity .15s ease-in-out !default;
$dropdown-horizontal-margin-top: calc((-1.5 * 1rem) - 2px);
$dropdown-horizontal-padding-y: calc(1rem + 2px);
...

Sidebar Navigation  

Hinode supports optional sidebar navigation. It is intended to be used as companion to the main navigation and is typically used in content-heavy sections, such as documentation pages. On smaller screens, the sidebar is replaced with an Offcanvas Element  . In this case, the main navigation receives an additional toggler on the left of the screen.

Menus  

  Important

The sidebar recognizes multilingual data files. Add the language code as suffix to your data file. For example, data/blog.en.yml defines the sidebar menu of the English translation of the blog section.

Inspired by Bootstrap’s documentation site, Hinode uses a separate configuration file for the sidebar menus. A sidebar can be configured for each main section of the site. For example, the sidebar menu of the docs section is defined in data/docs.yml. The sidebar menu supports group items and single page items. You can optionally provide an internal or external link for the destination page (see the Link Shortcode for its behavior). By default, Hinode derives the destination from the menu item. The below example defines a group section called Getting started with three siblings. A single page About is added next. The latter redirects to an external website.

- title: Getting started
  pages:
    - title: Introduction
    - title: Commands
    - title: Contribute
- title: About
  link: https://example.com

Menu items can be nested within each other. The below example defines three content pages at the relative path A/B/C. The navigation path should be similar to the slug of the individual pages.

- title: A
  pages:
    - title: B
      pages:
        - title: C
          pages:
            - title: First
            - title: Second
            - title: Third

You can define separate data files for each available language in a multilingual site. Add the language code as suffix to your data file. For example, data/blog.en.yml defines the sidebar menu of the English translation of the blog section. Hinodes uses data/blog.yml as fallback (or any other Data Format Supported by Hugo  ).

Since v0.27.27  , Hinode renders a link for group items when a matching list page is found. You can suppress this behavior for a group item by setting its link value to "#" (the value is double-quoted to ensure the value is not interpreted as a YAML comment). For example, the Hinode docs includes a group item Components. The link /docs/components/ redirects to a list page that shows all available Hinode components. This list page breaks out from the sidebar navigation layout. To avoid navgigating to this page, the Hinode docs suppresses this link. Instead, the group item is expanded or collapsed, pending current state.

- title: Components
  link: "#"
  pages:
    - title: Abbr

Versioning  

Added in v0.15.0   

  Note

Release v0.15.0 of Hinode automatically detects the version of the current context. The configuration of the version attribute is no longer needed.

You can create versioned files for your menu data by adding a version suffix to the data file. For example, data/docs-1.0.yml contains the menu data for the docs menu of version 1.0. Hinode uses data/docs.yml as default sidebar navigation data when no versioned file is available. See the Documentation Configuration for additional options.

Customization  

The file assets/scss/components/_sidebar.scss contains the styling of the sidebar. It refers to a button $btn-toggle that is defined in assets/scss/common/_icons.scss. It also defines the spacing to be added to the page’s main content section when using a fixed navigation bar:

  • assets/scss/components/_sidebar.scss
.sidebar {
    top: var(--navbar-offset);
}

.sidebar-overflow {
    top: var(--navbar-offset);
    max-height: 90vh;
    overflow-y: auto;
    scrollbar-gutter: stable;
}

.sidebar-item {
    color: rgba(0, 0, 0, 0.65);
    margin-left: 0 !important;
    display: inline-block;
    padding: 0.1875rem 0.5rem !important;

    &.active {
        color: $primary;
    }

    &:hover,
    &:focus {
        color: $primary;
        background-color: tint-color($primary, 90%);
    }
}

.sidebar-item-group {
    &:hover,
    &:focus {
        color: $primary;
        background-color: tint-color($primary, 90%);
    }
    
    > div > a {
        color: var(--bs-body-color) !important;
        text-decoration: none;
        cursor: pointer;
    }
}

.sidebar-item-group > div {
    padding: 0.1875rem 0.5rem !important;
}

.btn-toggle-group {
    padding: 0.25rem 0.5rem;
    font-weight: 600;
    color: rgba(0, 0, 0, 0.65);
    background-color: transparent;

    &:hover,
    &:focus {
        background-color: transparent;
    }

    &::before {
        width: 1.25em;
        line-height: 0;
        content: $btn-toggle;
        transition: transform 0.35s ease;
        transform-origin: 0.5em 50%;
    }
}

.btn-toggle-group[aria-expanded="true"] {
    &::before {
        transform: rotate(90deg);
    }
}

@if $enable-dark-mode {
    @include color-mode(dark) {
        .sidebar-item {
            color: var(--bs-body-color);

            &.active {
                color: $primary-text-emphasis-dark !important;
            }

            &:hover,
            &:focus {
                color: $primary-text-emphasis-dark !important;
                background-color: transparent;
                box-shadow: inset 0 0 0 1px $primary-bg-subtle-dark;
    }
        }

        .sidebar-item-group {
            color: var(--bs-body-color) !important;

            &.active {
                color: $primary-text-emphasis-dark !important;
            }

            &:hover,
            &:focus {
                color: white !important;
                background-color: transparent;
                box-shadow: inset 0 0 0 1px $primary-bg-subtle-dark;
            }
        }

        .btn-toggle-group {
            color: var(--bs-body-color);
        
            &:hover,
            &:focus {
                background-color: transparent;
            }
        
            &::before {
                content: $btn-toggle-dark;
            }
        }

        .btn-toggle-group[aria-expanded="true"] {
            color: var(--bs-secondary-color);
        }
                    }
}
...

Breadcrumb  

Hinode supports optional breadcrumb navigation. The breadcrumb indicates the current page’s location within the site’s navigational hierarchy. It is automatically populated by Hugo. Enable the breadcrumb in the Basic Navigation Configuration. If enabled, all single pages will add breadcrumb navigation to the top of the page.

Example  

When enabled, the breadcrumb looks like this:

  1.   Components
  1. Home
  2. Docs
  3. Components
  4. Breadcrumb
markdown
{{< breadcrumb path="breadcrumb" >}}

Customization  

The breadcrumb is also available as Shortcode.

Table of Contents  

Single pages can optionally show an Table of Contents  on the right of the screen. The table of contents is automatically populated based on the headings within the page content (two levels deep). The table of contents is hidden if it has less than two items. On smaller screens, a drop-down menu is added to the top of the page. Enable the table of contents in the Basic Navigation Configuration. If enabled, all single pages will show the element, unless disabled in the page’s frontmatter.

Customization  

The file assets/scss/components/_toc.scss defines the styling of the table of contents element. It adds spacing to align the element to the sidebar, amongst other styling:

  • assets/scss/components/_toc.scss
.toc-sidebar {
    grid-area: toc;
    right: 0;
    z-index: 2;
    height: calc(100vh - 5rem);
    overflow-y: auto;
    top: 5rem;
}
...
• Upgrade to Hinode v0.29.0 (6c78261)
On this page:
Basic Configuration   Main Navigation   Menus   Example   Versioning   Customization   Sidebar Navigation   Menus   Versioning   Customization   Breadcrumb   Example   Customization   Table of Contents   Customization  
Navigation
Navigation
Hinode is a clean documentation and blog theme for your Hugo site based on Bootstrap 5.
Code licensed MIT, docs CC BY-NC 4.0
Currently v0.29.3
Privacy | Cookies
 
Links
Home 
About 
Docs 
Components 
Releases 
Guides
Getting Started 
Developing Modules 
Optimization 
Versioning 
Community
Issues   
Discussions   
Contribute 
Hinode
Code copied to clipboard