Find a file
Andriy Utkin 8db4d04cef
Some checks failed
Deploy Hugo site to Pages / build (push) Has been cancelled
Bump version and update theme.toml / build (push) Has been cancelled
Deploy Hugo site to Pages / deploy (push) Has been cancelled
Drop custom styling which dropped underline from links
2026-02-03 11:29:32 +00:00
.github/workflows edit release 2025-03-25 20:14:27 +01:00
archetypes first commit 2025-03-08 11:14:06 +01:00
assets/sass Drop custom styling which dropped underline from links 2026-02-03 11:29:32 +00:00
content Fix typos (#10) 2025-10-06 20:04:21 +02:00
images fix images aspect ratio for themes.gohugo.io/themes/hugo-air/ 2025-03-22 15:28:13 +01:00
layouts Don't use img/header-480.jpg 2026-02-03 11:28:41 +00:00
static move images to relevant folder for hugo themes 2025-03-20 16:40:39 +01:00
.gitignore fix screenshot urls 2025-03-20 16:03:06 +01:00
hugo.yaml add multilingual support (#4) 2025-04-29 21:47:50 +02:00
LICENSE first commit 2025-03-08 11:14:06 +01:00
README.md Fix typos (#10) 2025-10-06 20:04:21 +02:00
theme.toml Update theme.toml to version v0.0.20 2025-10-06 18:04:37 +00:00

Air, a theme for Hugo.

The intent of this theme is to provide a solid starting place for Hugo sites with basic features and include best practices for performance, accessibility, and rapid development.

Live Demo

Just visit francoiducat.github.io/hugo-air-demo

Local Demo

  1. Clone this repo
  2. Add markdown files in the content folder
  3. Run hugo serve

Features

Awesome features
Full Responsive
Bootstrap ready
Custom Header Image from page bundle
Shortcode Image Gallery from page bundle (Instagram or Masonry Style)
Page Type Image Gallery from page bundle (Instagram or Masonry Style)
Single-page landing homepage
Embedded Google Maps
Smooobu Booking shortcode
Multilingual Support shortcode

Installation

First Installation: as a git submodule

Install Air Theme as a Git Submodule. Naviguate to the folder of your Hugo site run:

git submodule add https://github.com/francoiducat/hugo-air.git themes/air

Update an existing installation

If you already have Air Theme installed, naviguate to the folder of your Hugo site run:

git submodule update --remote --merge

Usage

Edit your config file

baseURL: https://example.com/
languageCode: en-us
title: Example Site
theme: air
params:
  author:
    name: François
    siteUrl: https://notes.ducatillon.net/
  gmaps_url: https://www.google.com/maps/d/u/0/embed?mid=1UySq5HRbcRKL90dKuFpX6PRRtx0&ehbc=2E312F
  mainColor: "#386641"
  footer: "Hugo Air theme is great and customizable"
menu:
  main:
  - name: Home 
    url: /
    weight: 20
    params:
      target: 
  - name: Features 
    url: /features
    weight: 30
    params:
      target: 
  - name: Shortcode Gallery
    pageRef: /features/shortcode-gallery/
    parent: Features
    weight: 20
  - name: Landing Page
    url: /landing-page
    weight: 40
    params:
      target: 
  footer:
  - name: Home 
    url: /
    weight: 20
    params:
      target: 

markup:
  goldmark:
    parser:
      attribute:
        block: true
    renderer:
      unsafe: true

Customize main color

In your config file, add:

params:
  mainColor: "#386641"

This will override the main.scss

/*
=======================================================
=                   CSS Variables                     =
=======================================================
*/

/* 
Main color for the website
It can be overridden in the config file by setting "Params.mainColor" to any color value
*/
:root {
  --main-color: #035c8c; /* default color */
}

Set Google Maps url

In your config file, add:

params:
  gmaps_url: https://tinyurl.com/mr3uesbx

Setup Google Analytics

In your config file, add:

services:
  googleAnalytics:
  id: G-12345  #Replace with your Google Analytics ID

Use as partial

In your .md file, specify the type of the page with type: gallery-masonry or type: gallery-insta like this:

---
title: Air is a great hugo theme
type: gallery-masonry
---
Air is a great hugo theme with outstanding features like image gallery from page bundle

Use as shortcode

Assuming your folder structure would look something like this

content/
└── pages/
    └── my-page/                # Page Bundle
        ├── index.md            # Page content
        ├── featured-image.jpg  # Image Resource used as gallery image 1
        ├── card.jpg            # Image Resource used as gallery image 2 AND as card featured image
        ├── photo1.jpg          # Image Resource used as gallery image 3
        ├── photo2.jpg          # Image Resource used as gallery image 4
        └── photo3.jpg          # Image Resource used as gallery image 5

In your .md file, add this block to display your instagram image gallery

{{ < gallery-masonry page="my-page" > }}

where "my-page" is the page bundle object passed as a variable to the shortcode

Alternatively, use instagram gallery style with

{{ < gallery-insta page="my-page" > }}

Custom Header image

Add one image called featured-image.jpg in your page bundle.

Automatically loaded as a header image on your page

Automatically loaded from the static/img folder.

  • header-960.jpg for screens higher than 960px
  • header-480.jpg for screens lower than 960px

Custom Bootstrap Card image

When listing pages/posts, it displays bootstrap cards with a thumbnail image.
By default it uses the card image from static/img/card.jpg Customize the card image by adding one image called featured-image.jpg or card.jpg in your page bundle.

Single-page landing homepage

Add pages to a folder. These page will render as a single-page.

Example with this page bundle:

content/
└── landing-page/
    └── page-1/                 # Page Bundle
        ├── featured-image.jpg  # 
        ├── index.md            # Page 1
    ├── _index.md               # File that calls the landing-page type
    ├── page-2.md               # Page 2
    ├── page-3.md               # Page 3
    ├── page-4.md               # Page 4
    └── page-5.md               # Page 5

Edit your content/landing-page/_index.md to add type: landing-page

---
title: Landing Page
catchline: Awesome One Page Landing Page
type: landing-page
---

Add a weight to each page to render them by weight :

---
title: Page 1
weight: 10
---
Content of Page 1

Screenshot

Mobile

screenshot

Desktop

screenshot