Skip to content

Latest commit

 

History

History
638 lines (544 loc) · 37.2 KB

File metadata and controls

638 lines (544 loc) · 37.2 KB
title Wiki.js CSS & Layout Gallery
description Responsive Wiki.js layout patterns using verified Iris documentation data
published true
date 2026-08-27 00:00:00 UTC
tags meta, wikijs, css, layouts, examples
editor markdown
dateCreated 2026-08-27 00:00:00 UTC

Use this page as a visual menu when designing a Volmit wiki page. Every preview uses real Iris documentation content, responsive CSS, semantic HTML, and Git-friendly page source. The patterns are intentionally different: choose one or combine two instead of putting every pattern on one production page.

For a finished plugin landing page that combines several of these ideas, see Adapt — Complete CSS Page Example.

These previews require Wiki.js Markdown Allow HTML and a sanitizer policy that permits inline style attributes. That matches the current Volmit home page. If inline styles are removed on your Wiki.js instance, use the class-based stylesheet near the end of this page. {.is-warning}

Pick a pattern {#pick-a-pattern}

Design rules used here {#design-rules}

Rule Why it helps
One primary action per section Readers can decide without scanning a wall of equal-weight links
auto-fit grids Cards collapse naturally without page-specific breakpoints
clamp() spacing and type The design scales smoothly between phone and desktop widths
color: inherit on neutral cards Text remains readable in Wiki.js light and dark themes
Text plus color Status never depends on color alone
Real links and headings The page remains keyboard, screen-reader, and search friendly
Inline styles only for the demo Production components are easier to maintain with scoped classes
{.dense}

The examples use /home-assets/iris.png, current Iris routes, Minecraft 26.2, Java 25, and current command syntax from the Iris documentation.

Layout 1 — Product hero {#layout-1}

Best for: a plugin landing page with one sentence, two actions, and only the most important compatibility facts.

Iris
WORLD GENERATION ENGINE

Iris

Build deterministic terrain, biomes, caves, objects, and structures from editable JSON packs—across Bukkit and mod-loader servers.

Minecraft 26.2 Java 25 Paper · Folia · Fabric · Forge · NeoForge

The useful CSS ideas are clamp() for fluid sizing, decorative shapes behind content, flex-wrap for actions, and a constrained text width inside a full-width panel.

Layout 2 — Choose-your-path navigation {#layout-2}

Best for: a documentation index where readers arrive with different goals. This is usually easier to navigate than a flat list of twenty pages.

01 Run a server Choose the correct jar, install Iris, and create a managed world. Start installing → 02 Author a pack Learn dimensions, regions, biomes, generators, and pack layout. Learn the model → 03 Operate production Validate, pre-generate, back up, diagnose, and recover worlds. Open runbooks → 04 Use the API Query terrain and subscribe to engine, world, and pregen events. Build an integration →

The whole card is a real anchor, so its click target is generous. The grid automatically changes column count as room becomes available.

Layout 3 — Bento feature grid {#layout-3}

Best for: showing product breadth without making every feature look equally important. Use short copy; this pattern becomes crowded quickly.

THE CORE IDEA

One pack describes an entire world

Dimensions connect regions, biomes, generators, objects, and structures. Production worlds keep a snapshot while Studio hotloads your working pack.

Terrain

Noise, expressions, caves, carving, and image maps.

Biomes

Surfaces, decorators, deposits, entities, and custom climate.

Structures

Single objects, multi-piece jigsaws, and vanilla passthrough.

Studio

Disposable authoring worlds, schemas, previews, and hotload.

Determinism

Matching artifacts, packs, seeds, and areas produce identical chunks.

grid-column: 1 / -1 makes the summary span every available column without a media query. The smaller cards then flow beneath it.

Layout 4 — Quick-start steps {#layout-4}

Best for: installation, migration, authoring, or any sequence where order matters. Each step ends in an observable result.

1

Install

Choose the plugin or mod jar, place it in the server, then start once.

RESULT: Iris enables cleanly 2

Create

Run /iris create name=demo type=overworld seed=1337.

RESULT: a managed world exists 3

Verify

Teleport in, inspect the terrain, and confirm the expected pack and seed.

RESULT: new chunks are Iris terrain 4

Author

Open a Studio world and edit the live pack with generated VSCode schemas.

NEXT: build your own dimension

Read the complete getting-started guide →

Layout 5 — Compatibility dashboard {#layout-5}

Best for: requirements, current support, release readiness, or a project status overview. The top row answers “will this run?” at a glance.

Compatibility snapshot Current Iris documentation target
● Documented
MINECRAFT 26.2
JAVA 25
BUKKIT LOAD STARTUP
ADMIN NODE iris.all
Plugin jar:Paper family, Spigot, CraftBukkit, and Folia
Mod jars:Fabric, Forge, and NeoForge
Platform difference: exact vanilla-slot /iris replace is Paper-family only; Spigot still supports managed iris:* worlds.

var(--v-background-base, #fff) uses the Wiki.js theme value when present and falls back safely. For stronger dark-mode control, use the class-based version below.

Layout 6 — Command center {#layout-6}

Best for: a compact command overview. Show common tasks here, then link to the exhaustive reference instead of copying the entire command tree.

COMMAND PALETTE

Common jobs

Create a world Pregenerate terrain Open Studio
Create a managed Bukkit world
/iris create name=demo type=overworld seed=1337
The world name must be absent. Omitting the type uses the configured default. Start Bukkit pregeneration
/iris pregen start radius=5000 world=demo center=0,0
Radius is measured in blocks. Monitor with /iris pregen status. Open a temporary authoring world
/iris studio open overworld seed=1337
Studio reads the live pack and is discarded when closed.

Open the full command and permission reference →

Layout 7 — Split feature panel {#layout-7}

Best for: explaining one important concept with a visual on one side and the next action on the other.

Dimension
Regions
Biomes
Generators
Structures
MENTAL MODEL

Start with the dimension

A dimension is the root configuration for one world type. It defines the height range, generation modes, regions, and native content that Iris imports.

  • One dimension file describes one world's rules.
  • Regions divide the map; biomes fill regions.
  • Generators produce the terrain height.
Understand dimensions →

Because the two columns use auto-fit, the explanation stacks beneath the visual when each side can no longer keep its minimum width.

Layout 8 — Vertical timeline {#layout-8}

Best for: release flows, world lifecycle, migrations, or “what happens next” explanations.

AUTHOR

Build and validate the live pack

Use Studio, schemas, and pack validation before a production world exists.

CREATE

Snapshot the pack into the world

Iris copies the selected pack into <world>/iris/pack.

GENERATE

Run from the world snapshot

New chunks use the copied pack, seed, and current engine artifact.

CHANGE

Use the pack-management workflow

Editing the original live pack does not alter an existing production snapshot.

The line is a border on each item, and the marker is absolutely positioned relative to that item. The final item hides its continuing line.

Layout 9 — Platform comparison cards {#layout-9}

Best for: helping the reader select one of a few mutually exclusive options. Put the recommendation in the heading instead of hiding it below a large table.

REFERENCE TARGET

Paper family

Paper, Purpur, Leaf, or Canvas using the plugin jar.

  • Full managed world workflow
  • Exact vanilla-slot replacement
  • Broad Bukkit integrations
Install the plugin jar REGION SCHEDULER

Folia

The same plugin jar with region-safe scheduling.

  • Live managed world creation
  • Folia-aware scheduling
  • Platform-specific lifecycle notes
Review differences NATIVE MOD LOADERS

Fabric / Forge / NeoForge

Choose the jar built for the server's exact loader.

  • Same core generation engine
  • Optional client HUD
  • Brigadier command forms
Choose a mod jar

display: flex; flex-direction: column plus margin-top: auto keeps the action buttons aligned even when descriptions have different lengths.

Layout 10 — Operations checklist {#layout-10}

Best for: deployment gates, maintenance windows, destructive procedures, and runbooks. The visual hierarchy separates readiness from the dangerous action.

Pre-change gate Complete every check before replacing or deleting a managed world.
Back up
World folder, Iris settings, and the exact pack snapshot
Record identity
Platform artifact, Iris build, pack bytes, and seed
Move players
Evacuate the target world before lifecycle changes
Plan rollback
Know the restore point and exact validation command
Destructive boundary: /iris remove <world> delete=true deletes the managed world by default. Treat the backup as part of the command.

The checkboxes are disabled on purpose: this is a readable runbook, not a persistent task application. Use plain list markers if your sanitizer removes form controls.

CSS building blocks {#css-building-blocks}

These small declarations account for most of the layouts above.

Responsive card grid

display: grid;
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
gap: 1rem;

auto-fit fills the row; minmax() prevents unreadably narrow cards; 1fr shares remaining space.

Fluid spacing and type

padding: clamp(1.25rem, 4vw, 3rem);
font-size: clamp(1.8rem, 6vw, 4rem);

The first value is the minimum, the middle value scales with the viewport, and the final value is the maximum.

Theme-tolerant neutral card

color: inherit;
background: rgba(127, 127, 127, 0.07);
border: 1px solid rgba(127, 127, 127, 0.26);
border-radius: 14px;

Mid-gray with low opacity adapts to both light and dark backgrounds. Do not use faint gray text for essential information; opacity also reduces contrast.

Equal-height action cards

display: flex;
flex-direction: column;
height: 100%;

Then give the final action margin-top: auto. This pins it to the bottom.

Horizontally scrollable code

min-width: 0;
overflow-x: auto;
white-space: pre;

min-width: 0 matters when the code block is inside a CSS grid or flex item.

Accessible focus and motion

Inline styles cannot express pseudo-classes or user preferences. Put these in the administrator stylesheet when using custom interactive cards:

.volmit-gallery a:focus-visible {
  outline: 3px solid #52d7c2;
  outline-offset: 3px;
}

@media (prefers-reduced-motion: no-preference) {
  .volmit-gallery .interactive-card {
    transition: transform 160ms ease, box-shadow 160ms ease;
  }

  .volmit-gallery .interactive-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 12px 28px rgba(0, 0, 0, 0.16);
  }
}

Hover is enhancement only. Never hide content or the only action until hover.

Class-based stylesheet {#class-based-stylesheet}

For a reusable production design, an administrator can place the following scoped CSS in Administration → Theme → CSS Override. The .volmit-gallery prefix limits collisions, but the setting is still global to the wiki.

.volmit-gallery {
  --vg-accent: #7658d6;
  --vg-accent-2: #0b8f82;
  --vg-surface: rgba(127, 127, 127, 0.07);
  --vg-border: rgba(127, 127, 127, 0.26);
  --vg-radius: 16px;
}

.volmit-gallery .vg-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 1rem;
}

.volmit-gallery .vg-card {
  display: flex;
  flex-direction: column;
  min-width: 0;
  padding: 1.25rem;
  color: inherit;
  background: var(--vg-surface);
  border: 1px solid var(--vg-border);
  border-radius: var(--vg-radius);
}

.volmit-gallery a.vg-card {
  text-decoration: none;
}

.volmit-gallery .vg-card > :last-child {
  margin-bottom: 0;
}

.volmit-gallery .vg-action {
  display: inline-block;
  align-self: flex-start;
  margin-top: auto;
  padding: 0.7rem 1rem;
  color: #fff;
  font-weight: 700;
  text-decoration: none;
  background: var(--vg-accent);
  border-radius: 9px;
}

.volmit-gallery .vg-command-layout {
  display: grid;
  grid-template-columns: minmax(180px, 0.7fr) minmax(260px, 1.3fr);
}

.volmit-gallery a:focus-visible {
  outline: 3px solid #52d7c2;
  outline-offset: 3px;
}

@media (max-width: 720px) {
  .volmit-gallery .vg-command-layout {
    grid-template-columns: 1fr;
  }
}

@media (prefers-reduced-motion: no-preference) {
  .volmit-gallery .interactive-card {
    transition: transform 160ms ease, box-shadow 160ms ease;
  }

  .volmit-gallery .interactive-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 12px 28px rgba(0, 0, 0, 0.16);
  }
}

@media (prefers-color-scheme: dark) {
  .volmit-gallery {
    --vg-surface: rgba(255, 255, 255, 0.06);
    --vg-border: rgba(255, 255, 255, 0.16);
  }
}

Example class-only markup:

<section class="volmit-gallery">
  <div class="vg-grid">
    <article class="vg-card">
      <h3>Author a pack</h3>
      <p>Learn the content model, then build a minimal dimension.</p>
      <a class="vg-action" href="/iris/05-concepts-pack-layout">Start authoring</a>
    </article>
  </div>
</section>

CSS Override affects every page and must be managed outside this Git-backed Markdown repository. Keep the page understandable if the custom stylesheet is unavailable, and record any required global CSS in the repository. {.is-warning}

Composition recipes {#composition-recipes}

Page type Recommended combination
Plugin landing page Layout 1 hero → Layout 2 paths → Layout 3 features → ordinary support links
Installation guide Short intro → Layout 5 requirements → Layout 4 steps → Wiki.js warnings
Command reference Ordinary table of contents → Layout 6 common jobs → searchable Markdown tables
Concept guide Layout 7 split explanation → normal prose and examples → Layout 8 lifecycle
Platform chooser Layout 9 cards → detailed comparison table → installation steps
Destructive runbook Layout 10 gate → exact command → verification → rollback
{.dense}

Do not use a hero, bento grid, dashboard, timeline, and comparison cards merely because they exist. A strong page normally needs one primary visual pattern and one supporting pattern; the rest should be headings, prose, tables, and code.

Before publishing {#before-publishing}

  • Test the page at phone, tablet, and desktop widths.
  • Tab through every link and make sure focus is visible.
  • Confirm text remains readable in light and dark Wiki.js themes.
  • Keep a real heading structure; cards do not replace document navigation.
  • Use verified plugin data and exact command syntax.
  • Prefer a standard Wiki.js alert for critical safety information.
  • Check that the page still makes sense if custom CSS does not load.
  • Link to the full reference instead of duplicating large tables. {.grid-list}

For syntax, renderer modules, Wiki.js attributes, diagrams, tabs, images, and other non-layout features, use Wiki.js Page Examples.