 David KayaandCopilot
|
fcfc5c9641
|
refactor: decompose large frontend components into focused modules
Split six monolithic component files into smaller, single-responsibility
modules organized by feature domain:
- ChatPane (1054→~250 lines): extract InlinePills, ApprovalBanner,
ThinkingDots into chat/ directory
- SettingsPanel (1027→~280 lines): extract McpServerEditor,
LspProfileEditor, ToolingEditorShell into settings/ directory;
mutation helpers into lib/settingsHelpers.ts
- PatternEditor: use shared ToggleSwitch from ui/
- App.tsx: extract useTheme and useSidecarCapabilities into hooks/
- Sidebar: extracted accessibility improvements inline
New shared primitives:
- hooks/useClickOutside: replaces 5 duplicated click-outside listeners
- components/ui/: ToggleSwitch, PopoverToggleRow, FormField, TextInput,
TextareaInput, SelectInput, InfoCallout
Accessibility improvements:
- NewSessionModal: role=dialog, aria-modal, Escape-to-close
- Pill dropdowns: aria-expanded, aria-haspopup, role=listbox/option
- Sidebar context menu: role=menu/menuitem, Escape-to-close
- SessionItem: Space key activation alongside Enter
- ToolbarButton: aria-pressed for toggle state
- ApprovalBanner: role=alert
- QueuedApprovalsList: aria-expanded on toggle
- ThinkingDots: aria-label
No behavioral changes. All 137 tests pass.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
2026-03-25 20:12:36 +01:00 |
|