docs(ComponentExample): add

This commit is contained in:
Benjamin Canac
2024-07-11 17:36:50 +02:00
parent 57e62f36c4
commit 96e18ef233
10 changed files with 68 additions and 44 deletions

View File

@@ -101,7 +101,7 @@ const code = computed(() => {
return code
})
const { data: ast } = await useAsyncData(`${name}-code-${JSON.stringify({ props: componentProps, slots: props.slots })}`, async () => {
const { data: ast } = await useAsyncData(`component-code-${name}-${JSON.stringify({ props: componentProps, slots: props.slots })}`, async () => {
let formatted = ''
try {
formatted = await $prettier.format(code.value)

View File

@@ -0,0 +1,26 @@
<script setup lang="ts">
import { camelCase } from 'scule'
const props = defineProps<{
name: string
props?: { [key: string]: any }
}>()
const camelName = camelCase(props.name)
const data = await fetchComponentExample(camelName)
const componentProps = reactive({ ...(props.props || {}) })
const { data: ast } = await useAsyncData(`component-example-${camelName}`, () => parseMarkdown(`\`\`\`vue\n${data?.code ?? ''}\n\`\`\``))
</script>
<template>
<div>
<div class="flex border border-b-0 border-gray-300 dark:border-gray-700 relative p-4 rounded-t-md">
<component :is="camelName" v-bind="componentProps" />
</div>
</div>
<MDCRenderer v-if="ast" :body="ast.body" :data="ast.data" class="[&>div>pre]:!rounded-t-none [&>div]:!mt-0" />
</template>

View File

@@ -33,7 +33,7 @@ const component = computed(() => {
return stripCompoundVariants(component)
})
const { data: ast } = await useAsyncData(`${name}-theme`, () => parseMarkdown(`
const { data: ast } = await useAsyncData(`component-theme-${name}`, () => parseMarkdown(`
\`\`\`yml
${json5.stringify(component.value, null, 2).replace(/,([ |\t\n]+[}|\])])/g, '$1')}
\`\`\`\

View File

@@ -14,7 +14,7 @@ const type = computed(() => {
return props.type
})
const { data: ast } = await useAsyncData(`hightlight-inline-code-` + props.type, () => parseMarkdown(`\`${type.value}\`{lang="ts-type"}`))
const { data: ast } = await useAsyncData(`hightlight-inline-code-${props.type}`, () => parseMarkdown(`\`${type.value}\`{lang="ts-type"}`))
</script>
<template>