Skip to content
Type something to search...
Kivo Theme Documentation

Section Layouts

Skill level: Beginner · Time: 1 minute per section

14 Kivo sections can be drawn in more than one way (46 layouts in total, counting each default), and the page header has 4 layouts. You pick one with a single line, and the content stays the same, so you can try every option without rewriting anything.

options:
layout: "bento"

Where To Set A Layout

Set it in…It applies to…
The section file, src/content/sections/<language>/<section>.mdEvery page that uses the section
A page block, for example featureGridSection: in a page fileThat page only

Set it in both language folders.

Copy the value from the comment next to layout: or from the catalog below. Section files have no schema, so npm run astro-check doesn’t report a misspelled value there; open the page to check it. In page blocks, astro-check checks the value, except in the contact, FAQ, and pricing page files.

Preview Layouts Before You Choose

The layout gallery. /elements/ shows every layout of the sections that have more than one, and of the page header, each with its options.layout line to copy. The contact section’s sales layout is shown on /contact/ instead. The gallery is hidden from search engines, the sitemap, and site search. Keep it as a reference while you build, then delete src/content/pages/english/elements.md (and french/) and src/pages/[...lang]/elements.astro before launch, or keep it unlisted.

Kivo layout gallery

The Change layout button. A demo feature, off by default. When you turn it on, a floating Change layout button (bottom left) on the four homepages cycles the section in view through all its layouts. Hover it to see a card with the file to edit and the exact line to copy.

  1. Set [settings.layoutSwitcher] enable = true in config.toml.
  2. Run npm run dev and open a homepage.
  3. Scroll to the section you want to change.
  4. Click Change layout until you like what you see.
  5. Click the copy button on the card and paste the line into the file it names.

When you are done, set enable = false again. The theme’s demo deploys show the button because they are built with PUBLIC_DEMO_MODE=true; leave that variable unset on your site.

Layout Catalog

The first value of each section is its default.

Hero

File: hero-saas.md · Block: heroSaas

LayoutWhat it looks like
defaultCopy on the left, an animated deploy mockup on the right
centeredCentered copy, optional logo strip below
screenshotCentered copy above a product screenshot in a browser frame (image), or the mockup
codeCopy beside a code window; with code.tabs, requests are typed and responses stream in
formCopy beside a sign-up card that posts to your newsletter

More hero options: options.rotatingStyle (typewriter or fade) for the rotating words, options.showGrid for the grid backdrop, and alternatives to the deploy mockup: preview.terminal (an animated terminal, default layout only), and, in default and screenshot, agent (an AI agent run) and dashboard (an analytics dashboard). Each needs enable: true. badges adds proof badges (GitHub stars, ratings) under the buttons in every layout.

Block: pageHeader in a page file (the title comes from the page’s title)

LayoutWhat it looks like
defaultBreadcrumb and title
introCopy on the left, buttons on the right
centeredEverything centered
splitCopy on the left, a product visual or an image on the right

Features

File: feature-grid-section.md (also security-section.md, benefits-section.md, feature-bento-section.md) · Block: featureGridSection

LayoutWhat it looks like
defaultIcon grid; options.columns 3 or 4
alternatingRows where copy and media swap sides
tabsFeature tabs on the left, description and media on the right
stickySticky intro and buttons on the left, a list on the right
bentoCells of different widths; each item’s span (1–3) sets its width

Items can show a visual (an animated product illustration) or an image in alternating, tabs, and bento.

Steps

File: steps-section.md · Block: stepsSection

LayoutWhat it looks like
defaultTabs with animated previews; options.autoplay and options.interval
timelineSticky intro, numbered vertical steps; options.previews: false hides visuals

Testimonials

File: customer-quotes-section.md · Block: customerQuotesSection

LayoutWhat it looks like
defaultCustomer logo tabs with a rotating quote
marqueeTwo rows of quote cards scrolling in opposite directions
spotlightOne large quote with avatar and logo, beside two stat tiles
metricsProof badges, 3–4 counting stat tiles, and a logo strip

Code

File: code-tabs-section.md · Block: codeTabsSection

LayoutWhat it looks like
defaultIntro on the left, tabbed code on the right
stackedCentered intro above full-width tabs
compareThe first two tabs side by side
terminalIntro beside an animated terminal
apiRequest tabs above a response panel with a status chip (needs response)

Pricing

File: plans-section.md · Block: plansSection. See Pricing.

LayoutWhat it looks like
defaultPlan cards with a monthly/yearly toggle
usageUsage sliders with a live monthly estimate (needs usage.meters)
singleThe featured plan beside its feature checklist
compactEvery plan as a row of one table

FAQ

File: questions-section.md · Block: questionsSection

LayoutWhat it looks like
defaultSticky intro beside an accordion
two-columnCentered intro, questions split into two columns

Questions can have a group heading in both layouts.

Changelog

SectionLayouts
Homepage preview (changelog-section.md)default (dated list) · cards (cards with date, tag, and image)
/changelog/ list (changelog-list-section.md)default · cards (grid with images) · compact (dense rows)

Call To Action

File: call-to-action.md · Block: ctaSection

default · split · band · newsletter, plus options.appearance: saas, dark, light, or accent. See Footer & Call To Action.

Other Sections

SectionWhere it is setLayouts
Feature indexfeature-index-section.md, featureIndexSectiondefault · list · grouped (by entry category) · featured
Feature herofeature-hero-section.md, featureHeroSectiondefault · screenshot
Feature detail page templateoptions.layout in a feature entry in src/content/services/default · api · guide · showcase
Contactcontact-section.md, contactSectiondefault · sales
Log in, sign up, reset passwordoptions.layout in src/content/auth/<language>/*.mddefault (split with a side panel) · centered
Logosclients.md, clientsSectionoptions.layout: grid · plain; columnsPerRow: 4 or 6; titleStyle: heading or eyebrow
Header[settings.layout] header in config.tomldefault · simple · centered
Footer[settings.layout] footer in config.tomldefault · minimal · large

All other sections have one layout (default).

Recipes By Product Type

The demo homepages show combinations that suit each kind of product:

ProductHeroFeaturesCodePricingTestimonialsCall to action
Developer cloud (/)defaultdefaultdefaultdefaultdefaultdefault
API product (/home-api/)codetabscompareusagemetricssplit
AI product (/home-ai/)screenshot + agentalternating–usagemarqueedefault
Analytics (/home-analytics/)screenshot + dashboardsticky–compactspotlightnewsletter
CLI or dev toolformdefaultterminalsinglemetricsband