Skip to content

TP-18 — Add ThemePickerButton widget shell #113

Description

@ZhuchkaTriplesix

Epic: C
Depends on: TP-10

Source: docs/theme-parser-github-issues.md

Goal

Introduce a dedicated picker UI for many themes instead of overloading a small dropdown.

Files

  • lib/features/settings/theme_picker_button.dart
  • test/features/settings/theme_picker_button_test.dart

Implementation

Create widget:

class ThemePickerButton extends StatelessWidget {
  const ThemePickerButton({
    required this.themes,
    required this.selectedThemeId,
    required this.onSelected,
    this.isLoading = false,
  });
}

Use:

  • MenuAnchor;
  • fixed/max popup height 300-360px;
  • Scrollbar;
  • ListView.builder;
  • row shows:
    • name;
    • source badge;
    • dark/light icon or label.

Acceptance Criteria

  • Opens menu with 50+ fake themes without overflow.
  • Uses builder list, not Column(children: themes.map(...)).
  • Does not parse or apply theme during build.

Tests

  • pump with 60 definitions;
  • open menu;
  • visible rows render;
  • no exception/overflow in test logs if test harness supports it;
  • tap row triggers onSelected(id).

Metadata

Metadata

Assignees

No one assigned

    Labels

    frontendTheme parser epic label: frontendsettingsTheme parser epic label: settingsthemeTheming, colors, VS Code themes

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions