Giter Club home page Giter Club logo

stackbit-theme-libris's Introduction

Libris

A documentation theme for Stackbit. Live Demo

Create with Stackbit

Turn themes into CMS-powered websites

Stackbit provisions your theme's content model with a growing selection of headless CMS and pulls the content for you in the format your static site generator expects it. This is powered by a single config file, stackbit.yaml, which defines a Uniform theme model and enables integration with CMS like Contentful, DatoCMS, Forestry, NetlifyCMS, etc.

One theme codebase converts to multiple Static Site Generators

This theme in particular is written in Unibit, a superset of static site generators. Unibit's powerful transpiling engine enables you to write once and stay SSG agnostic. Themes will automatically work with new generators as they are added and can currently convert to Jekyll, Hugo & Gatsby.

Quickstart

Unibit CLI

Develop locally using the Unibit CLI.

npm install -g @stackbit/unibit

Start the local development server.

unibit develop

Compile a production build into the public folder.

unibit build

CodeSandbox

Develop this theme in the browser using CodeSandbox.

Fork in CodeSandbox

Theme Documentation

Editing & adding docs pages

All documentation pages must be located inside the content/docs folder. You can create folders inside this folder 1 level deep. For example:

  • Documentation root page: docs/index.md
  • Parent section pages: docs/<section_name>/index.md
  • Child section pages: docs/<section_name>/<page_name>.md

Documentation pages should contain the following front matter. title and template are required.

---
- `title`: apart from defining the page title, docs layout use this field to
  label navigation menu items.
- `weight`: defines the order of the child section page. This field is ignored
  for parent section pages.
- `template`: docs
- `excerpt`: Can be defined on a parent section pages to render the description
  of the section in the Overview page (`overview.html`). This field is ignored
  for child section pages. 
---

All page inside the content/docs folder should use the docs layout (templates/docs.html). This layout is responsible for rendering the documentation navigation menu and uses several properties to control its appearance:

Docs menu

For sections to appear in the docs sidebar menu they must be defined in doc_sections.yml located inside the data folder. The order of section in this list will define the appearance order in navigation menu.

doc_sections.yml:

root_folder: /docs/
sections:
  - about
  - getting-started
  - ui-components
  - manage-content
  - tools
  - faq
  - community

Example

Here is an example to a folder structure, several documentation pages and documentation sections:

.
├── data
│   ├── doc_sections.yml
│   └── ...
├── content
│   ├── docs
│   │   ├── getting-started
│   │   │   ├── index.md         [section parent page]
│   │   │   ├── installation.md  [section child page]
│   │   │   └── quick-start.md   [section child page]
│   │   ├── guides
│   │   │   ├── index.md         [section parent page]
│   │   │   ├── features.md      [section child page]
│   │   │   └── overview.md      [section child page]
│   │   ├── faq
│   │   │   └── index.md         [section parent page]
│   │   └── index.md             [documentation root page]
│   └── ...
└── ...

content/docs/guides/overview.md:

---
title: Overview
weight: 1           # position guides/overview first
template: docs
---

content/docs/guides/features.md:

---
title: Features
weight: 2           # position guides/features second
template: docs
---

data/doc_sections.yml:

root_folder: /docs/
sections:
  - getting-started
  - guides
  - faq

Navigation Example

Callouts

To add a callout to your documentation, simply use the following html markup:

<div class="important">
  <strong>Important:</strong> 
  This is the "Important" callout block of text. It indicates a warning or caution.
  Use it for an important message. 
</div>
<div class="note">
  <strong>Note:</strong> 
  This is the "Note" callout block of text. It signifies a general note.
</div>

Syntax Highlighter

To enable syntax highlighting in your code blocks, add a language identifier. For example, to syntax highlight JavaScript code, specify javascript next to the tick marks before the fenced code block:

```javascript
if (condition) {
  code to run if condition is true
} else {
  run some other code instead
}
```

Editing the Homepage

The homepage content uses content/index.md. You can edit all of the homepage sections by editing this files front matter.

Main Navigation

The items of the main menu located at the top can be defined either inside the page front matter or inside the config.yml file.

To add a page menu item, you should define the menus parametter in the front matter of the page. For instance:

---
title: Welcome to Libris
menus:
  main:
    weight: 2
    title: Docs
template: docs
---

To add a global menu item, you should define it inside the root menus field inside config.yml. For instance:

menus:
  main:
    - identifier: github
      title: GitHub
      url: "https://github.com/"
      weight: 6

Additional Templates

Besides the usual templates (blog, page, post) and documentation templatee mentioned above (docs), there are two additional templates that can be used for pages:

  • overview - used to list all the documentation sections in a neat grid.
  • showcase - used to showcase the users of your product.

Social Links

To display social icons in the footer, update the social.json file located in the data folder. You can use any icon supported by Font Awesome and just need to specify the appropriate Font Awesome class name as the icon value.

Color palettes

Libris supports the following color palettes:

  • blue (default)
  • green
  • navy
  • violet

To change the color palette, update the palette variable in config.yml.

Credits

stackbit-theme-libris's People

Contributors

jugglerx avatar mountainbug95 avatar tomasbankauskas avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.