import { act, assertEquals, cleanup, render, screen } from "./setup.ts"; import Button from "../../components/form/Button.tsx"; import Input from "../../components/form/Input.tsx"; import Textarea from "../../components/form/Textarea.tsx"; import Checkbox from "../../components/form/Checkbox.tsx"; import Modal from "../../islands/Modal.tsx"; import Loading from "../../islands/Loading.tsx"; import PostList from "../../islands/PostList.tsx"; // --- Button dark theme classes --- Deno.test({ name: "Dark theme - Button default variant has dark background class", fn() { render(); const btn = screen.getByText("Test"); assertEquals(btn.className.includes("dark:bg-gray-700"), true); cleanup(); }, sanitizeResources: false, sanitizeOps: false, }); Deno.test({ name: "Dark theme - Button default variant has dark text class", fn() { render(); const btn = screen.getByText("Test"); assertEquals(btn.className.includes("dark:text-gray-100"), true); cleanup(); }, sanitizeResources: false, sanitizeOps: false, }); Deno.test({ name: "Dark theme - Button has dark border class", fn() { render(); const btn = screen.getByText("Test"); assertEquals(btn.className.includes("dark:border-gray-600"), true); cleanup(); }, sanitizeResources: false, sanitizeOps: false, }); Deno.test({ name: "Dark theme - Button primary variant does not override with dark bg", fn() { render(); const btn = screen.getByText("Primary"); // Primary keeps blue-600 in both themes, should not have dark:bg-gray-700 assertEquals(btn.className.includes("bg-blue-600"), true); assertEquals(btn.className.includes("dark:bg-gray-700"), false); cleanup(); }, sanitizeResources: false, sanitizeOps: false, }); // --- Input dark theme classes --- Deno.test({ name: "Dark theme - Input has dark background class", fn() { render(); const input = screen.getByPlaceholderText("test"); assertEquals(input.className.includes("dark:bg-gray-800"), true); cleanup(); }, sanitizeResources: false, sanitizeOps: false, }); Deno.test({ name: "Dark theme - Input has dark text class", fn() { render(); const input = screen.getByPlaceholderText("test"); assertEquals(input.className.includes("dark:text-gray-100"), true); cleanup(); }, sanitizeResources: false, sanitizeOps: false, }); Deno.test({ name: "Dark theme - Input has dark border class when no error", fn() { render(); const input = screen.getByPlaceholderText("test"); assertEquals(input.className.includes("dark:border-gray-600"), true); cleanup(); }, sanitizeResources: false, sanitizeOps: false, }); Deno.test({ name: "Dark theme - Input error state does not include dark border override", fn() { render(); const input = screen.getByPlaceholderText("err"); assertEquals(input.className.includes("border-red-600"), true); assertEquals(input.className.includes("dark:border-gray-600"), false); cleanup(); }, sanitizeResources: false, sanitizeOps: false, }); // --- Textarea dark theme classes --- Deno.test({ name: "Dark theme - Textarea has dark background class", fn() { render(