web: rename sidebar collapse to fold

This commit is contained in:
Keisuke Hirata 2026-07-23 20:50:30 +09:00
parent f848a96343
commit 6e53df0303
No known key found for this signature in database
4 changed files with 38 additions and 28 deletions

View File

@ -261,7 +261,7 @@
padding: var(--space-4) var(--space-3); padding: var(--space-4) var(--space-3);
border-right: 1px solid var(--line); border-right: 1px solid var(--line);
} }
.workspace-sidebar.collapsed { .workspace-sidebar.folded {
width: max-content; width: max-content;
} }
@ -311,7 +311,7 @@
gap: var(--space-1); gap: var(--space-1);
} }
.sidebar-icon-button, .sidebar-icon-button,
.sidebar-collapse-button { .sidebar-fold-button {
flex: 0 0 auto; flex: 0 0 auto;
display: grid; display: grid;
place-items: center; place-items: center;
@ -321,7 +321,7 @@
color: var(--text-muted); color: var(--text-muted);
text-decoration: none; text-decoration: none;
} }
.sidebar-collapse-button { .sidebar-fold-button {
border: 0; border: 0;
background: transparent; background: transparent;
cursor: pointer; cursor: pointer;
@ -337,27 +337,27 @@
} }
.sidebar-icon-button:hover, .sidebar-icon-button:hover,
.sidebar-icon-button:focus-visible, .sidebar-icon-button:focus-visible,
.sidebar-collapse-button:hover, .sidebar-fold-button:hover,
.sidebar-collapse-button:focus-visible { .sidebar-fold-button:focus-visible {
background: var(--interactive-hover); background: var(--interactive-hover);
color: var(--text-muted); color: var(--text-muted);
} }
.workspace-sidebar.collapsed { .workspace-sidebar.folded {
overflow: hidden; overflow: hidden;
padding-inline: var(--space-2); padding-inline: var(--space-2);
} }
.workspace-sidebar.collapsed .sidebar-header { .workspace-sidebar.folded .sidebar-header {
margin-bottom: 0; margin-bottom: 0;
} }
.workspace-sidebar.collapsed .sidebar-title-row, .workspace-sidebar.folded .sidebar-title-row,
.workspace-sidebar.collapsed .sidebar-actions-row { .workspace-sidebar.folded .sidebar-actions-row {
justify-content: center; justify-content: center;
} }
.workspace-sidebar.collapsed .sidebar-actions-row { .workspace-sidebar.folded .sidebar-actions-row {
align-items: center; align-items: center;
flex-direction: column; flex-direction: column;
} }
.workspace-sidebar.collapsed .workspace-label { .workspace-sidebar.folded .workspace-label {
display: none; display: none;
} }
.sidebar-sections { .sidebar-sections {

View File

@ -458,6 +458,16 @@ Deno.test("Account UI owns browser passkey session state without workspace autho
workspaceLayoutLoad.includes("workspaceApiPath(workspaceId"), workspaceLayoutLoad.includes("workspaceApiPath(workspaceId"),
"Workspace layout should load workspace data and register a WorkspaceSidebar snippet", "Workspace layout should load workspace data and register a WorkspaceSidebar snippet",
); );
assert(
workspaceLayout.includes("sidebarFolded") &&
workspaceLayout.includes("onToggleFold={toggleSidebarFold}") &&
sidebar.includes("folded?: boolean") &&
sidebar.includes("onToggleFold?: () => void") &&
sidebar.includes("sidebar-fold-button") &&
sidebar.includes("Fold sidebar") &&
sidebar.includes("Unfold sidebar"),
"Workspace sidebar should keep a visible fold button with fold/folded naming",
);
assert( assert(
sidebarOverride.includes("controller.setSidebar(sidebar)") && sidebarOverride.includes("controller.setSidebar(sidebar)") &&
sidebarOverride.includes("controller.clearSidebar(sidebar)"), sidebarOverride.includes("controller.clearSidebar(sidebar)"),

View File

@ -12,8 +12,8 @@
repositories?: RepositoryListResponse | null; repositories?: RepositoryListResponse | null;
repositoriesError?: string | null; repositoriesError?: string | null;
currentPath?: string; currentPath?: string;
collapsed?: boolean; folded?: boolean;
onToggleCollapsed?: () => void; onToggleFold?: () => void;
}; };
let { let {
@ -22,8 +22,8 @@
repositories = null, repositories = null,
repositoriesError = null, repositoriesError = null,
currentPath = '/', currentPath = '/',
collapsed = false, folded = false,
onToggleCollapsed onToggleFold
}: Props = $props(); }: Props = $props();
let workspaceId = $derived(workspace?.workspace_id ?? ''); let workspaceId = $derived(workspace?.workspace_id ?? '');
@ -32,7 +32,7 @@
</script> </script>
<aside <aside
class:collapsed class:folded
class="workspace-sidebar" class="workspace-sidebar"
aria-label="Workspace navigation" aria-label="Workspace navigation"
> >
@ -52,14 +52,14 @@
</div> </div>
<button <button
class="sidebar-collapse-button" class="sidebar-fold-button"
type="button" type="button"
aria-label={collapsed ? 'Expand sidebar' : 'Collapse sidebar'} aria-label={folded ? 'Unfold sidebar' : 'Fold sidebar'}
aria-expanded={!collapsed} aria-expanded={!folded}
title={collapsed ? 'Expand sidebar' : 'Collapse sidebar'} title={folded ? 'Unfold sidebar' : 'Fold sidebar'}
onclick={onToggleCollapsed} onclick={onToggleFold}
> >
{#if collapsed} {#if folded}
<svg class="sidebar-icon" aria-hidden="true" viewBox="0 0 24 24"> <svg class="sidebar-icon" aria-hidden="true" viewBox="0 0 24 24">
<path d="m6 17 5-5-5-5" /> <path d="m6 17 5-5-5-5" />
<path d="m13 17 5-5-5-5" /> <path d="m13 17 5-5-5-5" />
@ -103,7 +103,7 @@
</div> </div>
</header> </header>
{#if !collapsed} {#if !folded}
<nav class="sidebar-sections" aria-label="Workspace sections"> <nav class="sidebar-sections" aria-label="Workspace sections">
<RepositoriesNavSection {repositories} {repositoriesError} {currentPath} {workspaceId} /> <RepositoriesNavSection {repositories} {repositoriesError} {currentPath} {workspaceId} />
<ObjectivesNavSection {currentPath} {workspaceId} /> <ObjectivesNavSection {currentPath} {workspaceId} />

View File

@ -5,10 +5,10 @@
import type { LayoutProps } from './$types'; import type { LayoutProps } from './$types';
let { data, children }: LayoutProps = $props(); let { data, children }: LayoutProps = $props();
let sidebarCollapsed = $state(false); let sidebarFolded = $state(false);
function toggleSidebar() { function toggleSidebarFold() {
sidebarCollapsed = !sidebarCollapsed; sidebarFolded = !sidebarFolded;
} }
</script> </script>
@ -19,8 +19,8 @@
repositories={data.repositories ?? null} repositories={data.repositories ?? null}
repositoriesError={data.repositoriesError ?? null} repositoriesError={data.repositoriesError ?? null}
currentPath={page.url.pathname} currentPath={page.url.pathname}
collapsed={sidebarCollapsed} folded={sidebarFolded}
onToggleCollapsed={toggleSidebar} onToggleFold={toggleSidebarFold}
/> />
{/snippet} {/snippet}