Home / Function/ splitClassName() — ui Function Reference

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]
}

Subdomains

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