storipress/karbon

View on GitHub
packages/playground/pages/index.vue

Summary

Maintainability
Test Coverage
<script lang="ts" setup>
import invariant from 'tiny-invariant'

const type = useField('custom-field-for', FieldType.Text)
const site = useSite()
const multipleValues = useField('multiple-value', { type: FieldType.Text, all: true })

const { articles: alphabetArticles } = useFillArticles(10, [{ key: 'slug', value: 'alphabet' }])
const { articles: lastArticles } = useFillArticles(9)
const { articles: featureArticles } = useFillArticles(10, [{ key: 'slug', value: 'test' }, { type: 'featured' }])

watch(alphabetArticles, (articles) => {
  const slugs = new Set(articles.map((article) => article.slug))
  invariant(slugs.size > 1, 'Articles should have unique slugs')
})
</script>

<template>
  <div>
    <div>Custom field for: {{ type }}</div>
    <div>Multiple value: {{ multipleValues }}</div>
    <div>{{ site }}</div>
    <div class="text-4xl">Front page</div>
    <div>
      <NuxtLink to="/examples/layout">To layout </NuxtLink>
    </div>
    <div>
      <NuxtLink to="/examples/qoo-layout">To qooLayout </NuxtLink>
    </div>
    <div>
      <NuxtLink to="/examples/ssr">To ssr </NuxtLink>
    </div>
    <div>
      <NuxtLink to="/examples/advertising">To advertising </NuxtLink>
    </div>
    <div>
      <NuxtLink to="/examples/advertising-ssr">To advertising SSR </NuxtLink>
    </div>
    <div>
      <NuxtLink to="/examples/fill-article">To fill article</NuxtLink>
    </div>
    <div>
      <NuxtLink to="/examples/search">To search</NuxtLink>
    </div>
    <div>
      <NuxtLink to="/desks">To desks</NuxtLink>
    </div>
    <div>
      <NuxtLink to="/indexes">To indexes</NuxtLink>
    </div>
    <div>
      <NuxtLink to="/collection/1">To collection</NuxtLink>
    </div>
    <div>
      <NuxtLink to="/examples/pagination">To pagination </NuxtLink>
    </div>
    <hr style="margin: 10px" />
    <div class="flex w-screen">
      <div v-for="article in alphabetArticles" :key="article.id" class="border border-black flex-1 overflow-hidden">
        <ArticleLayout :article="article" />
      </div>
    </div>
    <div class="flex w-screen mt-4">
      <div v-for="article in lastArticles" :key="article.id" class="border border-black flex-1 overflow-hidden">
        <ArticleLayout :article="article" />
      </div>
    </div>

    <h2 class="text-2xl mt-4">Feature Articles</h2>
    <div class="flex w-screen mt-4">
      <div v-for="article in featureArticles" :key="article.id" class="border border-black flex-1 overflow-hidden">
        <ArticleLayout :article="article" />
      </div>
    </div>
  </div>
</template>