splitClassName() — ui Function Reference
Architecture documentation for the splitClassName() function in transform-css-vars.ts from the ui codebase.
Entity Profile
Dependency Diagram
graph TD 35f5833f_e233_d06c_e1a4_06b1e4fca37c["splitClassName()"] 68902008_e67e_dfe4_353e_be9dad09e8d9["transform-css-vars.ts"] 35f5833f_e233_d06c_e1a4_06b1e4fca37c -->|defined in| 68902008_e67e_dfe4_353e_be9dad09e8d9 15235ae6_6a22_6fdf_a8f4_354a12d93b40["applyColorMapping()"] 15235ae6_6a22_6fdf_a8f4_354a12d93b40 -->|calls| 35f5833f_e233_d06c_e1a4_06b1e4fca37c 7a99391a_676c_f329_e2df_d08e5c98ca85["applyRtlMapping()"] 7a99391a_676c_f329_e2df_d08e5c98ca85 -->|calls| 35f5833f_e233_d06c_e1a4_06b1e4fca37c 14f18958_6010_0c1c_63b2_3aada202d09f["applyPrefix()"] 14f18958_6010_0c1c_63b2_3aada202d09f -->|calls| 35f5833f_e233_d06c_e1a4_06b1e4fca37c style 35f5833f_e233_d06c_e1a4_06b1e4fca37c fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/shadcn/src/utils/transformers/transform-css-vars.ts lines 105–146
export function splitClassName(className: string): (string | null)[] {
if (!className.includes("/") && !className.includes(":")) {
return [null, className, null]
}
// Find the last colon that's not inside brackets to split variant from name.
let lastColonIndex = -1
let bracketDepth = 0
for (let i = className.length - 1; i >= 0; i--) {
const char = className[i]
if (char === "]") bracketDepth++
else if (char === "[") bracketDepth--
else if (char === ":" && bracketDepth === 0) {
lastColonIndex = i
break
}
}
let variant: string | null = null
let nameWithAlpha: string
if (lastColonIndex === -1) {
// No colon outside brackets, entire string is the name (possibly with alpha).
nameWithAlpha = className
} else {
variant = className.slice(0, lastColonIndex)
nameWithAlpha = className.slice(lastColonIndex + 1)
}
// Now split nameWithAlpha by "/" for alpha modifier.
// Alpha modifiers are numeric (e.g., /50) or arbitrary (e.g., /[50%]).
// Named groups like /alert-dialog-content would have been part of variant.
const slashIndex = nameWithAlpha.lastIndexOf("/")
if (slashIndex === -1) {
return [variant, nameWithAlpha, null]
}
const name = nameWithAlpha.slice(0, slashIndex)
const alpha = nameWithAlpha.slice(slashIndex + 1)
return [variant, name, alpha]
}
Domain
Subdomains
Source
Frequently Asked Questions
What does splitClassName() do?
splitClassName() is a function in the ui codebase, defined in packages/shadcn/src/utils/transformers/transform-css-vars.ts.
Where is splitClassName() defined?
splitClassName() is defined in packages/shadcn/src/utils/transformers/transform-css-vars.ts at line 105.
What calls splitClassName()?
splitClassName() is called by 3 function(s): applyColorMapping, applyPrefix, applyRtlMapping.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free