S3.2: hand-placed 12x12 pixel icon set replaces lucide and reicon
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
86dbb4efa1
commit
a6036308b7
35 files changed
+150
-182
No files matched your search
@@ -44,6 +44,12 @@ test("text uses the bundled pixel font, and the palette follows the day part, se
|
||||
const idle = rows.find((row) => !row.matches(".active, [aria-current]"))!;
|
||||
return [getComputedStyle(active, "::before").animationName, getComputedStyle(idle, "::before").animationName, getComputedStyle(idle, "::before").visibility];
|
||||
})).toEqual(["px-blink", "none", "hidden"]);
|
||||
// Every icon on screen is a pixel glyph on the font's grid; no stroked vector icons remain.
|
||||
expect(await page.evaluate(() => ({
|
||||
stroked: [...document.querySelectorAll("svg")].filter((svg) => !svg.closest("canvas") && svg.getAttribute("stroke") && svg.getAttribute("stroke") !== "none").length,
|
||||
size: getComputedStyle(document.querySelector("svg.pixel-icon")!).width === getComputedStyle(document.body).fontSize,
|
||||
}))).toEqual({ stroked: 0, size: true });
|
||||
expect(await page.evaluate(() => document.querySelectorAll(".nav > .nav-item").length)).toBe(await page.evaluate(() => document.querySelectorAll(".nav > .nav-item svg.pixel-icon").length));
|
||||
await page.getByRole("button", { name: "New task" }).click();
|
||||
const dialog = page.getByRole("dialog", { name: "New task" });
|
||||
await expect(dialog).toBeVisible();
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
import { expect, test } from "vitest";
|
||||
import { PIXEL_ICONS } from "../../src/renderer/src/shared/pixel-icons";
|
||||
|
||||
test("every icon is a 12x12 bitmap of lit and dark pixels, and no two icons are the same", () => {
|
||||
for (const [name, bitmap] of Object.entries(PIXEL_ICONS)) {
|
||||
const rows = bitmap.split(" ");
|
||||
expect(rows, name).toHaveLength(12);
|
||||
for (const row of rows) expect(row, name).toMatch(/^[#.]{12}$/);
|
||||
expect(bitmap.includes("#"), name).toBe(true);
|
||||
}
|
||||
const bitmaps = Object.values(PIXEL_ICONS);
|
||||
expect(new Set(bitmaps).size).toBe(bitmaps.length);
|
||||
});
|
||||
Reference in new issue
Block a user