Skip to content

epic(ui): remove shadcn_flutter from the app #1465

Open

Description

@ZhuchkaTriplesix

Goal

Remove shadcn_flutter from the app: no package:shadcn_flutter import in lib/, no re-export through lib/shared/widgets/widgets.dart, and the vendored third_party/shadcn_flutter dropped from pubspec.yaml.

Continues #1365 (the UI kit itself is off shadcn except the toast and the barrel) and sits next to #1331 (buttons, done).

State (dev, Oct 2026)

  • 59 files in lib/ import package:shadcn_flutter directly, about 120 more get it through the widgets.dart barrel.
  • Most used: the Text style extensions .small() / .muted() / .semiBold() / .large() (~1000 Text( calls), Gap (~740), Card (~130), TextField (~75), Switch / Checkbox (~20), Theme.of(context).colorScheme (~220).
  • QueryaTheme is built on shadcn's ColorScheme (QueryaThemeColorScheme), the shell is ShadcnApp.
  • Concentrated in: features/mongodb (9), features/redis (9), features/workspace (7), core/theme (7), features/erd/widgets (6).

Order

  1. Toast on our own overlay (app_toast.dart off shadcn): refactor(ui): app toast on our own overlay, off shadcn #1466.
  2. Text styles and spacing:
  3. Colour and theme types:
  4. Inputs, menus and surfaces in the kit:
  5. The shell: ShadcnApp → MaterialApp + our theme scope: refactor(app): replace ShadcnApp with MaterialApp and our theme scope (#1465) #1735.
  6. Remove the barrel re-export, the imports and third_party/shadcn_flutter; guard over all of lib/: chore(deps): drop shadcn_flutter: barrel re-export, imports, third_party, guard (#1465) #1736.

Measured tail (2026-10-18). A probe on dev that removed every package:shadcn_flutter import and the barrel's re-export, then added a Flutter import where needed, left only these names undefined: Gap 742, Theme 164 + shadcn.Theme 42, ColorScheme 116 + shadcn.ColorScheme 24, MenuButton 114, TextField 56, ContextMenu 15, MenuDivider 15, ThemeData 14, MenuItem 13, Card 5, InputFeature 3, Typography 2, ShadcnApp 2, SliderValue 2, and one each of PopoverOverlayHandler, Menubar, Switch, Slider, ColorPicker, ColorDerivative, showContextMenuBuilder. Everything else the 59 + ~500 files take from the barrel is Flutter itself.

Acceptance

  • grep -r "package:shadcn_flutter" lib is empty.
  • third_party/shadcn_flutter and its pubspec.yaml entry are gone.
  • A guard test rejects the import anywhere in lib/.
  • Goldens and widget tests pass without visual changes beyond the agreed ones.

Each step is its own issue and PR into dev (no stacked PRs); the order above keeps every step shippable.

Metadata

Metadata

Assignees

No one assigned

    Labels

    epicEpic / umbrella issuefrontendTheme parser epic label: frontenduiUser interface components and widgets

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions