



















@@ -11,6 +11,15 @@ function readMobileCss(): string {
1111return readFileSync(cssPath!, "utf8");
1212}
131314+function readLayoutCss(): string {
15+const cssPath = [
16+resolve(process.cwd(), "ui/src/styles/layout.css"),
17+resolve(process.cwd(), "..", "ui/src/styles/layout.css"),
18+].find((candidate) => existsSync(candidate));
19+expect(cssPath).toBeTruthy();
20+return readFileSync(cssPath!, "utf8");
21+}
22+1423describe("chat header responsive mobile styles", () => {
1524it("keeps the chat header and session controls from clipping on narrow widths", () => {
1625const css = readMobileCss();
@@ -21,3 +30,19 @@ describe("chat header responsive mobile styles", () => {
2130expect(css).toContain(".chat-controls__thinking-select");
2231});
2332});
33+34+describe("sidebar menu trigger styles", () => {
35+it("keeps the mobile sidebar trigger visibly interactive on hover and keyboard focus", () => {
36+const css = readLayoutCss();
37+38+expect(css).toContain(".sidebar-menu-trigger {");
39+expect(css).toContain("cursor: pointer;");
40+expect(css).toContain(".sidebar-menu-trigger:hover {");
41+expect(css).toContain("background: color-mix(in srgb, var(--bg-hover) 84%, transparent);");
42+expect(css).toContain("color: var(--text);");
43+expect(css).toContain(".sidebar-menu-trigger:focus-visible {");
44+expect(css).toContain("box-shadow: var(--focus-ring);");
45+expect(css).toContain(".topbar-nav-toggle {");
46+expect(css).toContain("display: none;");
47+});
48+});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。