Home / File/ container.ts — tailwindcss Source File

container.ts — tailwindcss Source File

Architecture documentation for container.ts, a typescript file in the tailwindcss codebase. 8 imports, 2 dependents.

File typescript UpgradeToolkit Codemods 8 imports 2 dependents 2 functions

Entity Profile

Dependency Diagram

graph LR
  340330a5_8048_84e2_77ad_8f6da2f8b8d0["container.ts"]
  42640952_ea63_55f1_1ff1_00816e2980ae["ast.ts"]
  340330a5_8048_84e2_77ad_8f6da2f8b8d0 --> 42640952_ea63_55f1_1ff1_00816e2980ae
  f9b19679_c1f0_28d6_4d1a_31a10c52e42d["atRule"]
  340330a5_8048_84e2_77ad_8f6da2f8b8d0 --> f9b19679_c1f0_28d6_4d1a_31a10c52e42d
  88bcab2f_f837_9e57_5b6a_fda72a4c3315["cloneAstNode"]
  340330a5_8048_84e2_77ad_8f6da2f8b8d0 --> 88bcab2f_f837_9e57_5b6a_fda72a4c3315
  c203f636_607a_d332_b4c5_6a40c108f778["decl"]
  340330a5_8048_84e2_77ad_8f6da2f8b8d0 --> c203f636_607a_d332_b4c5_6a40c108f778
  7fd72d4c_e95c_d849_1002_1e1c9d8aca1a["design-system.ts"]
  340330a5_8048_84e2_77ad_8f6da2f8b8d0 --> 7fd72d4c_e95c_d849_1002_1e1c9d8aca1a
  51f244f2_138c_0d69_05db_b2df310d0f23["compare-breakpoints.ts"]
  340330a5_8048_84e2_77ad_8f6da2f8b8d0 --> 51f244f2_138c_0d69_05db_b2df310d0f23
  0015fc82_ad3f_130f_e7fe_1e92f2f624a1["compareBreakpoints"]
  340330a5_8048_84e2_77ad_8f6da2f8b8d0 --> 0015fc82_ad3f_130f_e7fe_1e92f2f624a1
  c1272aed_91bb_73df_0746_d55fa9b302fd["types.ts"]
  340330a5_8048_84e2_77ad_8f6da2f8b8d0 --> c1272aed_91bb_73df_0746_d55fa9b302fd
  b2ba3368_7330_fe20_4543_9cafa8cfedc0["migrate-js-config.ts"]
  b2ba3368_7330_fe20_4543_9cafa8cfedc0 --> 340330a5_8048_84e2_77ad_8f6da2f8b8d0
  daaadd53_16ee_21c6_12d9_8feaac80a91b["apply-compat-hooks.ts"]
  daaadd53_16ee_21c6_12d9_8feaac80a91b --> 340330a5_8048_84e2_77ad_8f6da2f8b8d0
  style 340330a5_8048_84e2_77ad_8f6da2f8b8d0 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import { atRule, cloneAstNode, decl, type AstNode, type AtRule } from '../ast'
import type { DesignSystem } from '../design-system'
import { compareBreakpoints } from '../utils/compare-breakpoints'
import type { ResolvedConfig } from './config/types'

export function registerContainerCompat(userConfig: ResolvedConfig, designSystem: DesignSystem) {
  let container = userConfig.theme.container || {}

  if (typeof container !== 'object' || container === null) {
    return
  }

  let rules = buildCustomContainerUtilityRules(container, designSystem)

  if (rules.length === 0) {
    return
  }

  designSystem.utilities.static('container', () => rules.map(cloneAstNode))
}

export function buildCustomContainerUtilityRules(
  {
    center,
    padding,
    screens,
  }: {
    center?: boolean
    padding?: string | {}
    screens?: {}
  },
  designSystem: DesignSystem,
): AstNode[] {
  let rules = []
  let breakpointOverwrites: null | Map<string, AtRule> = null

  if (center) {
    rules.push(decl('margin-inline', 'auto'))
  }

  if (
    typeof padding === 'string' ||
    (typeof padding === 'object' && padding !== null && 'DEFAULT' in padding)
  ) {
    rules.push(
      decl('padding-inline', typeof padding === 'string' ? padding : (padding.DEFAULT as string)),
    )
  }

  if (typeof screens === 'object' && screens !== null) {
    breakpointOverwrites = new Map()

    // When setting the `screens` in v3, you were overwriting the default
    // screens config. To do this in v4, you have to manually unset all core
    // screens.

    let breakpoints = Array.from(designSystem.theme.namespace('--breakpoint').entries())
    breakpoints.sort((a, z) => compareBreakpoints(a[1], z[1], 'asc'))
    if (breakpoints.length > 0) {
      let [key] = breakpoints[0]
// ... (61 more lines)

Subdomains

Frequently Asked Questions

What does container.ts do?
container.ts is a source file in the tailwindcss codebase, written in typescript. It belongs to the UpgradeToolkit domain, Codemods subdomain.
What functions are defined in container.ts?
container.ts defines 2 function(s): buildCustomContainerUtilityRules, registerContainerCompat.
What does container.ts depend on?
container.ts imports 8 module(s): ast.ts, atRule, cloneAstNode, compare-breakpoints.ts, compareBreakpoints, decl, design-system.ts, types.ts.
What files import container.ts?
container.ts is imported by 2 file(s): apply-compat-hooks.ts, migrate-js-config.ts.
Where is container.ts in the architecture?
container.ts is located at packages/tailwindcss/src/compat/container.ts (domain: UpgradeToolkit, subdomain: Codemods, directory: packages/tailwindcss/src/compat).

Analyze Your Own Codebase

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

Try Supermodel Free