|
@@ -27,7 +27,7 @@ export function Sidebar({ nav, activePage, t }: {
|
|
|
const { data: daemon } = useApi<{ running: boolean }>("/daemon");
|
|
const { data: daemon } = useApi<{ running: boolean }>("/daemon");
|
|
|
|
|
|
|
|
return (
|
|
return (
|
|
|
- <aside className="w-[230px] shrink-0 border-r border-border bg-card/40 flex flex-col h-full overflow-y-auto">
|
|
|
|
|
|
|
+ <aside className="w-[240px] shrink-0 border-r border-border bg-card/40 flex flex-col h-full overflow-y-auto">
|
|
|
{/* Logo — generous vertical breathing room */}
|
|
{/* Logo — generous vertical breathing room */}
|
|
|
<div className="px-6 pt-7 pb-6">
|
|
<div className="px-6 pt-7 pb-6">
|
|
|
<button onClick={nav.toDashboard} className="flex items-baseline gap-0.5 hover:opacity-70 transition-opacity">
|
|
<button onClick={nav.toDashboard} className="flex items-baseline gap-0.5 hover:opacity-70 transition-opacity">
|
|
@@ -39,7 +39,7 @@ export function Sidebar({ nav, activePage, t }: {
|
|
|
{/* Books section */}
|
|
{/* Books section */}
|
|
|
<div className="flex-1 px-4">
|
|
<div className="flex-1 px-4">
|
|
|
<div className="px-2 mb-3 flex items-center justify-between">
|
|
<div className="px-2 mb-3 flex items-center justify-between">
|
|
|
- <span className="text-xs uppercase tracking-[0.12em] text-muted-foreground font-medium">{t("nav.books")}</span>
|
|
|
|
|
|
|
+ <span className="text-sm uppercase tracking-wide text-muted-foreground font-medium">{t("nav.books")}</span>
|
|
|
<button
|
|
<button
|
|
|
onClick={nav.toBookCreate}
|
|
onClick={nav.toBookCreate}
|
|
|
className="w-6 h-6 flex items-center justify-center rounded text-sm text-muted-foreground hover:text-primary hover:bg-primary/10 transition-all"
|
|
className="w-6 h-6 flex items-center justify-center rounded text-sm text-muted-foreground hover:text-primary hover:bg-primary/10 transition-all"
|
|
@@ -53,10 +53,10 @@ export function Sidebar({ nav, activePage, t }: {
|
|
|
<button
|
|
<button
|
|
|
key={book.id}
|
|
key={book.id}
|
|
|
onClick={() => nav.toBook(book.id)}
|
|
onClick={() => nav.toBook(book.id)}
|
|
|
- className={`w-full text-left px-3 py-2 rounded-md text-sm truncate transition-all duration-150 ${
|
|
|
|
|
|
|
+ className={`w-full text-left px-3 py-2.5 rounded-md text-base truncate transition-all duration-150 ${
|
|
|
activePage === `book:${book.id}`
|
|
activePage === `book:${book.id}`
|
|
|
? "bg-primary/10 text-primary font-medium"
|
|
? "bg-primary/10 text-primary font-medium"
|
|
|
- : "text-foreground/60 hover:text-foreground hover:bg-muted/40"
|
|
|
|
|
|
|
+ : "text-foreground/80 hover:text-foreground hover:bg-muted/40"
|
|
|
}`}
|
|
}`}
|
|
|
>
|
|
>
|
|
|
{book.title}
|
|
{book.title}
|
|
@@ -109,10 +109,10 @@ function SidebarItem({ label, icon, active, onClick, badge, badgeColor }: {
|
|
|
return (
|
|
return (
|
|
|
<button
|
|
<button
|
|
|
onClick={onClick}
|
|
onClick={onClick}
|
|
|
- className={`w-full text-left px-3 py-2 rounded-md text-sm flex items-center gap-2.5 transition-all duration-150 ${
|
|
|
|
|
|
|
+ className={`w-full text-left px-3 py-2.5 rounded-md text-base flex items-center gap-2.5 transition-all duration-150 ${
|
|
|
active
|
|
active
|
|
|
? "bg-secondary text-foreground font-medium"
|
|
? "bg-secondary text-foreground font-medium"
|
|
|
- : "text-foreground/50 hover:text-foreground hover:bg-muted/40"
|
|
|
|
|
|
|
+ : "text-foreground/70 hover:text-foreground hover:bg-muted/40"
|
|
|
}`}
|
|
}`}
|
|
|
>
|
|
>
|
|
|
<span className="text-sm w-4 text-center opacity-60">{icon}</span>
|
|
<span className="text-sm w-4 text-center opacity-60">{icon}</span>
|