Skip to content

Commit a3ca92c

Browse files
committed
feat(sidebar): increase navigation typography
1 parent abe41c6 commit a3ca92c

2 files changed

Lines changed: 16 additions & 6 deletions

File tree

frontend/src/components/biz/Sidebar.tsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ export default function Sidebar({
8080
: 'max-w-0 -translate-x-2 opacity-0';
8181
const navLabelClassName =
8282
contentMotionState === 'expanded'
83-
? 'max-w-[9rem] flex-1 translate-x-0 opacity-100'
83+
? 'max-w-[10rem] flex-1 translate-x-0 opacity-100'
8484
: 'max-w-0 -translate-x-1 opacity-0';
8585
const navChevronClassName =
8686
contentMotionState === 'expanded'
@@ -140,7 +140,7 @@ export default function Sidebar({
140140
className={`overflow-hidden whitespace-nowrap transition-[max-width,opacity,transform] duration-200 ease-out ${brandTextClassName}`}
141141
aria-hidden={isCollapsed}
142142
>
143-
<div className="flex flex-col text-2xl font-black italic tracking-tighter uppercase leading-none">
143+
<div className="flex flex-col text-3xl font-black italic tracking-tighter uppercase leading-none">
144144
<span>GET</span>
145145
<span className="mt-[-4px] text-[var(--text-muted)]">TOKENS</span>
146146
</div>
@@ -204,7 +204,7 @@ export default function Sidebar({
204204
setHoveredSection(null);
205205
setPinnedSection(null);
206206
}}
207-
className={`flex w-full items-center border-2 py-3 text-xs font-bold uppercase tracking-widest transition-[background-color,border-color,color,box-shadow,transform] duration-150 active:scale-95 ${
207+
className={`flex w-full items-center border-2 py-3 text-sm font-bold uppercase tracking-widest transition-[background-color,border-color,color,box-shadow,transform] duration-150 active:scale-95 ${
208208
isCollapsed ? 'justify-center px-0' : 'gap-3 px-3'
209209
} ${
210210
activePage === item.id
@@ -264,7 +264,7 @@ export default function Sidebar({
264264
setPinnedSection('codex');
265265
setActiveCodexWorkspace(workspace.id);
266266
}}
267-
className={`w-full border px-3 py-2 text-left text-[length:var(--font-size-ui-md-compact)] font-black tracking-[0.08em] transition-[background-color,border-color,color,box-shadow,transform] duration-150 active:scale-95 ${
267+
className={`w-full border px-3 py-2 text-left text-[length:var(--font-size-ui-lg)] font-black tracking-[0.08em] transition-[background-color,border-color,color,box-shadow,transform] duration-150 active:scale-95 ${
268268
activePage === 'codex' && activeCodexWorkspace === workspace.id
269269
? 'border-[var(--border-color)] bg-[var(--bg-surface)] text-[var(--text-primary)] shadow-[4px_4px_0_var(--shadow-color)]'
270270
: 'border-transparent text-[var(--text-muted)] hover:border-[var(--border-color)]'
@@ -297,7 +297,7 @@ export default function Sidebar({
297297
setPinnedSection('claude');
298298
setActiveClaudeWorkspace(workspace.id);
299299
}}
300-
className={`w-full border px-3 py-2 text-left text-[length:var(--font-size-ui-md-compact)] font-black tracking-[0.08em] transition-[background-color,border-color,color,box-shadow,transform] duration-150 active:scale-95 ${
300+
className={`w-full border px-3 py-2 text-left text-[length:var(--font-size-ui-lg)] font-black tracking-[0.08em] transition-[background-color,border-color,color,box-shadow,transform] duration-150 active:scale-95 ${
301301
activePage === 'claude' && activeClaudeWorkspace === workspace.id
302302
? 'border-[var(--border-color)] bg-[var(--bg-surface)] text-[var(--text-primary)] shadow-[4px_4px_0_var(--shadow-color)]'
303303
: 'border-transparent text-[var(--text-muted)] hover:border-[var(--border-color)]'
@@ -318,7 +318,7 @@ export default function Sidebar({
318318
<div className={`border-t-2 border-[var(--border-color)] transition-[padding] duration-200 ease-out ${isCollapsed ? 'p-3' : 'p-6'}`}>
319319
<div className="grid place-items-center">
320320
<div
321-
className={`col-start-1 row-start-1 text-[length:var(--font-size-ui-xs)] font-bold uppercase tracking-tighter text-[var(--text-muted)] transition-[opacity,transform] duration-200 ease-out ${versionTextClassName}`}
321+
className={`col-start-1 row-start-1 text-[length:var(--font-size-ui-sm)] font-bold uppercase tracking-tighter text-[var(--text-muted)] transition-[opacity,transform] duration-200 ease-out ${versionTextClassName}`}
322322
aria-hidden={isCollapsed}
323323
>
324324
VERSION {sidebarVersion}

frontend/src/components/biz/sidebarState.test.mjs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import {
1010
resolveHoveredSidebarSection,
1111
} from './sidebarState.ts';
1212
import { getSidebarNavItems } from './sidebarNav.ts';
13+
import { readFile } from 'node:fs/promises';
1314

1415
test('sidebar hides developer-only entries outside dev tools mode', () => {
1516
const productionIDs = getSidebarNavItems(false).map((item) => item.id);
@@ -58,3 +59,12 @@ test('submenu motion state matches placement and visibility', () => {
5859
assert.equal(getSidebarSubmenuMotionState('bottom', true), 'open-bottom');
5960
assert.equal(getSidebarSubmenuMotionState('bottom', false), 'closed-bottom');
6061
});
62+
63+
test('sidebar typography keeps the brand and nav labels readable', async () => {
64+
const source = await readFile(new URL('./Sidebar.tsx', import.meta.url), 'utf8');
65+
66+
assert.match(source, /text-3xl/);
67+
assert.match(source, /text-sm font-bold uppercase tracking-widest/);
68+
assert.match(source, /font-size-ui-lg/);
69+
assert.match(source, /font-size-ui-sm/);
70+
});

0 commit comments

Comments
 (0)