From 77b96ccbd752441aa9dba8f6ebf590908e6eae12 Mon Sep 17 00:00:00 2001 From: zernonia Date: Mon, 4 Sep 2023 22:36:40 +0800 Subject: [PATCH] feat: improve component preview components --- apps/www/.vitepress/config.mts | 4 ++ .../theme/components/ComponentPreview.vue | 9 ++- .../www/.vitepress/theme/plugins/previewer.ts | 39 ++++++++++ apps/www/.vitepress/theme/plugins/utils.ts | 71 +++++++++++++++++++ apps/www/package.json | 1 + apps/www/src/content/docs/components-json.md | 6 +- .../src/content/docs/components/accordion.md | 6 +- .../content/docs/components/alert-dialog.md | 17 ++--- apps/www/src/content/docs/components/alert.md | 6 +- .../content/docs/components/aspect-ratio.md | 8 +-- .../www/src/content/docs/components/avatar.md | 7 +- apps/www/src/content/docs/components/badge.md | 7 +- .../www/src/content/docs/components/button.md | 8 +-- .../src/content/docs/components/calendar.md | 6 +- apps/www/src/content/docs/components/card.md | 7 +- .../src/content/docs/components/checkbox.md | 7 +- .../content/docs/components/collapsible.md | 6 +- .../content/docs/components/context-menu.md | 6 +- .../content/docs/components/date-picker.md | 18 +---- .../www/src/content/docs/components/dialog.md | 7 +- .../src/content/docs/components/hover-card.md | 7 +- apps/www/src/content/docs/components/input.md | 6 +- apps/www/src/content/docs/components/label.md | 7 +- .../src/content/docs/components/menubar.md | 6 +- .../docs/components/navigation-menu.md | 7 +- .../src/content/docs/components/popover.md | 6 +- .../src/content/docs/components/progress.md | 6 +- .../content/docs/components/radio-group.md | 6 +- .../content/docs/components/scroll-area.md | 6 +- .../www/src/content/docs/components/select.md | 6 +- .../src/content/docs/components/separator.md | 6 +- apps/www/src/content/docs/components/sheet.md | 7 +- .../src/content/docs/components/skeleton.md | 7 +- .../www/src/content/docs/components/slider.md | 6 +- .../www/src/content/docs/components/switch.md | 7 +- apps/www/src/content/docs/components/table.md | 7 +- apps/www/src/content/docs/components/tabs.md | 7 +- .../src/content/docs/components/textarea.md | 7 +- .../www/src/content/docs/components/toggle.md | 6 +- .../src/content/docs/components/tooltip.md | 7 +- .../registry/default/examples/AvatarDemo.vue | 2 +- .../default/examples/CardWithForm.vue | 67 +++++++++++++++++ .../default/ui/accordion/Accordion.vue | 2 +- package.json | 1 + pnpm-lock.yaml | 3 + 45 files changed, 238 insertions(+), 213 deletions(-) create mode 100644 apps/www/.vitepress/theme/plugins/previewer.ts create mode 100644 apps/www/.vitepress/theme/plugins/utils.ts create mode 100644 apps/www/src/lib/registry/default/examples/CardWithForm.vue diff --git a/apps/www/.vitepress/config.mts b/apps/www/.vitepress/config.mts index 78e6b8e1..b4920fbc 100644 --- a/apps/www/.vitepress/config.mts +++ b/apps/www/.vitepress/config.mts @@ -1,6 +1,7 @@ import path from 'node:path' import { defineConfig } from 'vitepress' import Icons from 'unplugin-icons/vite' +import ComponentPreviewPlugin from './theme/plugins/previewer' // https://vitepress.dev/reference/site-config export default defineConfig({ @@ -9,6 +10,9 @@ export default defineConfig({ srcDir: path.resolve(__dirname, '../src/content'), markdown: { theme: 'css-variables', + config(md) { + md.use(ComponentPreviewPlugin) + }, }, vite: { plugins: [ diff --git a/apps/www/.vitepress/theme/components/ComponentPreview.vue b/apps/www/.vitepress/theme/components/ComponentPreview.vue index b27318d4..4e16598a 100644 --- a/apps/www/.vitepress/theme/components/ComponentPreview.vue +++ b/apps/www/.vitepress/theme/components/ComponentPreview.vue @@ -7,6 +7,8 @@ import { cn } from '@/lib/utils' const props = withDefaults(defineProps<{ name: string align?: 'center' | 'start' | 'end' + sfcTsCode?: string + sfcTsHtml?: string }>(), { align: 'center' }) const Component = defineAsyncComponent({ @@ -17,7 +19,9 @@ const Component = defineAsyncComponent({