chore: enable tw prefix
This commit is contained in:
parent
f1a2dab738
commit
511ae6a62e
|
|
@ -8,6 +8,7 @@ import type { registryBaseColorSchema } from '@/src/utils/registry/schema'
|
||||||
import { transformCssVars } from '@/src/utils/transformers/transform-css-vars'
|
import { transformCssVars } from '@/src/utils/transformers/transform-css-vars'
|
||||||
import { transformImport } from '@/src/utils/transformers/transform-import'
|
import { transformImport } from '@/src/utils/transformers/transform-import'
|
||||||
import { transformSFC } from '@/src/utils/transformers/transform-sfc'
|
import { transformSFC } from '@/src/utils/transformers/transform-sfc'
|
||||||
|
import { transformTwPrefixes } from '@/src/utils/transformers/transform-tw-prefix'
|
||||||
|
|
||||||
export interface TransformOpts {
|
export interface TransformOpts {
|
||||||
filename: string
|
filename: string
|
||||||
|
|
@ -25,7 +26,7 @@ export type Transformer<Output = SourceFile> = (
|
||||||
const transformers: Transformer[] = [
|
const transformers: Transformer[] = [
|
||||||
transformCssVars,
|
transformCssVars,
|
||||||
transformImport,
|
transformImport,
|
||||||
// transformTwPrefixes,
|
transformTwPrefixes,
|
||||||
]
|
]
|
||||||
|
|
||||||
const project = new Project({
|
const project = new Project({
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,142 @@
|
||||||
|
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
|
||||||
|
|
||||||
|
exports[`transform tailwind prefix 1`] = `
|
||||||
|
"const testVariants = cva(
|
||||||
|
"tw-bg-background hover:tw-bg-muted tw-text-primary-foreground sm:focus:tw-text-accent-foreground",
|
||||||
|
{
|
||||||
|
variants: {
|
||||||
|
variant: {
|
||||||
|
default:
|
||||||
|
"tw-bg-primary tw-text-primary-foreground hover:tw-bg-primary/90",
|
||||||
|
},
|
||||||
|
size: {
|
||||||
|
default: "tw-h-10 tw-px-4 tw-py-2",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
);
|
||||||
|
"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`transform tailwind prefix 2`] = `
|
||||||
|
"<template>
|
||||||
|
<div
|
||||||
|
class="tw-bg-background hover:tw-bg-muted tw-text-primary-foreground sm:focus:tw-text-accent-foreground"
|
||||||
|
>
|
||||||
|
foo
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`transform tailwind prefix 3`] = `
|
||||||
|
"<template>
|
||||||
|
<div
|
||||||
|
class="tw-bg-background hover:tw-bg-muted tw-text-primary-foreground sm:focus:tw-text-accent-foreground"
|
||||||
|
>
|
||||||
|
foo
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`transform tailwind prefix 4`] = `
|
||||||
|
"<template>
|
||||||
|
<div
|
||||||
|
id="testing"
|
||||||
|
v-bind="props"
|
||||||
|
@click="handleSomething"
|
||||||
|
:data-test="true"
|
||||||
|
:class="
|
||||||
|
cn(
|
||||||
|
'tw-bg-background hover:tw-bg-muted',
|
||||||
|
true && 'tw-text-primary-foreground sm:focus:tw-text-accent-foreground',
|
||||||
|
)
|
||||||
|
"
|
||||||
|
>
|
||||||
|
foo
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`transform tailwind prefix 5`] = `
|
||||||
|
"@tailwind base;
|
||||||
|
@tailwind components;
|
||||||
|
@tailwind utilities;
|
||||||
|
|
||||||
|
@layer base {
|
||||||
|
:root {
|
||||||
|
--background: 0 0% 100%;
|
||||||
|
--foreground: 224 71.4% 4.1%;
|
||||||
|
|
||||||
|
--muted: 220 14.3% 95.9%;
|
||||||
|
--muted-foreground: 220 8.9% 46.1%;
|
||||||
|
|
||||||
|
--popover: 0 0% 100%;
|
||||||
|
--popover-foreground: 224 71.4% 4.1%;
|
||||||
|
|
||||||
|
--card: 0 0% 100%;
|
||||||
|
--card-foreground: 224 71.4% 4.1%;
|
||||||
|
|
||||||
|
--border: 220 13% 91%;
|
||||||
|
--input: 220 13% 91%;
|
||||||
|
|
||||||
|
--primary: 220.9 39.3% 11%;
|
||||||
|
--primary-foreground: 210 20% 98%;
|
||||||
|
|
||||||
|
--secondary: 220 14.3% 95.9%;
|
||||||
|
--secondary-foreground: 220.9 39.3% 11%;
|
||||||
|
|
||||||
|
--accent: 220 14.3% 95.9%;
|
||||||
|
--accent-foreground: 220.9 39.3% 11%;
|
||||||
|
|
||||||
|
--destructive: 0 84.2% 60.2%;
|
||||||
|
--destructive-foreground: 210 20% 98%;
|
||||||
|
|
||||||
|
--ring: 217.9 10.6% 64.9%;
|
||||||
|
|
||||||
|
--radius: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dark {
|
||||||
|
--background: 224 71.4% 4.1%;
|
||||||
|
--foreground: 210 20% 98%;
|
||||||
|
|
||||||
|
--muted: 215 27.9% 16.9%;
|
||||||
|
--muted-foreground: 217.9 10.6% 64.9%;
|
||||||
|
|
||||||
|
--popover: 224 71.4% 4.1%;
|
||||||
|
--popover-foreground: 210 20% 98%;
|
||||||
|
|
||||||
|
--card: 224 71.4% 4.1%;
|
||||||
|
--card-foreground: 210 20% 98%;
|
||||||
|
|
||||||
|
--border: 215 27.9% 16.9%;
|
||||||
|
--input: 215 27.9% 16.9%;
|
||||||
|
|
||||||
|
--primary: 210 20% 98%;
|
||||||
|
--primary-foreground: 220.9 39.3% 11%;
|
||||||
|
|
||||||
|
--secondary: 215 27.9% 16.9%;
|
||||||
|
--secondary-foreground: 210 20% 98%;
|
||||||
|
|
||||||
|
--accent: 215 27.9% 16.9%;
|
||||||
|
--accent-foreground: 210 20% 98%;
|
||||||
|
|
||||||
|
--destructive: 0 62.8% 30.6%;
|
||||||
|
--destructive-foreground: 0 85.7% 97.3%;
|
||||||
|
|
||||||
|
--ring: 215 27.9% 16.9%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@layer base {
|
||||||
|
* {
|
||||||
|
@apply tw-border-border;
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
@apply tw-bg-background tw-text-foreground;
|
||||||
|
}
|
||||||
|
}"
|
||||||
|
`;
|
||||||
|
|
@ -1,111 +1,113 @@
|
||||||
import { it } from 'vitest'
|
import { expect, it } from 'vitest'
|
||||||
|
import { transform } from '../../src/utils/transformers'
|
||||||
|
import { applyPrefixesCss } from '../../src/utils/transformers/transform-tw-prefix'
|
||||||
|
|
||||||
it('transform tailwind prefix', async () => {
|
it('transform tailwind prefix', async () => {
|
||||||
// expect(
|
expect(
|
||||||
// await transform({
|
await transform({
|
||||||
// filename: 'test.ts',
|
filename: 'test.ts',
|
||||||
// raw: `const testVariants = cva(
|
raw: `const testVariants = cva(
|
||||||
// 'bg-background hover:bg-muted text-primary-foreground sm:focus:text-accent-foreground',
|
'bg-background hover:bg-muted text-primary-foreground sm:focus:text-accent-foreground',
|
||||||
// {
|
{
|
||||||
// variants: {
|
variants: {
|
||||||
// variant: {
|
variant: {
|
||||||
// default: 'bg-primary text-primary-foreground hover:bg-primary/90',
|
default: 'bg-primary text-primary-foreground hover:bg-primary/90',
|
||||||
// },
|
},
|
||||||
// size: {
|
size: {
|
||||||
// default: 'h-10 px-4 py-2',
|
default: 'h-10 px-4 py-2',
|
||||||
// },
|
},
|
||||||
// },
|
},
|
||||||
// },
|
},
|
||||||
// )`,
|
)`,
|
||||||
// config: {
|
config: {
|
||||||
// tailwind: {
|
tailwind: {
|
||||||
// baseColor: 'stone',
|
baseColor: 'stone',
|
||||||
// prefix: 'tw-',
|
prefix: 'tw-',
|
||||||
// },
|
},
|
||||||
// aliases: {
|
aliases: {
|
||||||
// components: '@/components',
|
components: '@/components',
|
||||||
// utils: '@/lib/utils',
|
utils: '@/lib/utils',
|
||||||
// },
|
},
|
||||||
// },
|
},
|
||||||
// baseColor: 'stone',
|
baseColor: 'stone',
|
||||||
// }),
|
}),
|
||||||
// ).toMatchSnapshot()
|
).toMatchSnapshot()
|
||||||
|
|
||||||
// expect(
|
expect(
|
||||||
// await transform({
|
await transform({
|
||||||
// filename: 'app.vue',
|
filename: 'app.vue',
|
||||||
// raw: `<template>
|
raw: `<template>
|
||||||
// <div class="bg-background hover:bg-muted text-primary-foreground sm:focus:text-accent-foreground">
|
<div class="bg-background hover:bg-muted text-primary-foreground sm:focus:text-accent-foreground">
|
||||||
// foo
|
foo
|
||||||
// </div>
|
</div>
|
||||||
// </template>
|
</template>
|
||||||
// `,
|
`,
|
||||||
// config: {
|
config: {
|
||||||
// tailwind: {
|
tailwind: {
|
||||||
// baseColor: 'stone',
|
baseColor: 'stone',
|
||||||
// prefix: 'tw-',
|
prefix: 'tw-',
|
||||||
// },
|
},
|
||||||
// aliases: {
|
aliases: {
|
||||||
// components: '@/components',
|
components: '@/components',
|
||||||
// utils: '@/lib/utils',
|
utils: '@/lib/utils',
|
||||||
// },
|
},
|
||||||
// },
|
},
|
||||||
// baseColor: 'stone',
|
baseColor: 'stone',
|
||||||
// }),
|
}),
|
||||||
// ).toMatchSnapshot()
|
).toMatchSnapshot()
|
||||||
|
|
||||||
// expect(
|
expect(
|
||||||
// await transform({
|
await transform({
|
||||||
// filename: 'app.vue',
|
filename: 'app.vue',
|
||||||
// raw: `<template>
|
raw: `<template>
|
||||||
// <div class="bg-background hover:bg-muted text-primary-foreground sm:focus:text-accent-foreground">
|
<div class="bg-background hover:bg-muted text-primary-foreground sm:focus:text-accent-foreground">
|
||||||
// foo
|
foo
|
||||||
// </div>
|
</div>
|
||||||
// </template>
|
</template>
|
||||||
// `,
|
`,
|
||||||
// config: {
|
config: {
|
||||||
// tailwind: {
|
tailwind: {
|
||||||
// baseColor: 'stone',
|
baseColor: 'stone',
|
||||||
// cssVariables: false,
|
cssVariables: false,
|
||||||
// prefix: 'tw-',
|
prefix: 'tw-',
|
||||||
// },
|
},
|
||||||
// aliases: {
|
aliases: {
|
||||||
// components: '@/components',
|
components: '@/components',
|
||||||
// utils: '@/lib/utils',
|
utils: '@/lib/utils',
|
||||||
// },
|
},
|
||||||
// },
|
},
|
||||||
// baseColor: stone,
|
baseColor: 'stone',
|
||||||
// }),
|
}),
|
||||||
// ).toMatchSnapshot()
|
).toMatchSnapshot()
|
||||||
|
|
||||||
// expect(
|
expect(
|
||||||
// await transform({
|
await transform({
|
||||||
// filename: 'app.vue',
|
filename: 'app.vue',
|
||||||
// raw: `<template>
|
raw: `<template>
|
||||||
// <div id="testing" v-bind="props" @click="handleSomething" :data-test="true" :class="cn('bg-background hover:bg-muted', true && 'text-primary-foreground sm:focus:text-accent-foreground')">
|
<div id="testing" v-bind="props" @click="handleSomething" :data-test="true" :class="cn('bg-background hover:bg-muted', true && 'text-primary-foreground sm:focus:text-accent-foreground')">
|
||||||
// foo
|
foo
|
||||||
// </div>
|
</div>
|
||||||
// </template>
|
</template>
|
||||||
// `,
|
`,
|
||||||
// config: {
|
config: {
|
||||||
// tailwind: {
|
tailwind: {
|
||||||
// baseColor: 'stone',
|
baseColor: 'stone',
|
||||||
// cssVariables: false,
|
cssVariables: false,
|
||||||
// prefix: 'tw-',
|
prefix: 'tw-',
|
||||||
// },
|
},
|
||||||
// aliases: {
|
aliases: {
|
||||||
// components: '@/components',
|
components: '@/components',
|
||||||
// utils: '@/lib/utils',
|
utils: '@/lib/utils',
|
||||||
// },
|
},
|
||||||
// },
|
},
|
||||||
// baseColor: stone,
|
baseColor: 'stone',
|
||||||
// }),
|
}),
|
||||||
// ).toMatchSnapshot()
|
).toMatchSnapshot()
|
||||||
|
|
||||||
// expect(
|
expect(
|
||||||
// applyPrefixesCss(
|
applyPrefixesCss(
|
||||||
// '@tailwind base;\n@tailwind components;\n@tailwind utilities;\n \n@layer base {\n :root {\n --background: 0 0% 100%;\n --foreground: 224 71.4% 4.1%;\n \n --muted: 220 14.3% 95.9%;\n --muted-foreground: 220 8.9% 46.1%;\n \n --popover: 0 0% 100%;\n --popover-foreground: 224 71.4% 4.1%;\n \n --card: 0 0% 100%;\n --card-foreground: 224 71.4% 4.1%;\n \n --border: 220 13% 91%;\n --input: 220 13% 91%;\n \n --primary: 220.9 39.3% 11%;\n --primary-foreground: 210 20% 98%;\n \n --secondary: 220 14.3% 95.9%;\n --secondary-foreground: 220.9 39.3% 11%;\n \n --accent: 220 14.3% 95.9%;\n --accent-foreground: 220.9 39.3% 11%;\n \n --destructive: 0 84.2% 60.2%;\n --destructive-foreground: 210 20% 98%;\n \n --ring: 217.9 10.6% 64.9%;\n \n --radius: 0.5rem;\n }\n \n .dark {\n --background: 224 71.4% 4.1%;\n --foreground: 210 20% 98%;\n \n --muted: 215 27.9% 16.9%;\n --muted-foreground: 217.9 10.6% 64.9%;\n \n --popover: 224 71.4% 4.1%;\n --popover-foreground: 210 20% 98%;\n \n --card: 224 71.4% 4.1%;\n --card-foreground: 210 20% 98%;\n \n --border: 215 27.9% 16.9%;\n --input: 215 27.9% 16.9%;\n \n --primary: 210 20% 98%;\n --primary-foreground: 220.9 39.3% 11%;\n \n --secondary: 215 27.9% 16.9%;\n --secondary-foreground: 210 20% 98%;\n \n --accent: 215 27.9% 16.9%;\n --accent-foreground: 210 20% 98%;\n \n --destructive: 0 62.8% 30.6%;\n --destructive-foreground: 0 85.7% 97.3%;\n \n --ring: 215 27.9% 16.9%;\n }\n}\n \n@layer base {\n * {\n @apply border-border;\n }\n body {\n @apply bg-background text-foreground;\n }\n}',
|
'@tailwind base;\n@tailwind components;\n@tailwind utilities;\n \n@layer base {\n :root {\n --background: 0 0% 100%;\n --foreground: 224 71.4% 4.1%;\n \n --muted: 220 14.3% 95.9%;\n --muted-foreground: 220 8.9% 46.1%;\n \n --popover: 0 0% 100%;\n --popover-foreground: 224 71.4% 4.1%;\n \n --card: 0 0% 100%;\n --card-foreground: 224 71.4% 4.1%;\n \n --border: 220 13% 91%;\n --input: 220 13% 91%;\n \n --primary: 220.9 39.3% 11%;\n --primary-foreground: 210 20% 98%;\n \n --secondary: 220 14.3% 95.9%;\n --secondary-foreground: 220.9 39.3% 11%;\n \n --accent: 220 14.3% 95.9%;\n --accent-foreground: 220.9 39.3% 11%;\n \n --destructive: 0 84.2% 60.2%;\n --destructive-foreground: 210 20% 98%;\n \n --ring: 217.9 10.6% 64.9%;\n \n --radius: 0.5rem;\n }\n \n .dark {\n --background: 224 71.4% 4.1%;\n --foreground: 210 20% 98%;\n \n --muted: 215 27.9% 16.9%;\n --muted-foreground: 217.9 10.6% 64.9%;\n \n --popover: 224 71.4% 4.1%;\n --popover-foreground: 210 20% 98%;\n \n --card: 224 71.4% 4.1%;\n --card-foreground: 210 20% 98%;\n \n --border: 215 27.9% 16.9%;\n --input: 215 27.9% 16.9%;\n \n --primary: 210 20% 98%;\n --primary-foreground: 220.9 39.3% 11%;\n \n --secondary: 215 27.9% 16.9%;\n --secondary-foreground: 210 20% 98%;\n \n --accent: 215 27.9% 16.9%;\n --accent-foreground: 210 20% 98%;\n \n --destructive: 0 62.8% 30.6%;\n --destructive-foreground: 0 85.7% 97.3%;\n \n --ring: 215 27.9% 16.9%;\n }\n}\n \n@layer base {\n * {\n @apply border-border;\n }\n body {\n @apply bg-background text-foreground;\n }\n}',
|
||||||
// 'tw-',
|
'tw-',
|
||||||
// ),
|
),
|
||||||
// ).toMatchSnapshot()
|
).toMatchSnapshot()
|
||||||
})
|
})
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user