Refine appearance settings and syntax highlighting
Keep parsed chat and tool detail content in sync with appearance token changes. Hide font-family controls on native, use One as the default syntax theme, add Swift highlighting, and give Nord a distinct light palette.
This commit is contained in:
@@ -30,6 +30,22 @@ describe("highlightCode", () => {
|
||||
expect(stringToken?.style).toBe("string");
|
||||
});
|
||||
|
||||
it("highlights Swift code", () => {
|
||||
const code = 'struct Greeter {\n let message = "hello"\n}';
|
||||
const result = highlightCode(code, "test.swift");
|
||||
|
||||
expect(result).toHaveLength(3);
|
||||
|
||||
const structToken = result[0].find((t) => t.text === "struct");
|
||||
expect(structToken?.style).toBe("keyword");
|
||||
|
||||
const typeToken = result[0].find((t) => t.text === "Greeter");
|
||||
expect(typeToken?.style).toBe("definition");
|
||||
|
||||
const stringToken = result[1].find((t) => t.text.includes("hello"));
|
||||
expect(stringToken?.style).toBe("string");
|
||||
});
|
||||
|
||||
it("highlights TSX code with correct dialect", () => {
|
||||
const code = 'const el = <div className="test">hello</div>;';
|
||||
const result = highlightCode(code, "test.tsx");
|
||||
|
||||
@@ -13,6 +13,7 @@ describe("isLanguageSupported", () => {
|
||||
expect(isLanguageSupported("test.css")).toBe(true);
|
||||
expect(isLanguageSupported("test.html")).toBe(true);
|
||||
expect(isLanguageSupported("test.java")).toBe(true);
|
||||
expect(isLanguageSupported("test.swift")).toBe(true);
|
||||
expect(isLanguageSupported("test.ex")).toBe(true);
|
||||
});
|
||||
|
||||
@@ -49,6 +50,7 @@ describe("getSupportedExtensions", () => {
|
||||
expect(extensions).toContain("py");
|
||||
expect(extensions).toContain("go");
|
||||
expect(extensions).toContain("rs");
|
||||
expect(extensions).toContain("swift");
|
||||
expect(extensions).toContain("json");
|
||||
});
|
||||
});
|
||||
|
||||
@@ -59,10 +59,19 @@ describe("resolveSyntaxColors", () => {
|
||||
});
|
||||
|
||||
it("dark-only themes ignore the color scheme", () => {
|
||||
for (const id of ["dracula", "nord"] as const) {
|
||||
for (const id of ["dracula"] as const) {
|
||||
expect(resolveSyntaxColors(id, "light")).toEqual(resolveSyntaxColors(id, "dark"));
|
||||
}
|
||||
});
|
||||
|
||||
it("nord uses a dark text palette in light mode", () => {
|
||||
const light = resolveSyntaxColors("nord", "light");
|
||||
const dark = resolveSyntaxColors("nord", "dark");
|
||||
|
||||
expect(light).not.toEqual(dark);
|
||||
expect(light.variable).toBe("#2e3440");
|
||||
expect(light.comment).toBe("#6b7280");
|
||||
});
|
||||
});
|
||||
|
||||
describe("isSyntaxThemeId", () => {
|
||||
|
||||
Reference in New Issue
Block a user