Tailwind classes in OCaml
1open Tailwind
2
3let test_color_basic () =
4 let blue = Color.make `Blue () in
5 let bg_class = Color.bg blue in
6 Alcotest.(check string) "basic blue background" "bg-blue-500" (Css.to_string bg_class)
7
8let test_color_with_variant () =
9 let light_blue = Color.make `Blue ~variant:`V300 () in
10 let bg_class = Color.bg light_blue in
11 Alcotest.(check string) "blue-300 background" "bg-blue-300" (Css.to_string bg_class)
12
13let test_color_with_opacity () =
14 let semi_blue = Color.make `Blue ~opacity:50 () in
15 let bg_class = Color.bg semi_blue in
16 Alcotest.(check string) "blue with opacity" "bg-blue-500/50" (Css.to_string bg_class)
17
18let test_color_text () =
19 let red = Color.make `Red ~variant:`V600 () in
20 let text_class = Color.text red in
21 Alcotest.(check string) "red text" "text-red-600" (Css.to_string text_class)
22
23let test_color_border () =
24 let green = Color.make `Green ~variant:`V400 () in
25 let border_class = Color.border green in
26 Alcotest.(check string) "green border" "border-green-400" (Css.to_string border_class)
27
28let test_color_ring () =
29 let purple = Color.make `Purple ~variant:`V500 () in
30 let ring_class = Color.ring purple in
31 Alcotest.(check string) "purple ring" "ring-purple-500" (Css.to_string ring_class)
32
33(* Additional edge case tests *)
34let test_opacity_edge_cases () =
35 let transparent = Color.make `Blue ~opacity:0 () in
36 let opaque = Color.make `Blue ~opacity:100 () in
37 let bg1 = Color.bg transparent in
38 let bg2 = Color.bg opaque in
39 Alcotest.(check bool) "zero opacity contains /0" (String.contains_s (Css.to_string bg1) "/0");
40 Alcotest.(check bool) "full opacity contains /100" (String.contains_s (Css.to_string bg2) "/100")
41
42let suite = [
43 "color_basic", `Quick, test_color_basic;
44 "color_with_variant", `Quick, test_color_with_variant;
45 "color_with_opacity", `Quick, test_color_with_opacity;
46 "color_text", `Quick, test_color_text;
47 "color_border", `Quick, test_color_border;
48 "color_ring", `Quick, test_color_ring;
49 "opacity_edge_cases", `Quick, test_opacity_edge_cases;
50]