Files
fluffytrix/.claude/agent-memory/ui-ux-reviewer/MEMORY.md
2026-03-03 21:56:13 +00:00

1.8 KiB

UI/UX Reviewer Memory — Fluffytrix

See patterns.md for detailed design conventions.

Key Conventions (short form)

  • Spacing rhythm: 4/6/8/10/12/16/24/32dp — no odd values
  • Channel list item padding: horizontal 12dp, vertical 10dp
  • Settings screen row padding: vertical 6dp (info rows), vertical 12dp (nav rows)
  • Icon size in lists: 20dp (channel icons, drag handles); 32dp (member avatars)
  • Space sidebar icons: 48dp touch target, 64dp column width
  • Color tokens: always MaterialTheme.colorScheme — EXCEPT senderColors array (Discord palette, intentional)
  • Two hardcoded colors in SpaceList unread dots: Color.Red and Color.Gray — inconsistent with ChannelList which uses colorScheme.error and colorScheme.primary
  • Typography: titleMedium for section headers in panels; labelMedium uppercase for channel sections; bodyLarge for channel names; bodyMedium for settings labels; bodySmall for subtitles
  • Icon style: filled (Icons.Default.*) throughout — AutoMirrored used for directional icons
  • Scaffold used in SettingsScreen with TopAppBar; MainScreen Scaffold has no topBar (custom layout)
  • collectAsStateWithLifecycle used in MainScreen; collectAsState used in SettingsScreen — inconsistent
  • MainScreen uses @Immutable data class for ProfileSheetState (good practice)
  • Drag gesture threshold: 60f px for swipe-open/close channel list
  • LazyListState for channel list is owned by ViewModel (correct — survives recomposition)
  • IME insets: enableEdgeToEdge() is active; Scaffold default contentWindowInsets excludes IME; MessageTimeline Column must carry .imePadding() before static padding — without it the keyboard overlays the input bar. AndroidView EditText does not auto-participate in Compose IME avoidance. Never use windowSoftInputMode=adjustResize with edge-to-edge.