Tailwind classes in OCaml

Fix Tailwind v4 CLI content scanning and CSS generation

- Add @source directive to input.css to scan HTML files in _build directory
- Remove explicit --content flags from dune rules (now handled by @source)
- Add comprehensive @theme definition with colors, spacing, typography, borders, and shadows
- Resolve issue where Tailwind v4 CLI ignores files in .gitignored directories

The examples now properly generate all required Tailwind CSS classes including:
- Colors: bg-gray-50, text-blue-600, text-gray-800, etc.
- Spacing: p-2, mb-1, mt-2, max-w-42, etc.
- Typography: font-bold, font-semibold
- Effects: shadow-sm, rounded-lg, rounded-sm

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

Changed files
+103 -7
examples
+7 -7
examples/dune
···
input.css
hello_tailwind_01.html)
(action
-
(run npx @tailwindcss/cli --input input.css --output %{targets} --content hello_tailwind_01.html --minify)))
+
(run npx @tailwindcss/cli --input input.css --output %{targets} --minify)))
(rule
(targets colors_and_typography_02.css)
···
input.css
colors_and_typography_02.html)
(action
-
(run npx @tailwindcss/cli --input input.css --output %{targets} --content colors_and_typography_02.html --minify)))
+
(run npx @tailwindcss/cli --input input.css --output %{targets} --minify)))
(rule
(targets layout_and_spacing_03.css)
···
input.css
layout_and_spacing_03.html)
(action
-
(run npx @tailwindcss/cli --input input.css --output %{targets} --content layout_and_spacing_03.html --minify)))
+
(run npx @tailwindcss/cli --input input.css --output %{targets} --minify)))
(rule
(targets responsive_design_04.css)
···
input.css
responsive_design_04.html)
(action
-
(run npx @tailwindcss/cli --input input.css --output %{targets} --content responsive_design_04.html --minify)))
+
(run npx @tailwindcss/cli --input input.css --output %{targets} --minify)))
(rule
(targets effects_and_variants_05.css)
···
input.css
effects_and_variants_05.html)
(action
-
(run npx @tailwindcss/cli --input input.css --output %{targets} --content effects_and_variants_05.html --minify)))
+
(run npx @tailwindcss/cli --input input.css --output %{targets} --minify)))
(rule
(targets patterns_and_components_06.css)
···
input.css
patterns_and_components_06.html)
(action
-
(run npx @tailwindcss/cli --input input.css --output %{targets} --content patterns_and_components_06.html --minify)))
+
(run npx @tailwindcss/cli --input input.css --output %{targets} --minify)))
(rule
(targets comprehensive_showcase_07.css)
···
input.css
comprehensive_showcase_07.html)
(action
-
(run npx @tailwindcss/cli --input input.css --output %{targets} --content comprehensive_showcase_07.html --minify)))
+
(run npx @tailwindcss/cli --input input.css --output %{targets} --minify)))
;; Generate index.html page
(rule
+96
examples/input.css
···
/* Tailwind CSS configuration for examples */
+
@source "./*.html";
+
+
@theme {
+
/* Colors */
+
--color-white: #ffffff;
+
--color-gray-50: #f9fafb;
+
--color-gray-100: #f3f4f6;
+
--color-gray-200: #e5e7eb;
+
--color-gray-300: #d1d5db;
+
--color-gray-400: #9ca3af;
+
--color-gray-500: #6b7280;
+
--color-gray-600: #4b5563;
+
--color-gray-700: #374151;
+
--color-gray-800: #1f2937;
+
--color-gray-900: #111827;
+
--color-blue-50: #eff6ff;
+
--color-blue-100: #dbeafe;
+
--color-blue-300: #93c5fd;
+
--color-blue-400: #60a5fa;
+
--color-blue-500: #3b82f6;
+
--color-blue-600: #2563eb;
+
--color-blue-700: #1d4ed8;
+
--color-blue-800: #1e40af;
+
--color-green-50: #f0fdf4;
+
--color-green-100: #dcfce7;
+
--color-green-500: #22c55e;
+
--color-green-600: #16a34a;
+
--color-red-50: #fef2f2;
+
--color-red-100: #fee2e2;
+
--color-red-500: #ef4444;
+
--color-red-600: #dc2626;
+
--color-purple-50: #faf5ff;
+
--color-purple-100: #f3e8ff;
+
--color-purple-300: #c4b5fd;
+
--color-purple-600: #9333ea;
+
--color-yellow-50: #fefce8;
+
--color-yellow-100: #fef3c7;
+
--color-yellow-600: #ca8a04;
+
--color-indigo-50: #eef2ff;
+
--color-indigo-600: #4f46e5;
+
+
/* Spacing */
+
--spacing-0: 0px;
+
--spacing-0_25: 0.0625rem;
+
--spacing-0_5: 0.125rem;
+
--spacing-0_75: 0.1875rem;
+
--spacing-1: 0.25rem;
+
--spacing-1_5: 0.375rem;
+
--spacing-2: 0.5rem;
+
--spacing-3: 0.75rem;
+
--spacing-4: 1rem;
+
--spacing-5: 1.25rem;
+
--spacing-6: 1.5rem;
+
--spacing-8: 2rem;
+
--spacing-12: 3rem;
+
--spacing-16: 4rem;
+
--spacing-24: 6rem;
+
--spacing-32: 8rem;
+
--spacing-42: 10.5rem;
+
--spacing-72: 18rem;
+
+
/* Font sizes */
+
--font-size-xs: 0.75rem;
+
--font-size-sm: 0.875rem;
+
--font-size-base: 1rem;
+
--font-size-lg: 1.125rem;
+
--font-size-xl: 1.25rem;
+
--font-size-2xl: 1.5rem;
+
--font-size-3xl: 1.875rem;
+
--font-size-4xl: 2.25rem;
+
+
/* Font weights */
+
--font-weight-light: 300;
+
--font-weight-normal: 400;
+
--font-weight-medium: 500;
+
--font-weight-semibold: 600;
+
--font-weight-bold: 700;
+
--font-weight-extrabold: 800;
+
+
/* Border radius */
+
--radius-none: 0px;
+
--radius-sm: 0.125rem;
+
--radius-md: 0.375rem;
+
--radius-lg: 0.5rem;
+
--radius-xl: 0.75rem;
+
--radius-2xl: 1rem;
+
--radius-3xl: 1.5rem;
+
--radius-full: 9999px;
+
+
/* Shadows */
+
--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
+
--shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
+
--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
+
--shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
+
}
+
@tailwind base;
@tailwind components;
@tailwind utilities;