diff --git a/cli/commands/init.mjs b/cli/commands/init.mjs index 22590ca0..3dfd9504 100644 --- a/cli/commands/init.mjs +++ b/cli/commands/init.mjs @@ -2,7 +2,7 @@ import { existsSync, promises as fsp } from 'node:fs' import { resolve } from 'pathe' import { defineCommand } from 'citty' import { consola } from 'consola' -import { camelCase, snakeCase } from 'scule' +import { camelCase, kebabCase } from 'scule' import templates from '../utils/templates.mjs' export default defineCommand({ @@ -42,7 +42,7 @@ export default defineCommand({ const themePath = resolve(path, 'src/theme/index.ts') const theme = await fsp.readFile(themePath, 'utf-8') - const contents = `export { default as ${camelCase(name)} } from './${snakeCase(name)}'` + const contents = `export { default as ${camelCase(name)} } from './${kebabCase(name)}'` if (!theme.includes(contents)) { await fsp.writeFile(themePath, theme.trim() + '\n' + contents + '\n') } diff --git a/cli/utils/templates.mjs b/cli/utils/templates.mjs index e6a18f7c..a0848795 100644 --- a/cli/utils/templates.mjs +++ b/cli/utils/templates.mjs @@ -1,9 +1,25 @@ -import { splitByCase, upperFirst, camelCase, snakeCase } from 'scule' +import { splitByCase, upperFirst, camelCase, kebabCase } from 'scule' + +const playground = ({ name }) => { + const upperName = splitByCase(name).map(p => upperFirst(p)).join('') + const kebabName = kebabCase(name) + + return { + filename: `playground/pages/${kebabName}.vue`, + contents: ` + + ` + } +} const component = ({ name }) => { - const upperName = splitByCase(name).map(p => upperFirst(p)) + const upperName = splitByCase(name).map(p => upperFirst(p)).join('') const camelName = camelCase(name) - const snakeName = snakeCase(name) + const kebabName = kebabCase(name) return { filename: `src/runtime/components/${upperName}.vue`, @@ -12,7 +28,7 @@ const component = ({ name }) => { import { tv, type VariantProps } from 'tailwind-variants' import type { AppConfig } from '@nuxt/schema' import _appConfig from '#build/app.config' -import theme from '#build/ui/${snakeName}' +import theme from '#build/ui/${kebabName}' const appConfig = _appConfig as AppConfig & { ui: { ${camelName}: Partial } } @@ -46,10 +62,10 @@ const ui = computed(() => tv({ extend: ${camelName}, slots: props.ui })()) } const theme = ({ name }) => { - const snakeName = snakeCase(name) + const kebabName = kebabCase(name) return { - filename: `src/theme/${snakeName}.ts`, + filename: `src/theme/${kebabName}.ts`, contents: ` export default { slots: { @@ -66,24 +82,8 @@ export default { } } -const page = ({ name }) => { - const upperName = splitByCase(name).map(p => upperFirst(p)) - const snakeName = snakeCase(name) - - return { - filename: `playground/pages/${snakeName}.vue`, - contents: ` - - ` - } -} - const test = ({ name }) => { - const upperName = splitByCase(name).map(p => upperFirst(p)) + const upperName = splitByCase(name).map(p => upperFirst(p)).join('') return { filename: `test/components/${upperName}.spec.ts`, @@ -107,8 +107,8 @@ describe('${upperName}', () => { } export default { + playground, component, theme, - page, test }