Overview page: navigation tiles instead of the demo table
Replaces the leftover scaffold DataTable with a grid of tiles linking to Characters, NPC's, Enemies, Tracker, Art and Storyline. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -124,3 +124,12 @@ table.dataTable {
|
|||||||
.statblock-collapse h3 {
|
.statblock-collapse h3 {
|
||||||
margin-top: 0.75rem;
|
margin-top: 0.75rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* --- Overview tiles ------------------------------------------------------ */
|
||||||
|
.home-tile {
|
||||||
|
transition: border-color 0.12s ease, transform 0.12s ease;
|
||||||
|
}
|
||||||
|
.home-tile:hover {
|
||||||
|
border-color: var(--bs-primary);
|
||||||
|
transform: translateY(-2px);
|
||||||
|
}
|
||||||
|
|||||||
@@ -3,37 +3,31 @@
|
|||||||
{% block title %}Overview · dmtools{% endblock %}
|
{% block title %}Overview · dmtools{% endblock %}
|
||||||
|
|
||||||
{% block body %}
|
{% block body %}
|
||||||
<div class="d-flex justify-content-between align-items-center mb-3">
|
<h1 class="h3 mb-3">Overview</h1>
|
||||||
<h1 class="h3 mb-0">Overview</h1>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<p class="text-body-secondary">
|
{% set tiles = [
|
||||||
Starting point for the Monday-evening campaign tools. The table below is a
|
{ route: 'app_characters', icon: '🧝', label: 'Characters', blurb: 'The player characters' },
|
||||||
placeholder that shows the Bootstrap + DataTables layout wiring works
|
{ route: 'app_npcs', icon: '🧑🌾', label: "NPC's", blurb: 'Villagers and other non-player characters' },
|
||||||
(search, sort, paging).
|
{ route: 'app_enemies', icon: '👹', label: 'Enemies', blurb: 'Monster stat blocks' },
|
||||||
</p>
|
{ route: 'app_tracker', icon: '⚔️', label: 'Tracker', blurb: 'Run encounters and track hit points' },
|
||||||
|
{ route: 'app_art', icon: '🖼️', label: 'Art', blurb: 'Maps, handouts and character pieces' },
|
||||||
|
{ route: 'app_storyline', icon: '📜', label: 'Storyline', blurb: 'Campaign notes and plot threads' },
|
||||||
|
] %}
|
||||||
|
|
||||||
<div class="card shadow-sm">
|
<div class="row row-cols-1 row-cols-sm-2 row-cols-lg-3 g-3">
|
||||||
<div class="card-body">
|
{% for t in tiles %}
|
||||||
<table class="table table-striped table-hover align-middle datatable"
|
<div class="col">
|
||||||
data-datatable-options='{"order": [[0, "asc"]]}'>
|
<a href="{{ path(t.route) }}"
|
||||||
<thead>
|
class="card shadow-sm h-100 text-decoration-none text-body home-tile">
|
||||||
<tr>
|
<div class="card-body d-flex align-items-start gap-3">
|
||||||
<th scope="col">Name</th>
|
<div class="fs-1 lh-1">{{ t.icon }}</div>
|
||||||
<th scope="col">Type</th>
|
<div>
|
||||||
<th scope="col">Location</th>
|
<div class="h5 mb-1">{{ t.label }}</div>
|
||||||
<th scope="col">Notes</th>
|
<div class="text-body-secondary small">{{ t.blurb }}</div>
|
||||||
</tr>
|
</div>
|
||||||
</thead>
|
</div>
|
||||||
<tbody>
|
</a>
|
||||||
<tr><td>Seraphina Vane</td><td>NPC</td><td>Blackreach</td><td>Owes the party a favour</td></tr>
|
</div>
|
||||||
<tr><td>Goblin ambush</td><td>Encounter</td><td>Old Kings Road</td><td>CR 2, 6 goblins</td></tr>
|
{% endfor %}
|
||||||
<tr><td>The Sunken Vault</td><td>Location</td><td>Lake Nydra</td><td>Water-breathing required</td></tr>
|
|
||||||
<tr><td>Rusted Key</td><td>Item</td><td>Party inventory</td><td>Opens the vault antechamber</td></tr>
|
|
||||||
<tr><td>Captain Dorae</td><td>NPC</td><td>Saltmarsh docks</td><td>Will smuggle cargo for coin</td></tr>
|
|
||||||
<tr><td>Owlbear den</td><td>Encounter</td><td>Whisperwood</td><td>CR 3, mother + 2 cubs</td></tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
Reference in New Issue
Block a user