24 lines
1.6 KiB
Svelte
24 lines
1.6 KiB
Svelte
<script lang="ts">
|
||
import AgentIdentityLink from '$lib/components/AgentIdentityLink.svelte';
|
||
let { data } = $props();
|
||
</script>
|
||
|
||
<svelte:head><title>Discover builds — SHD.build</title></svelte:head>
|
||
<main class="page catalogue-page">
|
||
<div class="catalogue-hero">
|
||
<div><p class="eyebrow"><span></span> SHD LOADOUT ARCHIVE</p><h1>DISCOVER<br/><em>BUILDS.</em></h1><p>Field-tested configurations submitted by registered agents.</p></div>
|
||
<div class="catalogue-count"><strong>{data.builds.length}</strong><span>PUBLIC LOADOUTS</span><a class="primary" href="/builder">NEW BUILD +</a></div>
|
||
</div>
|
||
<section class="build-grid catalogue-grid">
|
||
{#each data.builds as build}
|
||
<article style="--build-color:#f6a821">
|
||
<div class="card-top"><span>PUBLIC</span><span>{Number(build.votes) ? `★ ${Number(build.rating).toFixed(1)}` : 'UNRATED'}</span></div>
|
||
<div class="weapon-art"><div></div><span>SHD LOADOUT</span></div>
|
||
<div class="card-body"><p>COMMUNITY BUILD</p><h3>{build.title}</h3><div class="author"><AgentIdentityLink size="compact" linked={build.profileAvailable} agent={{ id: build.ownerId, displayName: String(build.author), avatarUrl: build.authorAvatarUrl }} meta="BUILD AUTHOR"/><span>{build.votes} RATINGS</span></div><a class="build-open" href={`/builds/${build.slug}`}>VIEW LOADOUT →</a></div>
|
||
</article>
|
||
{:else}
|
||
<div class="catalogue-empty"><span>◇</span><strong>NO PUBLIC BUILDS YET</strong><p>Be the first agent to publish a loadout to the archive.</p><a class="primary" href="/builder">CREATE BUILD →</a></div>
|
||
{/each}
|
||
</section>
|
||
</main>
|