pages/_section/_slug/lookbook.vue (56 lines of code) (raw):
<script>
const NAME_MAPPING = {
alert: 'alert',
avatar: 'avatar',
badge: 'badge',
banner: 'banner',
button: 'button',
'broadcast-message': 'broadcast_banner',
card: 'card',
'progress-bar': 'progress',
spinner: 'spinner',
};
export default {
props: {
page: {
type: Object,
required: true,
},
},
computed: {
componentName() {
return NAME_MAPPING[this.page.slug];
},
inspectUrl() {
return `${this.$lookbookUrl}/inspect/pajamas/${this.componentName}`;
},
previewName() {
const capitalizedComponentName = this.componentName
.split('_')
.map((word) => word.charAt(0).toUpperCase() + word.slice(1))
.join('');
return `Pajamas::${capitalizedComponentName}ComponentPreview`;
},
},
async mounted() {
await this.$nextTick();
window.Lookbook.initEmbeds();
},
};
</script>
<template>
<div class="gl-pb-4 gl-pt-0">
<div v-if="componentName">
<lookbook-embed :app="$lookbookUrl" :preview="previewName" panels="params,notes,*" />
<p class="gl-pt-4">
<b>
Find <a :href="inspectUrl">more scenarios</a> of the {{ componentName }} component in our
Lookbook.
</b>
</p>
</div>
<div v-else>
<i>The {{ page.slug }} component is not available as ViewComponent.</i>
</div>
</div>
</template>