Features
v2.1Learn about search, pagination, changelog, and badges
Minima+ includes several powerful features to enhance your Jekyll site.
Search
Full-text search across your site powered by Lunr.js.
Opening Search
- Keyboard shortcut: Press
Cmd+K(Mac) orCtrl+K(Windows/Linux) - Click: Use the search button in the header
Search Features
- Searches posts, documentation, and pages
- Filter by content type (All / Posts / Docs)
- Keyboard navigation with arrow keys
- Recent searches saved in localStorage
- Highlighted search matches
Enabling Search
Search is enabled by default. To toggle it:
# _config.yml
theme_config:
features:
search: true # or false to disable
How It Works
Jekyll generates a search index at /assets/search.json containing all your content. When you open the search modal, Lunr.js loads this index and performs client-side search.
Pagination
Built-in pagination for blog posts using jekyll-paginate-v2.
Configuration
# _config.yml
pagination:
enabled: true
per_page: 6
permalink: '/page/:num/'
sort_field: 'date'
sort_reverse: true
Page Setup
Enable pagination in your blog index:
# blog/index.html
---
layout: blog
title: Blog
pagination:
enabled: true
collection: posts
---
Pagination Features
- Previous/Next navigation buttons
- Page numbers with ellipsis for many pages
- “Showing X-Y of Z” counter
- Responsive design (simplified on mobile)
Changelog
Automatically fetch and display releases from your GitHub repository.
Setup
- Set your GitHub repo in
_config.yml:
github_repo: "username/repo"
- Create a changelog page:
# changelog.md
---
layout: changelog
title: Changelog
description: Track all releases and updates
permalink: /changelog/
---
- Add to navigation in
_data/navigation.yml:
main:
- title: "Changelog"
url: "/changelog/"
Changelog Features
- Auto-fetch: Pulls releases from GitHub API
- Search: Filter releases by keyword
- Filters: All releases, major only, minor & major, pre-releases
- Pagination: Navigate through many releases
- Markdown: Release notes rendered with full markdown support
- Downloads: Asset download links displayed
- Badges: Version and status badges
Fallback
If the GitHub API fails (rate limiting, network issues), users see a friendly error message with a retry button.
Badges
Easy integration with Shields.io and Badgen.net for dynamic badges.
Static Badge
Create a custom badge with label and message:
{% include components/badge.html
label="version"
message="1.0.0"
color="blue"
style="flat-square"
%}
Dynamic Badge
Fetch live data from services like GitHub:
{% include components/badge.html
type="github/stars"
repo="E-Segments/minima-plus"
style="for-the-badge"
logo="github"
%}
Badge with Logo
{% include components/badge.html
label="Jekyll"
message="4.3+"
color="CC0000"
logo="jekyll"
logoColor="white"
style="for-the-badge"
%}
Badge Group
Display multiple badges from a data file:
{% include components/badge-group.html badges=site.data.badges.theme %}
Badge Data File
Define badges in _data/badges.yml:
theme:
- label: "Jekyll"
message: "4.3+"
color: "CC0000"
logo: "jekyll"
style: "for-the-badge"
- type: "github/v/release"
repo: "E-Segments/minima-plus"
style: "for-the-badge"
Available Badge Types
GitHub:
github/stars/owner/repogithub/forks/owner/repogithub/issues/owner/repogithub/v/release/owner/repogithub/license/owner/repogithub/actions/workflow/status/owner/repo/workflow.yml
NPM:
npm/v/packagenpm/dm/package(downloads)
PyPI:
pypi/v/package
Badge Styles
| Style | Description |
|---|---|
flat |
Default, minimal |
flat-square |
Square corners |
plastic |
3D effect |
for-the-badge |
Large, uppercase |
social |
Social media style |
404 Error Page
A creative, animated 404 page with search, suggestions, and fun rotating messages.
Features
- Animated gradient 404 text with floating animation
- Background particles effect
- Built-in search box
- Automatic navigation suggestions from
_data/navigation.yml - Rotating fun error messages
- Dark mode support
Customization
Override the default page in your 404.html:
---
layout: 404
title: "Page not found"
description: "Custom description here"
permalink: /404.html
suggestions: # Override default suggestions
- title: "Home"
url: "/"
- title: "Blog"
url: "/blog/"
---
Coming Soon Page
A beautiful landing page for pre-launch with countdown timer and email capture.
Setup
Create coming-soon.html:
---
layout: coming-soon
title: "Coming Soon"
headline: "Something Amazing is Coming"
tagline: "We're working hard to bring you something special."
launch_date: "2025-06-01T00:00:00"
notify_text: "Get notified when we launch:"
button_text: "Notify Me"
# form_action: "https://your-email-service.com/subscribe"
social:
- name: "Twitter"
icon: "twitter"
url: "https://twitter.com/handle"
- name: "GitHub"
icon: "github"
url: "https://github.com/repo"
---
Features
- Countdown Timer: Live countdown to launch date
- Email Capture: Newsletter signup form
- Social Links: Connect social profiles
- Animated Background: Glowing orbs effect
- Responsive: Works on all screen sizes
Social Icons
Supported icons: twitter, github, linkedin, instagram, discord
Email Form
By default, emails are stored in localStorage (demo mode). Set form_action to post to your email service:
form_action: "https://buttondown.email/api/emails/embed-subscribe/your-newsletter"
Dark Mode
Automatic dark mode with manual toggle.
How It Works
- Checks
localStoragefor saved preference - Falls back to system preference (
prefers-color-scheme) - Defaults to light mode
Toggle
The dark mode toggle in the header lets users switch between modes. Their preference is saved to localStorage.
Styling
Use Tailwind’s dark mode classes:
<div class="bg-white dark:bg-slate-900">
<p class="text-slate-900 dark:text-white">Content</p>
</div>
Disabling
To remove dark mode:
# _config.yml
theme_config:
features:
dark_mode: false