Home / Function/ printVariant() — tailwindcss Function Reference

printVariant() — tailwindcss Function Reference

Architecture documentation for the printVariant() function in candidate.ts from the tailwindcss codebase.

Function typescript Oxide Scanner calls 4 called by 6

Entity Profile

Dependency Diagram

graph TD
  fe10eff5_7df3_1553_1351_7802a9ea48a5["printVariant()"]
  ba6fca27_7720_5839_0f92_bc2abb8db636["candidate.ts"]
  fe10eff5_7df3_1553_1351_7802a9ea48a5 -->|defined in| ba6fca27_7720_5839_0f92_bc2abb8db636
  7a380dd4_2f8e_5aa7_b4ee_bf219cb7807f["migrateArbitraryVariants()"]
  7a380dd4_2f8e_5aa7_b4ee_bf219cb7807f -->|calls| fe10eff5_7df3_1553_1351_7802a9ea48a5
  2de86ba2_90a4_8c2d_db18_154bb1a1564f["printCandidate()"]
  2de86ba2_90a4_8c2d_db18_154bb1a1564f -->|calls| fe10eff5_7df3_1553_1351_7802a9ea48a5
  8678786b_ce4d_e620_10b5_0449d39487fc["createCanonicalizeCandidateCache()"]
  8678786b_ce4d_e620_10b5_0449d39487fc -->|calls| fe10eff5_7df3_1553_1351_7802a9ea48a5
  b3ddb484_a420_850d_607a_2221ddf995ca["arbitraryVariants()"]
  b3ddb484_a420_850d_607a_2221ddf995ca -->|calls| fe10eff5_7df3_1553_1351_7802a9ea48a5
  4af25bcc_7295_c96c_9ddc_5c19bf644f5e["modernizeArbitraryValuesVariant()"]
  4af25bcc_7295_c96c_9ddc_5c19bf644f5e -->|calls| fe10eff5_7df3_1553_1351_7802a9ea48a5
  e557c8a4_bb27_ee44_c462_9e238157ad04["buildDesignSystem()"]
  e557c8a4_bb27_ee44_c462_9e238157ad04 -->|calls| fe10eff5_7df3_1553_1351_7802a9ea48a5
  49a16f31_6459_6af3_3eaa_e3ee599b3619["printArbitraryValue()"]
  fe10eff5_7df3_1553_1351_7802a9ea48a5 -->|calls| 49a16f31_6459_6af3_3eaa_e3ee599b3619
  b14a13d9_dc97_755f_d463_8a9084852e8b["simplifyArbitraryVariant()"]
  fe10eff5_7df3_1553_1351_7802a9ea48a5 -->|calls| b14a13d9_dc97_755f_d463_8a9084852e8b
  ce0de73d_6995_5a9a_feea_d46e9287b256["isVar()"]
  fe10eff5_7df3_1553_1351_7802a9ea48a5 -->|calls| ce0de73d_6995_5a9a_feea_d46e9287b256
  f44bccaf_a67b_68ab_8fb1_2226f3e5fe00["printModifier()"]
  fe10eff5_7df3_1553_1351_7802a9ea48a5 -->|calls| f44bccaf_a67b_68ab_8fb1_2226f3e5fe00
  style fe10eff5_7df3_1553_1351_7802a9ea48a5 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/tailwindcss/src/candidate.ts lines 986–1031

export function printVariant(variant: Variant) {
  // Handle static variants
  if (variant.kind === 'static') {
    return variant.root
  }

  // Handle arbitrary variants
  if (variant.kind === 'arbitrary') {
    return `[${printArbitraryValue(simplifyArbitraryVariant(variant.selector))}]`
  }

  let base: string = ''

  // Handle functional variants
  if (variant.kind === 'functional') {
    base += variant.root
    // `@` is a special case for functional variants. We want to print: `@lg`
    // instead of `@-lg`
    let hasDash = variant.root !== '@'
    if (variant.value) {
      if (variant.value.kind === 'arbitrary') {
        let isVarValue = isVar(variant.value.value)
        let value = isVarValue ? variant.value.value.slice(4, -1) : variant.value.value
        let [open, close] = isVarValue ? ['(', ')'] : ['[', ']']

        base += `${hasDash ? '-' : ''}${open}${printArbitraryValue(value)}${close}`
      } else if (variant.value.kind === 'named') {
        base += `${hasDash ? '-' : ''}${variant.value.value}`
      }
    }
  }

  // Handle compound variants
  if (variant.kind === 'compound') {
    base += variant.root
    base += '-'
    base += printVariant(variant.variant)
  }

  // Handle modifiers
  if (variant.kind === 'functional' || variant.kind === 'compound') {
    base += printModifier(variant.modifier)
  }

  return base
}

Domain

Subdomains

Frequently Asked Questions

What does printVariant() do?
printVariant() is a function in the tailwindcss codebase, defined in packages/tailwindcss/src/candidate.ts.
Where is printVariant() defined?
printVariant() is defined in packages/tailwindcss/src/candidate.ts at line 986.
What does printVariant() call?
printVariant() calls 4 function(s): isVar, printArbitraryValue, printModifier, simplifyArbitraryVariant.
What calls printVariant()?
printVariant() is called by 6 function(s): arbitraryVariants, buildDesignSystem, createCanonicalizeCandidateCache, migrateArbitraryVariants, modernizeArbitraryValuesVariant, printCandidate.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free