beta This component version is ready to be used but is still in active development.

Details block

Use this interactive accordion-link component in places where information is optional.

github location npm version


  • This component makes use of the HTML details element.
  • To toggle the default state, the open attribute: <details class="vf-details" open>.


I'm a detail Something small enough to escape casual notice.
Nunjucks syntax

Depending on your environment you'll want to use render or include. As a rule of thumb: server-side use include, precompiled browser use render. If you're using vf-eleventy you should use include.

Using include

You'll need to pass a context object from your code or Yaml file (example), as well as the path to the Nunjucks template. Nunjucks' include is an abstraction of render and provides some additional portability.

{% set context fromYourYamlFile %}
- or -
{% set context = { 
"component-type" : "block",
"details_open" : true,
"details_summary" : "I'm a detail",
"details_content" : "Something small enough to escape casual notice.",
{% include "../path_to/vf-details/vf-details.njk" %}

Using render

This approach is best for bare-bones Nunjucks environments, such as precompiled templates with the Nunjucks slim runtime where include is not be available.

{% render '@vf-details', {
  "component-type" : "block",
  "details_open" : true,
  "details_summary" : "I'm a detail",
  "details_content" : "Something small enough to escape casual notice.",}
<details class="vf-details" open>
  <summary class="vf-details--summary">I'm a detail</summary>
  Something small enough to escape casual notice.


Installation info

This repository is distributed with [npm][]. After [installing npm][] and yarn, you can install vf-details with this command.

$ yarn add --dev @visual-framework/vf-details


This component does not use JS.


The source files included are written in Sass(scss). You can point your Sass include-path at your node_modules directory and import it like this.

@import "@visual-framework/vf-details/index.scss";

Make sure you import Sass requirements along with the modules. You can use a project boilerplate or the vf-sass-starter




  • Fixes the missing "about" in the readme.
  • Shows "pointer" on hover.
  • uses interactive blue colour.
  • Shows summary child elements as inline.


  • changes any set- style functions to cleaner version


  • updates spacing design tokens
  • requires v2.0.0 of the vf-design-tokens package or newer


  • Inital version


File system location: components/vf-details

Find an issue on this page? Propose a change or discuss it.