Skip to content

[Design] Shell do app — sidebar e layout #169

Closed

Description

@alltomatos

Parent

Épico: revisão visual dark-mode / Apple-like do OpenCode Desktop. Depende da fundação de tokens (#164).

What to build

Auditar e ajustar apenas visual/tokens, sem alterar comportamento, os seguintes arquivos:

  • pages/layout.tsx, pages/layout-new.tsx
  • pages/layout/* (app-project-sidebar, inline-editor, session-tab-avatar, sidebar-items, sidebar-project, sidebar-shell, sidebar-workspace) — exceto dialog-workspace-actions.tsx, coberto na leva de modais

Passos:

  1. Revisar cada componente em light e dark mode usando os tokens --v2-* de packages/ui/src/v2/styles/theme.css (já corrigidos por [Design] Dark-mode token contrast pass — packages/ui/src/v2/styles/theme.css #164) — nenhum hex cru, apenas tokens semânticos.
  2. Aplicar refinamento estilo Apple HIG: hierarquia por peso/tamanho (não só cor), 1 CTA primário por tela, transições 150-300ms (ease-out ao entrar / ease-in ao sair), cantos e sombras usando a escala --v2-elevation-* existente (sem valores de shadow ad-hoc), focus ring visível em todo elemento interativo, scrim de modal 40-60% preto reservado para contexto de dismissal.
  3. Garantir que texto muted/faint, bordas e estados de hover/pressed permanecem legíveis nos dois temas (retestar após [Design] Dark-mode token contrast pass — packages/ui/src/v2/styles/theme.css #164).
  4. Verificar botões só-ícone têm aria-label, e que nenhuma informação é passada só por cor.

Nota: conforme CLAUDE.md, pages/layout.tsx não deve ser dividido em arquivos menores antes do épico #25 avançar — esta issue é só ajuste visual/tokens, não split de arquivo, então não conflita com essa regra.

Acceptance criteria

  • Nenhuma mudança de comportamento/UX — apenas visual (cor, espaçamento, tipografia, elevação, motion)
  • Sem hex cru — só tokens --v2-* semânticos
  • Contraste de texto ≥4.5:1 (corpo) / ≥3:1 (grande, ícones, bordas) confirmado em light e dark
  • Estados de foco visíveis via teclado em todos os elementos interativos da página
  • Botões ícone-apenas têm aria-label
  • Testado manualmente em light e dark antes de abrir o PR

Blocked by

Verification

Screenshots antes/depois em light e dark mode desta página/superfície, anexados ao PR.

Activity

  1. added
    ui-uxUI/UX polish and consistency work
    ready-for-agentScoped and ready for an agent to pick up
    on Sep 9, 2026
  2. alltomatos commented on Sep 9, 2026

    @alltomatos
    OwnerAuthor

    Audited `pages/layout.tsx`, `pages/layout-new.tsx`, and `pages/layout/*.tsx` (app-project-sidebar, inline-editor, session-tab-avatar, sidebar-items, sidebar-project, sidebar-shell, sidebar-workspace — excluding `dialog-workspace-actions.tsx`, covered in the shared-modals issue #178).

    Found one real gap during the earlier a11y sweep for #182: the tab close (×) button in `TabNavItem` (`components/titlebar-tab-nav.tsx`, used by the shell's tab bar) was missing `aria-label` — already fixed in #182. Everything else in this file set is clean: no raw hex, no ad-hoc box-shadow outside `--v2-elevation-*`, no non-token Tailwind color classes, no other missing aria-labels.

    Per CLAUDE.md, not touching `pages/layout.tsx`/`layout-new.tsx` beyond this kind of token/a11y check — no file-split work here, consistent with holding off until epic #25 progresses (this issue is visual-only anyway, doesn't conflict).

    Closing as verified (a11y gap fixed in #182).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    ready-for-agentScoped and ready for an agent to pick upui-uxUI/UX polish and consistency work

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions