(** GADT-based Tailwind HTML library with heterogeneous lists *) (** Color utilities *) val blue : int -> Tailwind.Color.t val gray : int -> Tailwind.Color.t val red : int -> Tailwind.Color.t val green : int -> Tailwind.Color.t val yellow : int -> Tailwind.Color.t val indigo : int -> Tailwind.Color.t val purple : int -> Tailwind.Color.t val pink : int -> Tailwind.Color.t (** Size utilities *) val rem : float -> Tailwind.Size.t val px : Tailwind.Size.t val zero : Tailwind.Size.t val auto : Tailwind.Size.t val full : Tailwind.Size.t val screen : Tailwind.Size.t (** Text utility *) val txt : string -> Htmlit.El.html (** GADT for Tailwind properties with category types *) type _ tw_prop = | Text_color : Tailwind.Color.t -> [`Text_color] tw_prop | Bg_color : Tailwind.Color.t -> [`Bg_color] tw_prop | Font_size : Tailwind.Typography.font_size -> [`Font_size] tw_prop | Font_weight : Tailwind.Typography.font_weight -> [`Font_weight] tw_prop | Margin : Tailwind.Size.t -> [`Margin] tw_prop | Margin_x : Tailwind.Size.t -> [`Margin] tw_prop | Margin_y : Tailwind.Size.t -> [`Margin] tw_prop | Margin_top : Tailwind.Size.t -> [`Margin] tw_prop | Margin_bottom : Tailwind.Size.t -> [`Margin] tw_prop | Margin_left : Tailwind.Size.t -> [`Margin] tw_prop | Margin_right : Tailwind.Size.t -> [`Margin] tw_prop | Padding : Tailwind.Size.t -> [`Padding] tw_prop | Padding_x : Tailwind.Size.t -> [`Padding] tw_prop | Padding_y : Tailwind.Size.t -> [`Padding] tw_prop | Width : Tailwind.Size.t -> [`Width] tw_prop | Height : Tailwind.Size.t -> [`Height] tw_prop | Max_width : Tailwind.Size.t -> [`Width] tw_prop | Min_height : Tailwind.Size.t -> [`Height] tw_prop | Display_flex : [`Layout] tw_prop | Display_grid : [`Layout] tw_prop | Display_block : [`Layout] tw_prop | Display_inline : [`Layout] tw_prop | Display_inline_block : [`Layout] tw_prop | Grid_cols : int -> [`Grid] tw_prop | Grid_rows : int -> [`Grid] tw_prop | Gap : Tailwind.Size.t -> [`Grid] tw_prop | Gap_x : Tailwind.Size.t -> [`Grid] tw_prop | Gap_y : Tailwind.Size.t -> [`Grid] tw_prop | Items_center : [`Layout] tw_prop | Items_start : [`Layout] tw_prop | Items_end : [`Layout] tw_prop | Justify_center : [`Layout] tw_prop | Justify_between : [`Layout] tw_prop | Justify_start : [`Layout] tw_prop | Justify_end : [`Layout] tw_prop | Flex_col : [`Layout] tw_prop | Flex_row : [`Layout] tw_prop | Text_center : [`Layout] tw_prop | Text_left : [`Layout] tw_prop | Text_right : [`Layout] tw_prop | Rounded : [< `Sm | `Md | `Lg | `Full ] -> [`Effects] tw_prop | Shadow : [< `Sm | `Md | `Lg ] -> [`Effects] tw_prop | Border : [`Effects] tw_prop | Border_color : Tailwind.Color.t -> [`Effects] tw_prop | Transition : [`Effects] tw_prop (** Heterogeneous list *) type tw_list = tw_list_item list and tw_list_item = Any : 'a tw_prop -> tw_list_item (** Convert heterogeneous list to Tailwind classes *) val styles : tw_list -> Tailwind.t (** Helper for HTML class attribute *) val classes_attr : tw_list -> Htmlit.At.t (** Helper constructors for convenient usage *) val text_color : Tailwind.Color.t -> tw_list_item val bg_color : Tailwind.Color.t -> tw_list_item val font_size : Tailwind.Typography.font_size -> tw_list_item val font_weight : Tailwind.Typography.font_weight -> tw_list_item val margin : Tailwind.Size.t -> tw_list_item val margin_x : Tailwind.Size.t -> tw_list_item val margin_y : Tailwind.Size.t -> tw_list_item val margin_top : Tailwind.Size.t -> tw_list_item val margin_bottom : Tailwind.Size.t -> tw_list_item val margin_left : Tailwind.Size.t -> tw_list_item val margin_right : Tailwind.Size.t -> tw_list_item val padding : Tailwind.Size.t -> tw_list_item val padding_x : Tailwind.Size.t -> tw_list_item val padding_y : Tailwind.Size.t -> tw_list_item val width : Tailwind.Size.t -> tw_list_item val height : Tailwind.Size.t -> tw_list_item val max_width : Tailwind.Size.t -> tw_list_item val min_height : Tailwind.Size.t -> tw_list_item val flex : tw_list_item val grid : tw_list_item val block : tw_list_item val inline : tw_list_item val inline_block : tw_list_item val grid_cols : int -> tw_list_item val grid_rows : int -> tw_list_item val gap : Tailwind.Size.t -> tw_list_item val gap_x : Tailwind.Size.t -> tw_list_item val gap_y : Tailwind.Size.t -> tw_list_item val items_center : tw_list_item val items_start : tw_list_item val items_end : tw_list_item val justify_center : tw_list_item val justify_between : tw_list_item val justify_start : tw_list_item val justify_end : tw_list_item val flex_col : tw_list_item val flex_row : tw_list_item val text_center : tw_list_item val text_left : tw_list_item val text_right : tw_list_item val rounded : [< `Sm | `Md | `Lg | `Full ] -> tw_list_item val shadow : [< `Sm | `Md | `Lg ] -> tw_list_item val border : tw_list_item val border_color : Tailwind.Color.t -> tw_list_item val transition : tw_list_item (** HTML element functions with GADT styling *) val h1 : ?styles:tw_list -> Htmlit.El.html list -> Htmlit.El.html val h2 : ?styles:tw_list -> Htmlit.El.html list -> Htmlit.El.html val h3 : ?styles:tw_list -> Htmlit.El.html list -> Htmlit.El.html val h4 : ?styles:tw_list -> Htmlit.El.html list -> Htmlit.El.html val h5 : ?styles:tw_list -> Htmlit.El.html list -> Htmlit.El.html val h6 : ?styles:tw_list -> Htmlit.El.html list -> Htmlit.El.html val p : ?styles:tw_list -> Htmlit.El.html list -> Htmlit.El.html val div : ?styles:tw_list -> Htmlit.El.html list -> Htmlit.El.html val span : ?styles:tw_list -> Htmlit.El.html list -> Htmlit.El.html val button : ?styles:tw_list -> Htmlit.El.html list -> Htmlit.El.html val a : ?styles:tw_list -> href:string -> Htmlit.El.html list -> Htmlit.El.html val img : ?styles:tw_list -> src:string -> alt:string -> unit -> Htmlit.El.html val ul : ?styles:tw_list -> Htmlit.El.html list -> Htmlit.El.html val ol : ?styles:tw_list -> Htmlit.El.html list -> Htmlit.El.html val li : ?styles:tw_list -> Htmlit.El.html list -> Htmlit.El.html val section : ?styles:tw_list -> Htmlit.El.html list -> Htmlit.El.html val article : ?styles:tw_list -> Htmlit.El.html list -> Htmlit.El.html val nav : ?styles:tw_list -> Htmlit.El.html list -> Htmlit.El.html val header : ?styles:tw_list -> Htmlit.El.html list -> Htmlit.El.html val footer : ?styles:tw_list -> Htmlit.El.html list -> Htmlit.El.html val main : ?styles:tw_list -> Htmlit.El.html list -> Htmlit.El.html (** Pre-built component helpers *) val container : Htmlit.El.html list -> Htmlit.El.html val flex_center : Htmlit.El.html list -> Htmlit.El.html val card : ?elevated:bool -> Htmlit.El.html list -> Htmlit.El.html val btn_primary : ?size:[`Sm | `Md | `Lg] -> Htmlit.El.html list -> Htmlit.El.html val btn_secondary : ?size:[`Sm | `Md | `Lg] -> Htmlit.El.html list -> Htmlit.El.html val btn_outline : ?size:[`Sm | `Md | `Lg] -> Htmlit.El.html list -> Htmlit.El.html