components/collection.vue (48 lines of code) (raw):
<script>
import PageContainer from './page_container.vue';
import PageHeader from './page_header.vue';
export default {
components: {
PageContainer,
PageHeader,
},
props: {
heading: {
type: String,
required: true,
default: '',
},
description: {
type: String,
required: false,
default: '',
},
items: {
type: Array,
required: true,
default: () => [],
},
},
};
</script>
<template>
<page-container class="gl-py-7">
<page-header :heading="heading" :description="description" />
<ul class="gl-m-0 gl-grid gl-list-none gl-gap-5 !gl-p-0 lg:gl-grid-cols-3">
<li v-for="item in items" :key="item.path" class="gl-flex">
<nuxt-link
class="gl-flex gl-w-full gl-flex-col gl-gap-3 gl-rounded-base gl-border-1 gl-border-solid gl-border-section gl-bg-section gl-p-5 !gl-text-default !gl-no-underline hover:gl-border-strong"
:to="item.path"
>
<span class="gl-block gl-font-bold gl-text-strong">{{ item.name }}</span>
<span
v-if="item.summary || item.description"
class="gl-mb-0 gl-block gl-text-base gl-leading-20"
>
{{ item.summary || item.description }}
</span>
</nuxt-link>
</li>
</ul>
</page-container>
</template>