<template> <div class="networks"> <input :placeholder="`Find ${siteCount} sites in ${networks.length} networks`" class="search" > <div class="network-tiles"> <Network v-for="network in networks" :key="`network-tile-${network.slug}`" :network="network" /> </div> </div> </template> <script> import Network from '../tile/network.vue'; async function mounted() { this.networks = await this.$store.dispatch('fetchNetworks'); this.pageTitle = 'Networks'; } function siteCount() { return this.networks.map(network => network.sites).flat().length; } export default { components: { Network, }, data() { return { networks: [], pageTitle: null, }; }, computed: { siteCount, }, mounted, }; </script> <style lang="scss" scoped> @import 'theme'; .networks { padding: 0 1rem; } .search { width: 100%; max-width: 40rem; box-sizing: border-box; padding: 1rem; border: none; box-sizing: border-box; box-shadow: 0 0 3px $shadow-weak; margin: 1rem 0; font-size: 1rem; outline: none; &:focus { box-shadow: 0 0 3px $primary; } } .network-tiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr)); grid-gap: 1rem; padding: 1rem 0; } @media(max-width: $breakpoint) { .networks { grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr)); } } </style>