You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
svelte/site/src/routes/examples/index.svelte

115 lines
1.8 KiB

<script context="module">
export async function preload() {
const groups = await this.fetch(`examples.json`).then(r => r.json());
return {
groups
};
}
</script>
<script>
export let groups;
</script>
<style>
.content {
max-width: 120rem;
padding: 0 var(--side-nav);
margin: 0 auto;
}
h1 {
margin: 4rem 0 4rem -0.05em;
font-size: 4rem;
}
h2 {
margin: 0 0 1em 0;
font-size: 18px;
border-bottom: 1px solid #eee;
text-transform: uppercase;
padding: 0 0 0.5em 0;
}
section {
margin: 0 0 2em 0;
}
.example {
position: relative;
display: flex;
align-items: center;
padding: 0 0 0 85px;
min-height: 50px;
font-weight: 300;
}
.grid {
grid-template-columns: repeat(1, 1fr);
grid-gap: 0.5em;
}
@media (min-width: 720px) {
.grid {
grid-template-columns: repeat(2, 1fr);
}
}
@media (min-width: 1080px) {
.grid {
grid-template-columns: repeat(3, 1fr);
}
}
.thumbnail {
position: absolute;
background: white 50% 50% no-repeat;
background-size: contain;
width: 75px;
height: 50px;
left: 0;
top: 0;
border: 1px solid #ccc;
border-radius: 2px;
box-shadow: 1px 1px 3px rgba(0,0,0,0.1);
}
/* .thumbnail::before {
content: "";
width: 1px;
margin-left: -1px;
float: left;
height: 0;
padding-top: 100%;
}
.thumbnail::after {
content: "";
display: table;
clear: both;
} */
img {
background-color: #eee;
}
</style>
<div class="content">
<h1>Examples</h1>
{#each groups as group}
<section>
<h2>{group.title}</h2>
<div class="grid">
{#each group.examples as example}
<a class="example" href="repl?example={example.slug}">
<div class="thumbnail" style="background-image: url(examples/thumbnails/{example.slug}.png)"></div>
<span>{example.title}</span>
</a>
{/each}
</div>
</section>
{/each}
</div>