123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- <script setup lang="ts">
- import { computed } from 'vue';
- import PreviewGroup from './preview-group.vue';
- interface Props {
- files?: string;
- }
- const props = withDefaults(defineProps<Props>(), { files: '() => []' });
- const parsedFiles = computed(() => {
- try {
- return JSON.parse(decodeURIComponent(props.files ?? ''));
- } catch {
- return [];
- }
- });
- </script>
- <template>
- <div class="border-border shadow-float relative rounded-xl border">
- <div
- class="not-prose relative w-full overflow-x-auto rounded-t-lg px-4 py-6"
- >
- <div class="flex w-full max-w-[700px] px-2">
- <ClientOnly>
- <slot v-if="parsedFiles.length > 0"></slot>
- <div v-else class="text-destructive text-sm">
- <span class="bg-destructive text-foreground rounded-sm px-1 py-1">
- ERROR:
- </span>
- The preview directory does not exist. Please check the 'dir'
- parameter.
- </div>
- </ClientOnly>
- </div>
- </div>
- <PreviewGroup v-if="parsedFiles.length > 0" :files="parsedFiles">
- <template v-for="file in parsedFiles" #[file]>
- <slot :name="file"></slot>
- </template>
- </PreviewGroup>
- </div>
- </template>
|