Repository navigation
Description
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/importpackage:shadcn_flutterdirectly, about 120 more get it through thewidgets.dartbarrel. - Most used: the
Textstyle extensions.small()/.muted()/.semiBold()/.large()(~1000Text(calls),Gap(~740),Card(~130),TextField(~75),Switch/Checkbox(~20),Theme.of(context).colorScheme(~220). QueryaThemeis built on shadcn'sColorScheme(QueryaThemeColorScheme), the shell isShadcnApp.- Concentrated in:
features/mongodb(9),features/redis(9),features/workspace(7),core/theme(7),features/erd/widgets(6).
Order
- Toast on our own overlay (
app_toast.dartoff shadcn): refactor(ui): app toast on our own overlay, off shadcn #1466. - Text styles and spacing:
-
QueryaTextStylesreplaces shadcn'sTextExtension: refactor(ui): text styles from QueryaTextStyles, shadcn TextExtension hidden #1468. -
Gapfrom thegappackage directly: chore(ui): take Gap from the gap package, not through shadcn (#1465) #1729.
-
- Colour and theme types:
-
QueryaColorsandcontext.colors: refactor(theme): QueryaColors and context.colors instead of shadcn's ColorScheme (#1465) #1730. - Callers move to
context.colors, folder by folder: refactor(ui): read colours through context.colors, folder by folder (#1465) #1731.
-
- Inputs, menus and surfaces in the kit:
- Context menus and the title-bar menu bar: ui: context menus and the title-bar menus on the kit's menu surface (#1465) #1732.
-
QueryaTextField: ui: QueryaTextField, one text input for every form (#1465) #1733. - Colour picker, slider,
Card/Switchleftovers: ui(settings): own colour picker and slider for the theme editor and Preferences; Card/Switch leftovers (#1465) #1734 (switch: ui(settings): QueryaSwitch, a nicer toggle for Preferences in the kit's style #1488).
- The shell:
ShadcnApp→MaterialApp+ our theme scope: refactor(app): replace ShadcnApp with MaterialApp and our theme scope (#1465) #1735. - Remove the barrel re-export, the imports and
third_party/shadcn_flutter; guard over all oflib/: 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" libis empty. -
third_party/shadcn_flutterand itspubspec.yamlentry 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.
Activity
refactor(ui): app toast on our own overlay, off shadcn (#1466)
refactor(ui): text styles from QueryaTextStyles, shadcn TextExtension…
refactor(core): read colours through context.colors across core (#1731)…