transform-tw-prefix.ts — ui Source File
Architecture documentation for transform-tw-prefix.ts, a typescript file in the ui codebase. 7 imports, 3 dependents.
Entity Profile
Dependency Diagram
graph LR 7edb575e_bbe2_1d90_7009_48ce3cf289ac["transform-tw-prefix.ts"] 6a5c3afa_2e3e_bbfc_2351_1976d5a184fe["get-project-info.ts"] 7edb575e_bbe2_1d90_7009_48ce3cf289ac --> 6a5c3afa_2e3e_bbfc_2351_1976d5a184fe b5fac7e7_b77e_14e9_6617_4fc7c4c5e783["TailwindVersion"] 7edb575e_bbe2_1d90_7009_48ce3cf289ac --> b5fac7e7_b77e_14e9_6617_4fc7c4c5e783 b37690ec_c82c_c272_b63f_a755b319db6c["getProjectTailwindVersionFromConfig"] 7edb575e_bbe2_1d90_7009_48ce3cf289ac --> b37690ec_c82c_c272_b63f_a755b319db6c 68902008_e67e_dfe4_353e_be9dad09e8d9["transform-css-vars.ts"] 7edb575e_bbe2_1d90_7009_48ce3cf289ac --> 68902008_e67e_dfe4_353e_be9dad09e8d9 35f5833f_e233_d06c_e1a4_06b1e4fca37c["splitClassName"] 7edb575e_bbe2_1d90_7009_48ce3cf289ac --> 35f5833f_e233_d06c_e1a4_06b1e4fca37c e69863ed_3e2f_ef94_648a_ef0155c386ef["transformers"] 7edb575e_bbe2_1d90_7009_48ce3cf289ac --> e69863ed_3e2f_ef94_648a_ef0155c386ef 4f6f7e78_23ff_4f5f_c723_474454f64c85["ts-morph"] 7edb575e_bbe2_1d90_7009_48ce3cf289ac --> 4f6f7e78_23ff_4f5f_c723_474454f64c85 646bd874_990a_e30f_0d03_073229dd52ad["index.ts"] 646bd874_990a_e30f_0d03_073229dd52ad --> 7edb575e_bbe2_1d90_7009_48ce3cf289ac b9afeea8_fc18_99f0_da5c_152be6e8a9ba["apply-prefix.test.ts"] b9afeea8_fc18_99f0_da5c_152be6e8a9ba --> 7edb575e_bbe2_1d90_7009_48ce3cf289ac e3ff65c3_9289_f51d_f9f2_0e1b35feacce["transform-tw-prefix.test.ts"] e3ff65c3_9289_f51d_f9f2_0e1b35feacce --> 7edb575e_bbe2_1d90_7009_48ce3cf289ac style 7edb575e_bbe2_1d90_7009_48ce3cf289ac fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
import { Transformer } from "@/src/utils/transformers"
import { SyntaxKind } from "ts-morph"
import {
TailwindVersion,
getProjectTailwindVersionFromConfig,
} from "../get-project-info"
import { splitClassName } from "./transform-css-vars"
export const transformTwPrefixes: Transformer = async ({
sourceFile,
config,
}) => {
if (!config.tailwind?.prefix) {
return sourceFile
}
const tailwindVersion = await getProjectTailwindVersionFromConfig(config)
// Find the cva function calls.
sourceFile
.getDescendantsOfKind(SyntaxKind.CallExpression)
.filter((node) => node.getExpression().getText() === "cva")
.forEach((node) => {
// cva(base, ...)
if (node.getArguments()[0]?.isKind(SyntaxKind.StringLiteral)) {
const defaultClassNames = node.getArguments()[0]
if (defaultClassNames) {
defaultClassNames.replaceWithText(
`"${applyPrefix(
defaultClassNames.getText()?.replace(/"|'/g, ""),
config.tailwind.prefix,
tailwindVersion
)}"`
)
}
}
// cva(..., { variants: { ... } })
if (node.getArguments()[1]?.isKind(SyntaxKind.ObjectLiteralExpression)) {
node
.getArguments()[1]
?.getDescendantsOfKind(SyntaxKind.PropertyAssignment)
.find((node) => node.getName() === "variants")
?.getDescendantsOfKind(SyntaxKind.PropertyAssignment)
.forEach((node) => {
node
.getDescendantsOfKind(SyntaxKind.PropertyAssignment)
.forEach((node) => {
const classNames = node.getInitializerIfKind(
SyntaxKind.StringLiteral
)
if (classNames) {
classNames?.replaceWithText(
`"${applyPrefix(
classNames.getText()?.replace(/"|'/g, ""),
config.tailwind.prefix,
tailwindVersion
)}"`
)
}
// ... (174 more lines)
Domain
Subdomains
Dependencies
Imported By
Source
Frequently Asked Questions
What does transform-tw-prefix.ts do?
transform-tw-prefix.ts is a source file in the ui codebase, written in typescript. It belongs to the FrameworkTooling domain, CLICore subdomain.
What functions are defined in transform-tw-prefix.ts?
transform-tw-prefix.ts defines 3 function(s): applyPrefix, applyPrefixesCss, transformTwPrefixes.
What does transform-tw-prefix.ts depend on?
transform-tw-prefix.ts imports 7 module(s): TailwindVersion, get-project-info.ts, getProjectTailwindVersionFromConfig, splitClassName, transform-css-vars.ts, transformers, ts-morph.
What files import transform-tw-prefix.ts?
transform-tw-prefix.ts is imported by 3 file(s): apply-prefix.test.ts, index.ts, transform-tw-prefix.test.ts.
Where is transform-tw-prefix.ts in the architecture?
transform-tw-prefix.ts is located at packages/shadcn/src/utils/transformers/transform-tw-prefix.ts (domain: FrameworkTooling, subdomain: CLICore, directory: packages/shadcn/src/utils/transformers).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free