Skip to content

epic(ui): migrate QueryaDropdown, QueryaModalDialog, and QueryaSearchField off shadcn_flutter to Flutter primitives #1365

Closed

Description

@ZhuchkaTriplesix

Goal

Eliminate remaining shadcn_flutter dependencies inside the Querya UI Kit (lib/shared/widgets/) by migrating QueryaDropdown, QueryaModalDialog, QueryaSearchField, QueryaTabStrip, and QueryaSpinner to native Flutter primitives.

Context

While Epic #1331 targets migrating all buttons to the Querya UI Kit, 65 files across the project still import package:shadcn_flutter. Most notably, core widgets inside lib/shared/widgets/ still depend directly on shadcn_flutter types:

  • querya_dropdown.dart: Uses shadcn.Popover and shadcn.OutlinedContainer.
  • querya_modal_dialog.dart: Uses shadcn.Dialog.
  • querya_search_field.dart: Uses shadcn.TextField.
  • querya_tab_strip.dart: Uses shadcn.Tab and shadcn container wrappers.
  • querya_spinner.dart: Uses shadcn.CircularProgressIndicator.

Moving these to own implementations built on Flutter primitives (OverlayPortal / RawKeyboardListener / CustomPainter) removes external library constraints, unifies control scale tokens, and eliminates frame hitches from complex shadcn widget trees.

Subtasks

  • Migrate QueryaDropdown from shadcn.Popover to an OverlayPortal-based native popup trigger.
  • Migrate QueryaModalDialog and showAppDialog to pure showGeneralDialog with Querya theme tokens.
  • Migrate QueryaSearchField to a pure material.TextField / EditableText wrapper with Querya search icons.
  • Migrate QueryaSpinner to a lightweight CustomPainter with theme accent.
  • Add guard test test/guards/shared_does_not_import_shadcn_test.dart to prevent regressions.

Acceptance Criteria

  • No file in lib/shared/widgets/ imports package:shadcn_flutter.
  • All existing dialog, dropdown, search, and navigation tests pass.
  • Visual regression tests in the UI kit gallery match current design tokens.

Activity

  1. added
    epicEpic / umbrella issue
    frontendTheme parser epic label: frontend
    uiUser interface components and widgets
    uxUser experience, keyboard shortcuts and interactions
    on Oct 10, 2026
  2. ZhuchkaTriplesix commented on Oct 10, 2026

    @ZhuchkaTriplesix
    MemberAuthor

    Related accessibility requirement: #1371 tracks adding accessible combobox semantics (button, expanded, value) and selected menu item announcements to QueryaDropdown during the migration off shadcn_flutter.

  3. ZhuchkaTriplesix commented on Oct 11, 2026

    @ZhuchkaTriplesix
    MemberAuthor

    The UI kit widgets listed here are off shadcn (earlier PRs and the toast in #1466); lib/shared imports it only through the widgets.dart barrel, guarded by shared_does_not_import_shadcn_test. The rest of leaving shadcn (text styles #1468, Gap, colour types, ShadcnApp, the barrel) continues in #1465.

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

    epicEpic / umbrella issuefrontendTheme parser epic label: frontenduiUser interface components and widgetsuxUser experience, keyboard shortcuts and interactions

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions