package tw

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

Module Tw.OutputSource

CSS rule output — the result of extracting a Tailwind utility class.

A single Output.t value represents one CSS rule (or at-rule) produced by a utility class with zero or more modifiers. The five variants correspond to the five CSS constructs Tailwind can emit:

  • Regular — a plain selector rule, possibly with nested CSS
  • Media_query — a rule wrapped in a responsive or preference @ media
  • Container_query — a rule wrapped in @container
  • Starting_style — a rule wrapped in @starting-style
  • Supports_query — a rule wrapped in @supports

Values are produced by Rule.outputs and consumed by Build.

Sourcetype t =
  1. | Regular of {
    1. selector : Cascade.Css.Selector.t;
    2. props : Cascade.Css.declaration list;
    3. base_class : string option;
      (*

      Base class name without the dot, e.g. "p-4".

      *)
    4. has_hover : bool;
      (*

      true when the rule carries a hover pseudo-class modifier. Used by Build to wrap it in @media (hover:hover).

      *)
    5. nested : Cascade.Css.statement list;
      (*

      Nested @media / @supports statements for compound modifiers.

      *)
    6. merge_key : string option;
      (*

      Override key for the CSS optimizer's merge heuristic.

      *)
    7. not_order : int;
      (*

      Sort key for not-* variant rules; 0 for normal rules.

      *)
    }
  2. | Media_query of {
    1. condition : Cascade.Css.Media.t;
    2. selector : Cascade.Css.Selector.t;
    3. props : Cascade.Css.declaration list;
    4. base_class : string option;
    5. nested : Cascade.Css.statement list;
    6. not_order : int;
    }
  3. | Container_query of {
    1. condition : Cascade.Css.Container.t;
    2. selector : Cascade.Css.Selector.t;
    3. props : Cascade.Css.declaration list;
    4. base_class : string option;
    }
  4. | Starting_style of {
    1. selector : Cascade.Css.Selector.t;
    2. props : Cascade.Css.declaration list;
    3. base_class : string option;
    }
  5. | Supports_query of {
    1. condition : Cascade.Css.Supports.t;
    2. selector : Cascade.Css.Selector.t;
    3. props : Cascade.Css.declaration list;
    4. base_class : string option;
    5. merge_key : string option;
    6. not_order : int;
    }

Smart constructors

All arguments except selector and props are optional and default to sensible values (false, [], None, 0).

Sourceval regular : selector:Cascade.Css.Selector.t -> props:Cascade.Css.declaration list -> ?base_class:string -> ?has_hover:bool -> ?nested:Cascade.Css.statement list -> ?merge_key:string -> ?not_order:int -> unit -> t

regular ~selector ~props () constructs a plain (non-media, non-conditional) rule.

Sourceval media_query : condition:Cascade.Css.Media.t -> selector:Cascade.Css.Selector.t -> props:Cascade.Css.declaration list -> ?base_class:string -> ?nested:Cascade.Css.statement list -> ?not_order:int -> unit -> t

media_query ~condition ~selector ~props () constructs a Media_query rule wrapped in @media condition.

Sourceval container_query : condition:Cascade.Css.Container.t -> selector:Cascade.Css.Selector.t -> props:Cascade.Css.declaration list -> ?base_class:string -> unit -> t

container_query ~condition ~selector ~props () constructs a Container_query rule wrapped in @container condition.

Sourceval starting_style : selector:Cascade.Css.Selector.t -> props:Cascade.Css.declaration list -> ?base_class:string -> unit -> t

starting_style ~selector ~props () constructs a Starting_style rule wrapped in @starting-style.

Sourceval supports_query : condition:Cascade.Css.Supports.t -> selector:Cascade.Css.Selector.t -> props:Cascade.Css.declaration list -> ?base_class:string -> ?merge_key:string -> ?not_order:int -> unit -> t

supports_query ~condition ~selector ~props () constructs a Supports_query rule wrapped in @supports condition.

Sourceval pp : t -> string

pp r returns a short human-readable description of r, e.g. "Regular(.p-4)" or "Media_query(.sm\\:p-4)". Useful for test failure messages and debug output.

Classification

Sourcetype by_type = {
  1. regular : t list;
  2. media : t list;
  3. container : t list;
  4. starting : t list;
  5. supports : t list;
}

Rules partitioned by variant, preserving original order within each group.

Sourceval classify_by_type : t list -> by_type

classify_by_type rules partitions rules by variant into a by_type record. Each group preserves the original order of its elements.

Sourceval is_hover_rule : t -> bool

is_hover_rule r is true iff r is a Regular rule with has_hover = true. Used by Build to gate hover utilities under @media (hover:hover).