diff --git a/package.json b/package.json index aa6019c..02c4263 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "test:types": "vue-tsc --noEmit && cd playground && vue-tsc --noEmit" }, "dependencies": { - "@nuxt/kit": "^3.15.0", + "@nuxt/kit": "^3.15.2", "@vue/compiler-sfc": "^3.3.0", "change-case": "^5.4.4", "defu": "^6.1.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d198288..b8723bf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,8 +9,8 @@ importers: .: dependencies: '@nuxt/kit': - specifier: ^3.15.0 - version: 3.15.0(magicast@0.3.5)(rollup@4.29.1) + specifier: ^3.15.2 + version: 3.15.2(magicast@0.3.5)(rollup@4.29.1) '@vue/compiler-sfc': specifier: ^3.3.0 version: 3.5.13 @@ -41,7 +41,7 @@ importers: version: 0.7.5(@vue/compiler-sfc@3.5.13)(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2) '@nuxt/module-builder': specifier: ^0.8.4 - version: 0.8.4(@nuxt/kit@3.15.0(magicast@0.3.5)(rollup@4.29.1))(nuxi@3.17.2)(typescript@5.7.2)(vue-tsc@2.2.0(typescript@5.7.2)) + version: 0.8.4(@nuxt/kit@3.15.2(magicast@0.3.5)(rollup@4.29.1))(nuxi@3.17.2)(typescript@5.7.2)(vue-tsc@2.2.0(typescript@5.7.2)) '@nuxt/schema': specifier: ^3.15.2 version: 3.15.2 @@ -886,10 +886,6 @@ packages: '@nuxt/icon@1.10.3': resolution: {integrity: sha512-ESIiSIpETLLcn5p4U8S0F3AQ5Mox0MoHAVKczamY4STh3Dwrc8labLhtN6lunwpQEv6UGuiutdvfkJ88zu44Ew==} - '@nuxt/kit@3.15.0': - resolution: {integrity: sha512-Q7k11wDTLIbBgoTfRYNrciK7PvjKklewrKd5PRMJCpn9Lmuqkq59HErNfJXFrBKHsE3Ld0DB6WUtpPGOvWJZoQ==} - engines: {node: '>=18.20.5'} - '@nuxt/kit@3.15.2': resolution: {integrity: sha512-nxiPJVz2fICcyBKlN5pL1IgZVejyArulREsS5HvAk07hijlYuZ5toRM8soLt51VQNpFd/PedL+Z1AlYu/bQCYQ==} engines: {node: '>=18.0.0'} @@ -901,10 +897,6 @@ packages: '@nuxt/kit': ^3.13.1 nuxi: ^3.13.1 - '@nuxt/schema@3.15.0': - resolution: {integrity: sha512-sAgLgSOj/SZxUmlJ/Q3TLRwIAqmiiZ5gCBrT+eq9CowIj7bgxX92pT720pDLEDs4wlXiTTsqC8nyqXQis8pPyA==} - engines: {node: ^14.18.0 || >=16.10.0} - '@nuxt/schema@3.15.2': resolution: {integrity: sha512-cTHGbLTbrQ83B+7Mh0ggc5MzIp74o8KciA0boCiBJyK5uImH9QQNK6VgfwRWcTD5sj3WNKiIB1luOMom3LHgVw==} engines: {node: ^14.18.0 || >=16.10.0} @@ -2867,10 +2859,6 @@ packages: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} - ignore@7.0.0: - resolution: {integrity: sha512-lcX8PNQygAa22u/0BysEY8VhaFRzlOkvdlKczDPnJvrkJD1EuqzEky5VYYKM2iySIuaVIDv9N190DfSreSLw2A==} - engines: {node: '>= 4'} - ignore@7.0.3: resolution: {integrity: sha512-bAH5jbK/F3T3Jls4I0SO1hmPR0dKU0a7+SY6n1yzRtG54FLO8d6w/nxLFX2Nb7dBu6cCWXPaAME6cYqFUMmuCA==} engines: {node: '>= 4'} @@ -5651,7 +5639,7 @@ snapshots: '@nuxt/devtools-kit@1.7.0(magicast@0.3.5)(rollup@4.29.1)(vite@5.4.11(@types/node@22.10.5)(lightningcss@1.28.2)(terser@5.37.0))': dependencies: - '@nuxt/kit': 3.15.0(magicast@0.3.5)(rollup@4.29.1) + '@nuxt/kit': 3.15.2(magicast@0.3.5)(rollup@4.29.1) '@nuxt/schema': 3.15.2 execa: 7.2.0 vite: 5.4.11(@types/node@22.10.5)(lightningcss@1.28.2)(terser@5.37.0) @@ -5678,7 +5666,7 @@ snapshots: '@antfu/utils': 0.7.10 '@nuxt/devtools-kit': 1.7.0(magicast@0.3.5)(rollup@4.29.1)(vite@5.4.11(@types/node@22.10.5)(lightningcss@1.28.2)(terser@5.37.0)) '@nuxt/devtools-wizard': 1.7.0 - '@nuxt/kit': 3.15.0(magicast@0.3.5)(rollup@4.29.1) + '@nuxt/kit': 3.15.2(magicast@0.3.5)(rollup@4.29.1) '@vue/devtools-core': 7.6.8(vite@5.4.11(@types/node@22.10.5)(lightningcss@1.28.2)(terser@5.37.0))(vue@3.5.13(typescript@5.7.2)) '@vue/devtools-kit': 7.6.8 birpc: 0.2.19 @@ -5709,7 +5697,7 @@ snapshots: tinyglobby: 0.2.10 unimport: 3.14.5(rollup@4.29.1) vite: 5.4.11(@types/node@22.10.5)(lightningcss@1.28.2)(terser@5.37.0) - vite-plugin-inspect: 0.8.9(@nuxt/kit@3.15.0(magicast@0.3.5)(rollup@4.29.1))(rollup@4.29.1)(vite@5.4.11(@types/node@22.10.5)(lightningcss@1.28.2)(terser@5.37.0)) + vite-plugin-inspect: 0.8.9(@nuxt/kit@3.15.2(magicast@0.3.5)(rollup@4.29.1))(rollup@4.29.1)(vite@5.4.11(@types/node@22.10.5)(lightningcss@1.28.2)(terser@5.37.0)) vite-plugin-vue-inspector: 5.3.1(vite@5.4.11(@types/node@22.10.5)(lightningcss@1.28.2)(terser@5.37.0)) which: 3.0.1 ws: 8.18.0 @@ -5760,7 +5748,7 @@ snapshots: '@nuxt/fonts@0.10.3(db0@0.2.1)(ioredis@5.4.2)(magicast@0.3.5)(rollup@4.29.1)(vite@5.4.11(@types/node@22.10.5)(lightningcss@1.28.2)(terser@5.37.0))': dependencies: '@nuxt/devtools-kit': 1.7.0(magicast@0.3.5)(rollup@4.29.1)(vite@5.4.11(@types/node@22.10.5)(lightningcss@1.28.2)(terser@5.37.0)) - '@nuxt/kit': 3.15.0(magicast@0.3.5)(rollup@4.29.1) + '@nuxt/kit': 3.15.2(magicast@0.3.5)(rollup@4.29.1) chalk: 5.4.1 css-tree: 3.1.0 defu: 6.1.4 @@ -5811,7 +5799,7 @@ snapshots: '@iconify/utils': 2.2.1 '@iconify/vue': 4.3.0(vue@3.5.13(typescript@5.7.2)) '@nuxt/devtools-kit': 1.7.0(magicast@0.3.5)(rollup@4.29.1)(vite@5.4.11(@types/node@22.10.5)(lightningcss@1.28.2)(terser@5.37.0)) - '@nuxt/kit': 3.15.0(magicast@0.3.5)(rollup@4.29.1) + '@nuxt/kit': 3.15.2(magicast@0.3.5)(rollup@4.29.1) consola: 3.3.3 local-pkg: 0.5.1 mlly: 1.7.3 @@ -5827,33 +5815,6 @@ snapshots: - vite - vue - '@nuxt/kit@3.15.0(magicast@0.3.5)(rollup@4.29.1)': - dependencies: - '@nuxt/schema': 3.15.0(magicast@0.3.5)(rollup@4.29.1) - c12: 2.0.1(magicast@0.3.5) - consola: 3.3.3 - defu: 6.1.4 - destr: 2.0.3 - globby: 14.0.2 - ignore: 7.0.0 - jiti: 2.4.2 - klona: 2.0.6 - knitwork: 1.2.0 - mlly: 1.7.3 - ohash: 1.1.4 - pathe: 1.1.2 - pkg-types: 1.3.0 - scule: 1.3.0 - semver: 7.6.3 - ufo: 1.5.4 - unctx: 2.4.1 - unimport: 3.14.5(rollup@4.29.1) - untyped: 1.5.2 - transitivePeerDependencies: - - magicast - - rollup - - supports-color - '@nuxt/kit@3.15.2(magicast@0.3.5)(rollup@4.29.1)': dependencies: '@nuxt/schema': 3.15.2 @@ -5882,9 +5843,9 @@ snapshots: - rollup - supports-color - '@nuxt/module-builder@0.8.4(@nuxt/kit@3.15.0(magicast@0.3.5)(rollup@4.29.1))(nuxi@3.17.2)(typescript@5.7.2)(vue-tsc@2.2.0(typescript@5.7.2))': + '@nuxt/module-builder@0.8.4(@nuxt/kit@3.15.2(magicast@0.3.5)(rollup@4.29.1))(nuxi@3.17.2)(typescript@5.7.2)(vue-tsc@2.2.0(typescript@5.7.2))': dependencies: - '@nuxt/kit': 3.15.0(magicast@0.3.5)(rollup@4.29.1) + '@nuxt/kit': 3.15.2(magicast@0.3.5)(rollup@4.29.1) citty: 0.1.6 consola: 3.3.3 defu: 6.1.4 @@ -5901,26 +5862,6 @@ snapshots: - typescript - vue-tsc - '@nuxt/schema@3.15.0(magicast@0.3.5)(rollup@4.29.1)': - dependencies: - c12: 2.0.1(magicast@0.3.5) - compatx: 0.1.8 - consola: 3.3.3 - defu: 6.1.4 - hookable: 5.5.3 - pathe: 1.1.2 - pkg-types: 1.3.0 - scule: 1.3.0 - std-env: 3.8.0 - ufo: 1.5.4 - uncrypto: 0.1.3 - unimport: 3.14.5(rollup@4.29.1) - untyped: 1.5.2 - transitivePeerDependencies: - - magicast - - rollup - - supports-color - '@nuxt/schema@3.15.2': dependencies: consola: 3.4.0 @@ -6004,7 +5945,7 @@ snapshots: '@nuxt/devtools-kit': 1.7.0(magicast@0.3.5)(rollup@4.29.1)(vite@5.4.11(@types/node@22.10.5)(lightningcss@1.28.2)(terser@5.37.0)) '@nuxt/fonts': 0.10.3(db0@0.2.1)(ioredis@5.4.2)(magicast@0.3.5)(rollup@4.29.1)(vite@5.4.11(@types/node@22.10.5)(lightningcss@1.28.2)(terser@5.37.0)) '@nuxt/icon': 1.10.3(magicast@0.3.5)(rollup@4.29.1)(vite@5.4.11(@types/node@22.10.5)(lightningcss@1.28.2)(terser@5.37.0))(vue@3.5.13(typescript@5.7.2)) - '@nuxt/kit': 3.15.0(magicast@0.3.5)(rollup@4.29.1) + '@nuxt/kit': 3.15.2(magicast@0.3.5)(rollup@4.29.1) '@nuxt/schema': 3.15.2 '@nuxtjs/color-mode': 3.5.2(magicast@0.3.5)(rollup@4.29.1) '@tailwindcss/postcss': 4.0.0-beta.6 @@ -6039,8 +5980,8 @@ snapshots: tinyglobby: 0.2.10 typescript: 5.7.2 unplugin: 1.16.0 - unplugin-auto-import: 0.18.6(@nuxt/kit@3.15.0(magicast@0.3.5)(rollup@4.29.1))(@vueuse/core@12.3.0(typescript@5.7.2))(rollup@4.29.1) - unplugin-vue-components: 0.27.5(@babel/parser@7.26.3)(@nuxt/kit@3.15.0(magicast@0.3.5)(rollup@4.29.1))(rollup@4.29.1)(vue@3.5.13(typescript@5.7.2)) + unplugin-auto-import: 0.18.6(@nuxt/kit@3.15.2(magicast@0.3.5)(rollup@4.29.1))(@vueuse/core@12.3.0(typescript@5.7.2))(rollup@4.29.1) + unplugin-vue-components: 0.27.5(@babel/parser@7.26.3)(@nuxt/kit@3.15.2(magicast@0.3.5)(rollup@4.29.1))(rollup@4.29.1)(vue@3.5.13(typescript@5.7.2)) vaul-vue: 0.2.0(radix-vue@1.9.12(vue@3.5.13(typescript@5.7.2)))(vue@3.5.13(typescript@5.7.2)) transitivePeerDependencies: - '@azure/app-configuration' @@ -6143,7 +6084,7 @@ snapshots: '@nuxtjs/color-mode@3.5.2(magicast@0.3.5)(rollup@4.29.1)': dependencies: - '@nuxt/kit': 3.15.0(magicast@0.3.5)(rollup@4.29.1) + '@nuxt/kit': 3.15.2(magicast@0.3.5)(rollup@4.29.1) pathe: 1.1.2 pkg-types: 1.3.0 semver: 7.6.3 @@ -8381,8 +8322,6 @@ snapshots: ignore@5.3.2: {} - ignore@7.0.0: {} - ignore@7.0.3: {} image-meta@0.2.1: {} @@ -8997,7 +8936,7 @@ snapshots: nuxt-shiki@0.3.0(magicast@0.3.5)(rollup@4.29.1): dependencies: - '@nuxt/kit': 3.15.0(magicast@0.3.5)(rollup@4.29.1) + '@nuxt/kit': 3.15.2(magicast@0.3.5)(rollup@4.29.1) knitwork: 1.2.0 shiki: 1.27.2 unwasm: 0.3.9 @@ -10383,7 +10322,7 @@ snapshots: universalify@2.0.1: {} - unplugin-auto-import@0.18.6(@nuxt/kit@3.15.0(magicast@0.3.5)(rollup@4.29.1))(@vueuse/core@12.3.0(typescript@5.7.2))(rollup@4.29.1): + unplugin-auto-import@0.18.6(@nuxt/kit@3.15.2(magicast@0.3.5)(rollup@4.29.1))(@vueuse/core@12.3.0(typescript@5.7.2))(rollup@4.29.1): dependencies: '@antfu/utils': 0.7.10 '@rollup/pluginutils': 5.1.4(rollup@4.29.1) @@ -10394,12 +10333,12 @@ snapshots: unimport: 3.14.5(rollup@4.29.1) unplugin: 1.16.0 optionalDependencies: - '@nuxt/kit': 3.15.0(magicast@0.3.5)(rollup@4.29.1) + '@nuxt/kit': 3.15.2(magicast@0.3.5)(rollup@4.29.1) '@vueuse/core': 12.3.0(typescript@5.7.2) transitivePeerDependencies: - rollup - unplugin-vue-components@0.27.5(@babel/parser@7.26.3)(@nuxt/kit@3.15.0(magicast@0.3.5)(rollup@4.29.1))(rollup@4.29.1)(vue@3.5.13(typescript@5.7.2)): + unplugin-vue-components@0.27.5(@babel/parser@7.26.3)(@nuxt/kit@3.15.2(magicast@0.3.5)(rollup@4.29.1))(rollup@4.29.1)(vue@3.5.13(typescript@5.7.2)): dependencies: '@antfu/utils': 0.7.10 '@rollup/pluginutils': 5.1.4(rollup@4.29.1) @@ -10414,7 +10353,7 @@ snapshots: vue: 3.5.13(typescript@5.7.2) optionalDependencies: '@babel/parser': 7.26.3 - '@nuxt/kit': 3.15.0(magicast@0.3.5)(rollup@4.29.1) + '@nuxt/kit': 3.15.2(magicast@0.3.5)(rollup@4.29.1) transitivePeerDependencies: - rollup - supports-color @@ -10589,7 +10528,7 @@ snapshots: typescript: 5.7.2 vue-tsc: 2.2.0(typescript@5.7.2) - vite-plugin-inspect@0.8.9(@nuxt/kit@3.15.0(magicast@0.3.5)(rollup@4.29.1))(rollup@4.29.1)(vite@5.4.11(@types/node@22.10.5)(lightningcss@1.28.2)(terser@5.37.0)): + vite-plugin-inspect@0.8.9(@nuxt/kit@3.15.2(magicast@0.3.5)(rollup@4.29.1))(rollup@4.29.1)(vite@5.4.11(@types/node@22.10.5)(lightningcss@1.28.2)(terser@5.37.0)): dependencies: '@antfu/utils': 0.7.10 '@rollup/pluginutils': 5.1.4(rollup@4.29.1) @@ -10602,7 +10541,7 @@ snapshots: sirv: 3.0.0 vite: 5.4.11(@types/node@22.10.5)(lightningcss@1.28.2)(terser@5.37.0) optionalDependencies: - '@nuxt/kit': 3.15.0(magicast@0.3.5)(rollup@4.29.1) + '@nuxt/kit': 3.15.2(magicast@0.3.5)(rollup@4.29.1) transitivePeerDependencies: - rollup - supports-color diff --git a/src/runtime/components/Variant.vue b/src/runtime/components/Variant.vue index 719906b..a1db93b 100644 --- a/src/runtime/components/Variant.vue +++ b/src/runtime/components/Variant.vue @@ -90,9 +90,9 @@ const config = useRuntimeConfig() const variantClasses = config.public.bedtime?.classes?.variant const storySlug = inject('story-slug') -const { getTemplate } = useStory() +const { getVariantTemplate } = useStory() const variantTemplateCode = computed(() => - storySlug ? getTemplate(storySlug, props.title) : null, + storySlug ? getVariantTemplate(storySlug, props.title) : null, ) const showTemplate = ref(props.showTemplate) diff --git a/src/runtime/composables/useStory.ts b/src/runtime/composables/useStory.ts index 13ed6bd..54b245f 100644 --- a/src/runtime/composables/useStory.ts +++ b/src/runtime/composables/useStory.ts @@ -1,4 +1,4 @@ -import type { BedtimeStory, BedtimeStories } from '../../types/module' +import type { BedtimeStory, BedtimeStories, BedtimeVariant } from '../../types/module' import { stories } from '#build/stories.mjs' export function useStory() { @@ -28,13 +28,22 @@ export function useStory() { return Object.keys(story.variants) } + function getVariantTemplate(storyName: string, variantName?: string): string | null { + const story: BedtimeStory = stories[storyName] + if (!story || !story.variants) return null + const variant = Object.values(story.variants).find((variant: BedtimeVariant) => variant.title === variantName) + if (!variant) return null + return variant.template + } + function getTemplate(storyName: string, variantName?: string): string | null { - const story = stories[storyName] + const story: BedtimeStory = stories[storyName] if (!story) return null // If variant name provided and exists, return that - if (variantName && story.variants?.[variantName]) { - return story.variants[variantName].template + if (story.variants && variantName) { + const variant = Object.values(story.variants).find((variant: BedtimeVariant) => variant.title === variantName) + if (variant) return variant.template } // Otherwise return story template @@ -46,6 +55,7 @@ export function useStory() { getStoryNames, getVariantNames, getTemplate, + getVariantTemplate, // Keep stories object for compatibility stories: stories as BedtimeStories, }